Skip to content

Commit 04abd2b

Browse files
committed
fix: open browser sync for ios
1 parent b223732 commit 04abd2b

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

ios/WebBrowser.m

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
#import <React/RCTBridgeModule.h>
22

3+
34
@interface RCT_EXTERN_MODULE(NativeWebBrowser, NSObject)
45

6+
57
RCT_EXTERN_METHOD(openBrowserAsync:(NSString*)urlStr
6-
withOptionsDict:(NSDictionary*)optionsDict
7-
withResolver:(RCTPromiseResolveBlock)resolve
8-
withRejecter:(RCTPromiseRejectBlock)reject)
8+
withOptionsDict:(NSDictionary*)optionsDict
9+
withResolver:(RCTPromiseResolveBlock)resolve
10+
withRejector:(RCTPromiseRejectBlock)reject)
911

1012
RCT_EXTERN_METHOD(dismissBrowser:(RCTPromiseResolveBlock)resolve
1113
withRejecter:(RCTPromiseRejectBlock)reject)
1214

13-
//RCT_EXTERN_METHOD(openAuthSessionAsync:(NSString*)authUrlStr
14-
// withRedirectUrl:(NSString*)redirectUrlStr
15-
// withResolver:(RCTPromiseResolveBlock)resolve
16-
// withRejecter:(RCTPromiseRejectBlock)reject)
1715

1816
RCT_EXTERN_METHOD(openAuthSessionAsync:(NSString*)authUrlStr
1917
withRedirectUrl:(NSString*)redirectUrlStr
@@ -25,16 +23,21 @@ @interface RCT_EXTERN_MODULE(NativeWebBrowser, NSObject)
2523
RCT_EXTERN_METHOD(dismissAuthSession:(RCTPromiseResolveBlock)resolve
2624
withRejecter:(RCTPromiseRejectBlock)reject)
2725

26+
2827
RCT_EXTERN_METHOD(warmUpAsync:(RCTPromiseResolveBlock)resolve
2928
withRejecter:(RCTPromiseRejectBlock)reject)
3029

30+
3131
RCT_EXTERN_METHOD(coolDownAsync:(RCTPromiseResolveBlock)resolve
3232
withRejecter:(RCTPromiseRejectBlock)reject)
3333

34+
3435
RCT_EXTERN_METHOD(mayInitWithUrlAsync:(RCTPromiseResolveBlock)resolve
3536
withRejecter:(RCTPromiseRejectBlock)reject)
3637

38+
3739
RCT_EXTERN_METHOD(getCustomTabsSupportingBrowsers:(RCTPromiseResolveBlock)resolve
3840
withRejecter:(RCTPromiseRejectBlock)reject)
3941

42+
4043
@end

ios/WebBrowser.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ class NativeWebBrowser: NSObject {
88
private var currentAuthSession: WebAuthSession?
99

1010
@objc(openBrowserAsync:withOptionsDict:withResolver:withRejector:)
11-
func openBrowserAsync(urlStr: String, optionsDict: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
11+
func openBrowserAsync(_ urlStr: NSString, optionsDict: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
1212
guard
13-
let url = URL(string: urlStr),
13+
let url = URL(string: urlStr as String),
1414
let options = try? JSONDecoder().decode(WebBrowserOptions.self, from: JSONSerialization.data(withJSONObject: optionsDict))
1515
else {
1616
reject(ReactNativeWebBrowserErrorCode, "Invalid Argument: url or options is invalid.", ReactNativeWebBrowserError.invalidArgument("url or options"))
@@ -38,7 +38,7 @@ class NativeWebBrowser: NSObject {
3838
guard
3939
let authUrl = URL(string: authUrlStr as String),
4040
let redirectUrl = URL(string: redirectUrlStr as String),
41-
var options = try? JSONDecoder().decode(AuthSessionOptions.self, from: JSONSerialization.data(withJSONObject: optionsDict))
41+
let options = try? JSONDecoder().decode(AuthSessionOptions.self, from: JSONSerialization.data(withJSONObject: optionsDict))
4242
else {
4343
reject(ReactNativeWebBrowserErrorCode, "Invalid Argument: authUrl or redirectUrl or options is invalid.", ReactNativeWebBrowserError.invalidArgument("authUrl or redirectUrl or options"))
4444
return

ios/WebBrowserOptions.swift

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import Foundation
99
import SafariServices
1010

11-
struct WebBrowserOptions: Codable {
11+
class WebBrowserOptions: Codable {
1212
var readerMode: Bool = false
1313

1414
var enableBarCollapsing: Bool = false
@@ -18,6 +18,39 @@ struct WebBrowserOptions: Codable {
1818
var toolbarColor: CodableColor?
1919

2020
var controlsColor: CodableColor?
21+
22+
required init(from decoder: Decoder) throws {
23+
let container = try decoder.container(keyedBy: CodingKeys.self)
24+
if let readerMode = try container.decodeIfPresent(Bool.self, forKey: .readerMode) {
25+
self.readerMode = readerMode
26+
} else {
27+
self.readerMode = false
28+
}
29+
30+
if let enableBarCollapsing = try container.decodeIfPresent(Bool.self, forKey: .enableBarCollapsing) {
31+
self.enableBarCollapsing = enableBarCollapsing
32+
} else {
33+
self.enableBarCollapsing = false
34+
}
35+
36+
if let dismissButtonStyle = try container.decodeIfPresent(DismissButtonStyle.self, forKey: .dismissButtonStyle) {
37+
self.dismissButtonStyle = dismissButtonStyle
38+
} else {
39+
self.dismissButtonStyle = .done
40+
}
41+
42+
if let toolbarColor = try container.decodeIfPresent(CodableColor.self, forKey: .toolbarColor) {
43+
self.toolbarColor = toolbarColor
44+
} else {
45+
self.toolbarColor = nil
46+
}
47+
48+
if let controlsColor = try container.decodeIfPresent(CodableColor.self, forKey: .controlsColor) {
49+
self.controlsColor = controlsColor
50+
} else {
51+
self.controlsColor = nil
52+
}
53+
}
2154
}
2255

2356
class AuthSessionOptions: Codable {

0 commit comments

Comments
 (0)