Skip to content

Commit a786eb9

Browse files
committed
Added method to get current navigation state
1 parent dc442c9 commit a786eb9

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

AQWebView.ios.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@ class WKWebView extends React.Component {
1717
NativeModules.AQWebViewManager.goForward(React.findNodeHandle(this.refs.AQWebView));
1818
}
1919

20+
getNavigationState(callback) {
21+
NativeModules.AQWebViewManager.baseEvent(React.findNodeHandle(this.refs.AQWebView), (err, res) => {
22+
if (err) {
23+
callback('Getting navigation state from webview error: ' + err)
24+
}
25+
else {
26+
callback(null, res)
27+
}
28+
})
29+
}
30+
2031
_onLoadingStart(navState) {
2132
if (this.props.onNavigationStateChange) {
2233
this.props.onNavigationStateChange({type: 'start', ...navState.nativeEvent});

AQWebView/AQWebView.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
- (void)reload;
1111
- (void)goBack;
1212
- (void)goForward;
13+
- (NSMutableDictionary<NSString *, id> *)baseEvent;
1314

1415
@end

AQWebView/AQWebViewManager.m

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ - (UIView *) view
5050
}
5151
}];
5252
}
53+
5354
RCT_EXPORT_METHOD(goForward:(nonnull NSNumber *)reactTag)
5455
{
5556
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, AQWebView *> *viewRegistry) {
@@ -63,4 +64,19 @@ - (UIView *) view
6364
}];
6465
}
6566

66-
@end
67+
RCT_EXPORT_METHOD(baseEvent:(nonnull NSNumber *)reactTag callback:(RCTResponseSenderBlock)callback)
68+
{
69+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, AQWebView *> *viewRegistry) {
70+
AQWebView *view = viewRegistry[reactTag];
71+
if (![view isKindOfClass:[AQWebView class]]) {
72+
RCTLogError(@"Invalid view returned from registry, expecting RCTWebView, got: %@", view);
73+
_callback(@[@"Invalid view returned from registry, expecting RCTWebView", [NSNull null]]);
74+
}
75+
else {
76+
NSMutableDictionary<NSString *, id> *event = [view baseEvent];
77+
callback(@[[NSNull null], event]);
78+
}
79+
}];
80+
}
81+
82+
@end

0 commit comments

Comments
 (0)