Skip to content

Commit 424bfd0

Browse files
monibu1548freak4pc
authored andcommitted
Updated WKNavigation delegate method reactive wrapper
1 parent 15693dd commit 424bfd0

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

RxWebKit/Sources/WKNavigationDelegateEvents+Rx.swift

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,6 @@ extension Reactive where Base: WKWebView {
4242
public typealias ActionHandler = (WKNavigationActionPolicy) -> Void
4343
/// WKNavigationActionPolicyEvent emits a tuple event of WKWebView + WKNavigationAction + ActionHandler
4444
public typealias WKNavigationActionPolicyEvent = ( webView: WKWebView, action: WKNavigationAction, handler: ActionHandler)
45-
46-
private func navigationEventWith(_ arg: [Any]) throws -> WKNavigationEvent {
47-
let view = try castOrThrow(WKWebView.self, arg[0])
48-
let nav = try castOrThrow(WKNavigation.self, arg[1])
49-
return (view, nav)
50-
}
51-
52-
private func navigationFailEventWith(_ arg: [Any]) throws -> WKNavigationFailEvent {
53-
let view = try castOrThrow(WKWebView.self, arg[0])
54-
let nav = try castOrThrow(WKNavigation.self, arg[1])
55-
let error = try castOrThrow(Swift.Error.self, arg[2])
56-
return (view, nav, error)
57-
}
5845

5946
/// Reactive wrapper for `navigationDelegate`.
6047
public var delegate: DelegateProxy<WKWebView, WKNavigationDelegate> {
@@ -65,23 +52,35 @@ extension Reactive where Base: WKWebView {
6552
public var didCommitNavigation: ControlEvent<WKNavigationEvent> {
6653
let source: Observable<WKNavigationEvent> = delegate
6754
.methodInvoked(.didCommitNavigation)
68-
.map(navigationEventWith)
55+
.map { arg in
56+
let view = try castOrThrow(WKWebView.self, arg[0])
57+
let nav = try castOrThrow(WKNavigation.self, arg[1])
58+
return (view, nav)
59+
}
6960
return ControlEvent(events: source)
7061
}
7162

7263
/// Reactive wrapper for delegate method `webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)`.
7364
public var didStartProvisionalNavigation: ControlEvent<WKNavigationEvent> {
7465
let source: Observable<WKNavigationEvent> = delegate
7566
.methodInvoked(.didStartProvisionalNavigation)
76-
.map(navigationEventWith)
67+
.map { arg in
68+
let view = try castOrThrow(WKWebView.self, arg[0])
69+
let nav = try castOrThrow(WKNavigation.self, arg[1])
70+
return (view, nav)
71+
}
7772
return ControlEvent(events: source)
7873
}
7974

8075
/// Reactive wrapper for delegate method `webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)`
8176
public var didFinishNavigation: ControlEvent<WKNavigationEvent> {
8277
let source: Observable<WKNavigationEvent> = delegate
8378
.methodInvoked(.didFinishNavigation)
84-
.map(navigationEventWith)
79+
.map { arg in
80+
let view = try castOrThrow(WKWebView.self, arg[0])
81+
let nav = try castOrThrow(WKNavigation.self, arg[1])
82+
return (view, nav)
83+
}
8584
return ControlEvent(events: source)
8685
}
8786

@@ -98,23 +97,37 @@ extension Reactive where Base: WKWebView {
9897
public var didReceiveServerRedirectForProvisionalNavigation: ControlEvent<WKNavigationEvent> {
9998
let source: Observable<WKNavigationEvent> = delegate
10099
.methodInvoked(.didReceiveServerRedirectForProvisionalNavigation)
101-
.map(navigationEventWith)
100+
.map { arg in
101+
let view = try castOrThrow(WKWebView.self, arg[0])
102+
let nav = try castOrThrow(WKNavigation.self, arg[1])
103+
return (view, nav)
104+
}
102105
return ControlEvent(events: source)
103106
}
104107

105108
/// Reactive wrapper for delegate method `webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error)`.
106109
public var didFailNavigation: ControlEvent<WKNavigationFailEvent> {
107110
let source: Observable<WKNavigationFailEvent> = delegate
108111
.methodInvoked(.didFailNavigation)
109-
.map(navigationFailEventWith)
112+
.map { arg in
113+
let view = try castOrThrow(WKWebView.self, arg[0])
114+
let nav = try castOrThrow(WKNavigation.self, arg[1])
115+
let error = try castOrThrow(Swift.Error.self, arg[2])
116+
return (view, nav, error)
117+
}
110118
return ControlEvent(events: source)
111119
}
112120

113121
/// Reactive wrapper for delegate method `webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error)`.
114122
public var didFailProvisionalNavigation: ControlEvent<WKNavigationFailEvent> {
115123
let source: Observable<WKNavigationFailEvent> = delegate
116124
.methodInvoked(.didFailProvisionalNavigation)
117-
.map(navigationFailEventWith)
125+
.map { arg in
126+
let view = try castOrThrow(WKWebView.self, arg[0])
127+
let nav = try castOrThrow(WKNavigation.self, arg[1])
128+
let error = try castOrThrow(Swift.Error.self, arg[2])
129+
return (view, nav, error)
130+
}
118131
return ControlEvent(events: source)
119132
}
120133

0 commit comments

Comments
 (0)