@aws-amplify/rtn-web-browser 1.0.1-console-preview.deaebd5.0 → 1.0.1-console-preview.b5a42af.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@
6
6
  @interface RCT_EXTERN_MODULE(AmplifyRTNWebBrowser, NSObject)
7
7
 
8
8
  RCT_EXTERN_METHOD(openAuthSessionAsync:(NSString*)url
9
+ redirectUrlStr:(NSString*)redirectUrlStr
9
10
  resolve:(RCTPromiseResolveBlock)resolve
10
11
  reject:(RCTPromiseRejectBlock)reject)
11
12
 
@@ -22,6 +22,7 @@ class AmplifyRTNWebBrowser: NSObject {
22
22
 
23
23
  @objc
24
24
  func openAuthSessionAsync(_ urlStr: String,
25
+ redirectUrlStr: String,
25
26
  resolve: @escaping RCTPromiseResolveBlock,
26
27
  reject: @escaping RCTPromiseRejectBlock) {
27
28
  guard let url = URL(string: urlStr) else {
@@ -29,6 +30,11 @@ class AmplifyRTNWebBrowser: NSObject {
29
30
  return
30
31
  }
31
32
 
33
+ guard let redirectUrl = URL(string: redirectUrlStr) else {
34
+ reject("ERROR", "provided redirectUrl is invalid", nil)
35
+ return
36
+ }
37
+
32
38
  guard isUrlValid(url: url) else {
33
39
  reject("ERROR", "provided url is invalid", nil)
34
40
  return
@@ -36,10 +42,10 @@ class AmplifyRTNWebBrowser: NSObject {
36
42
 
37
43
  let authSession = ASWebAuthenticationSession(
38
44
  url: url,
39
- callbackURLScheme: nil,
45
+ callbackURLScheme: redirectUrl.scheme,
40
46
  completionHandler: { url, error in
41
47
  if (error as? ASWebAuthenticationSessionError)?.code == .canceledLogin {
42
- reject("ERROR", "user canceled auth session", error)
48
+ resolve(nil)
43
49
  return
44
50
  }
45
51
  if error != nil {
@@ -1 +1 @@
1
- export declare const openAuthSessionAsync: (url: string, redirectSchemes: string[]) => Promise<string | null | undefined>;
1
+ export declare const openAuthSessionAsync: (url: string, redirectUrls: string[]) => Promise<string | null | undefined>;
@@ -7,23 +7,29 @@ const react_native_1 = require("react-native");
7
7
  const nativeModule_1 = require("../nativeModule");
8
8
  let appStateListener;
9
9
  let redirectListener;
10
- const openAuthSessionAsync = async (url, redirectSchemes) => {
10
+ const openAuthSessionAsync = async (url, redirectUrls) => {
11
11
  // enforce HTTPS
12
12
  const httpsUrl = url.replace('http://', 'https://');
13
13
  if (react_native_1.Platform.OS === 'ios') {
14
- return nativeModule_1.nativeModule.openAuthSessionAsync(httpsUrl);
14
+ return openAuthSessionIOS(httpsUrl, redirectUrls);
15
15
  }
16
16
  if (react_native_1.Platform.OS === 'android') {
17
- return openAuthSessionAndroid(httpsUrl, redirectSchemes);
17
+ return openAuthSessionAndroid(httpsUrl, redirectUrls);
18
18
  }
19
19
  };
20
20
  exports.openAuthSessionAsync = openAuthSessionAsync;
21
- const openAuthSessionAndroid = async (url, redirectSchemes) => {
21
+ const openAuthSessionIOS = async (url, redirectUrls) => {
22
+ const redirectUrl = redirectUrls.find(
23
+ // take the first non-web url as the deeplink
24
+ item => !item.startsWith('https://') && !item.startsWith('http://'));
25
+ return nativeModule_1.nativeModule.openAuthSessionAsync(url, redirectUrl);
26
+ };
27
+ const openAuthSessionAndroid = async (url, redirectUrls) => {
22
28
  try {
23
29
  const [redirectUrl] = await Promise.all([
24
30
  Promise.race([
25
31
  // wait for app to redirect, resulting in a redirectUrl
26
- getRedirectPromise(redirectSchemes),
32
+ getRedirectPromise(redirectUrls),
27
33
  // wait for app to return some other way, resulting in null
28
34
  getAppStatePromise(),
29
35
  ]),
@@ -52,9 +58,9 @@ const getAppStatePromise = () => new Promise(resolve => {
52
58
  }
53
59
  });
54
60
  });
55
- const getRedirectPromise = (redirectSchemes) => new Promise(resolve => {
61
+ const getRedirectPromise = (redirectUrls) => new Promise(resolve => {
56
62
  redirectListener = react_native_1.Linking.addEventListener('url', event => {
57
- if (redirectSchemes.some(scheme => event.url.startsWith(scheme))) {
63
+ if (redirectUrls.some(url => event.url.startsWith(url))) {
58
64
  resolve(event.url);
59
65
  }
60
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"openAuthSessionAsync.js","sourceRoot":"","sources":["../../src/apis/openAuthSessionAsync.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAEtC,+CAKsB;AACtB,kDAA+C;AAE/C,IAAI,gBAAqD,CAAC;AAC1D,IAAI,gBAAqD,CAAC;AAEnD,MAAM,oBAAoB,GAAG,KAAK,EACxC,GAAW,EACX,eAAyB,EACxB,EAAE;IACH,gBAAgB;IAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;QAC1B,OAAO,2BAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KACnD;IAED,IAAI,uBAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;QAC9B,OAAO,sBAAsB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;KACzD;AACF,CAAC,CAAC;AAbW,QAAA,oBAAoB,wBAa/B;AAEF,MAAM,sBAAsB,GAAG,KAAK,EACnC,GAAW,EACX,eAAyB,EACxB,EAAE;IACH,IAAI;QACH,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC;gBACZ,uDAAuD;gBACvD,kBAAkB,CAAC,eAAe,CAAC;gBACnC,2DAA2D;gBAC3D,kBAAkB,EAAE;aACpB,CAAC;YACF,kBAAkB;YAClB,2BAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;KACnB;YAAS;QACT,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,gBAAgB,GAAG,SAAS,CAAC;KAC7B;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,uBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACrE,8DAA8D;QAC9D,IAAI,uBAAQ,CAAC,YAAY,KAAK,IAAI,EAAE;YACnC,OAAO;SACP;QAED,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3B,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;SACd;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,eAAyB,EAAmB,EAAE,CACzE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,sBAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;QAC1D,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;YACjE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnB;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"openAuthSessionAsync.js","sourceRoot":"","sources":["../../src/apis/openAuthSessionAsync.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAEtC,+CAKsB;AACtB,kDAA+C;AAE/C,IAAI,gBAAqD,CAAC;AAC1D,IAAI,gBAAqD,CAAC;AAEnD,MAAM,oBAAoB,GAAG,KAAK,EACxC,GAAW,EACX,YAAsB,EACrB,EAAE;IACH,gBAAgB;IAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;QAC1B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KAClD;IAED,IAAI,uBAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;QAC9B,OAAO,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KACtD;AACF,CAAC,CAAC;AAbW,QAAA,oBAAoB,wBAa/B;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAE,YAAsB,EAAE,EAAE;IACxE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI;IACpC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CACnE,CAAC;IACF,OAAO,2BAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,GAAW,EAAE,YAAsB,EAAE,EAAE;IAC5E,IAAI;QACH,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC;gBACZ,uDAAuD;gBACvD,kBAAkB,CAAC,YAAY,CAAC;gBAChC,2DAA2D;gBAC3D,kBAAkB,EAAE;aACpB,CAAC;YACF,kBAAkB;YAClB,2BAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;KACnB;YAAS;QACT,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,gBAAgB,GAAG,SAAS,CAAC;KAC7B;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,uBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACrE,8DAA8D;QAC9D,IAAI,uBAAQ,CAAC,YAAY,KAAK,IAAI,EAAE;YACnC,OAAO;SACP;QAED,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3B,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;SACd;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,YAAsB,EAAmB,EAAE,CACtE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,sBAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;QAC1D,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;YACxD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnB;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  declare const mergedModule: {
2
- openAuthSessionAsync: (url: string, redirectSchemes: string[]) => Promise<string | null | undefined>;
2
+ openAuthSessionAsync: (url: string, redirectUrls: string[]) => Promise<string | null | undefined>;
3
3
  };
4
4
  export { mergedModule as AmplifyRTNWebBrowser };
package/lib/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export type WebBrowserNativeModule = {
2
- openAuthSessionAsync: (url: string) => Promise<string | null>;
2
+ openAuthSessionAsync: (url: string, redirectUrl?: string) => Promise<string | null>;
3
3
  };
@@ -1 +1 @@
1
- export declare const openAuthSessionAsync: (url: string, redirectSchemes: string[]) => Promise<string | null | undefined>;
1
+ export declare const openAuthSessionAsync: (url: string, redirectUrls: string[]) => Promise<string | null | undefined>;
@@ -4,22 +4,28 @@ import { AppState, Linking, Platform, } from 'react-native';
4
4
  import { nativeModule } from '../nativeModule';
5
5
  let appStateListener;
6
6
  let redirectListener;
7
- export const openAuthSessionAsync = async (url, redirectSchemes) => {
7
+ export const openAuthSessionAsync = async (url, redirectUrls) => {
8
8
  // enforce HTTPS
9
9
  const httpsUrl = url.replace('http://', 'https://');
10
10
  if (Platform.OS === 'ios') {
11
- return nativeModule.openAuthSessionAsync(httpsUrl);
11
+ return openAuthSessionIOS(httpsUrl, redirectUrls);
12
12
  }
13
13
  if (Platform.OS === 'android') {
14
- return openAuthSessionAndroid(httpsUrl, redirectSchemes);
14
+ return openAuthSessionAndroid(httpsUrl, redirectUrls);
15
15
  }
16
16
  };
17
- const openAuthSessionAndroid = async (url, redirectSchemes) => {
17
+ const openAuthSessionIOS = async (url, redirectUrls) => {
18
+ const redirectUrl = redirectUrls.find(
19
+ // take the first non-web url as the deeplink
20
+ item => !item.startsWith('https://') && !item.startsWith('http://'));
21
+ return nativeModule.openAuthSessionAsync(url, redirectUrl);
22
+ };
23
+ const openAuthSessionAndroid = async (url, redirectUrls) => {
18
24
  try {
19
25
  const [redirectUrl] = await Promise.all([
20
26
  Promise.race([
21
27
  // wait for app to redirect, resulting in a redirectUrl
22
- getRedirectPromise(redirectSchemes),
28
+ getRedirectPromise(redirectUrls),
23
29
  // wait for app to return some other way, resulting in null
24
30
  getAppStatePromise(),
25
31
  ]),
@@ -48,9 +54,9 @@ const getAppStatePromise = () => new Promise(resolve => {
48
54
  }
49
55
  });
50
56
  });
51
- const getRedirectPromise = (redirectSchemes) => new Promise(resolve => {
57
+ const getRedirectPromise = (redirectUrls) => new Promise(resolve => {
52
58
  redirectListener = Linking.addEventListener('url', event => {
53
- if (redirectSchemes.some(scheme => event.url.startsWith(scheme))) {
59
+ if (redirectUrls.some(url => event.url.startsWith(url))) {
54
60
  resolve(event.url);
55
61
  }
56
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"openAuthSessionAsync.js","sourceRoot":"","sources":["../../src/apis/openAuthSessionAsync.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EACN,QAAQ,EACR,OAAO,EAEP,QAAQ,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,IAAI,gBAAqD,CAAC;AAC1D,IAAI,gBAAqD,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACxC,GAAW,EACX,eAAyB,EACxB,EAAE;IACH,gBAAgB;IAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;QAC1B,OAAO,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KACnD;IAED,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;QAC9B,OAAO,sBAAsB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;KACzD;AACF,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,KAAK,EACnC,GAAW,EACX,eAAyB,EACxB,EAAE;IACH,IAAI;QACH,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC;gBACZ,uDAAuD;gBACvD,kBAAkB,CAAC,eAAe,CAAC;gBACnC,2DAA2D;gBAC3D,kBAAkB,EAAE;aACpB,CAAC;YACF,kBAAkB;YAClB,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;KACnB;YAAS;QACT,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,gBAAgB,GAAG,SAAS,CAAC;KAC7B;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACrE,8DAA8D;QAC9D,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,EAAE;YACnC,OAAO;SACP;QAED,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3B,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;SACd;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,eAAyB,EAAmB,EAAE,CACzE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;QAC1D,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;YACjE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnB;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"openAuthSessionAsync.js","sourceRoot":"","sources":["../../src/apis/openAuthSessionAsync.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EACN,QAAQ,EACR,OAAO,EAEP,QAAQ,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,IAAI,gBAAqD,CAAC;AAC1D,IAAI,gBAAqD,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACxC,GAAW,EACX,YAAsB,EACrB,EAAE;IACH,gBAAgB;IAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;QAC1B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KAClD;IAED,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;QAC9B,OAAO,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KACtD;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAE,YAAsB,EAAE,EAAE;IACxE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI;IACpC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CACnE,CAAC;IACF,OAAO,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,GAAW,EAAE,YAAsB,EAAE,EAAE;IAC5E,IAAI;QACH,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC;gBACZ,uDAAuD;gBACvD,kBAAkB,CAAC,YAAY,CAAC;gBAChC,2DAA2D;gBAC3D,kBAAkB,EAAE;aACpB,CAAC;YACF,kBAAkB;YAClB,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;KACnB;YAAS;QACT,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,GAAG,SAAS,CAAC;QAC7B,gBAAgB,GAAG,SAAS,CAAC;KAC7B;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACrE,8DAA8D;QAC9D,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,EAAE;YACnC,OAAO;SACP;QAED,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3B,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;SACd;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,YAAsB,EAAmB,EAAE,CACtE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;QAC1D,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;YACxD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnB;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  declare const mergedModule: {
2
- openAuthSessionAsync: (url: string, redirectSchemes: string[]) => Promise<string | null | undefined>;
2
+ openAuthSessionAsync: (url: string, redirectUrls: string[]) => Promise<string | null | undefined>;
3
3
  };
4
4
  export { mergedModule as AmplifyRTNWebBrowser };
@@ -1,3 +1,3 @@
1
1
  export type WebBrowserNativeModule = {
2
- openAuthSessionAsync: (url: string) => Promise<string | null>;
2
+ openAuthSessionAsync: (url: string, redirectUrl?: string) => Promise<string | null>;
3
3
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/rtn-web-browser",
3
- "version": "1.0.1-console-preview.deaebd5.0+deaebd5",
3
+ "version": "1.0.1-console-preview.b5a42af.0+b5a42af",
4
4
  "description": "React Native module for aws-amplify web browser",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib-esm/index.js",
@@ -49,5 +49,5 @@
49
49
  "lib-esm",
50
50
  "src"
51
51
  ],
52
- "gitHead": "deaebd5a938733ff2b25aaec39c042843ef2289c"
52
+ "gitHead": "b5a42af519fb741bb8056a814addd8804c8f60ec"
53
53
  }
@@ -14,28 +14,33 @@ let redirectListener: NativeEventSubscription | undefined;
14
14
 
15
15
  export const openAuthSessionAsync = async (
16
16
  url: string,
17
- redirectSchemes: string[]
17
+ redirectUrls: string[]
18
18
  ) => {
19
19
  // enforce HTTPS
20
20
  const httpsUrl = url.replace('http://', 'https://');
21
21
  if (Platform.OS === 'ios') {
22
- return nativeModule.openAuthSessionAsync(httpsUrl);
22
+ return openAuthSessionIOS(httpsUrl, redirectUrls);
23
23
  }
24
24
 
25
25
  if (Platform.OS === 'android') {
26
- return openAuthSessionAndroid(httpsUrl, redirectSchemes);
26
+ return openAuthSessionAndroid(httpsUrl, redirectUrls);
27
27
  }
28
28
  };
29
29
 
30
- const openAuthSessionAndroid = async (
31
- url: string,
32
- redirectSchemes: string[]
33
- ) => {
30
+ const openAuthSessionIOS = async (url: string, redirectUrls: string[]) => {
31
+ const redirectUrl = redirectUrls.find(
32
+ // take the first non-web url as the deeplink
33
+ item => !item.startsWith('https://') && !item.startsWith('http://')
34
+ );
35
+ return nativeModule.openAuthSessionAsync(url, redirectUrl);
36
+ };
37
+
38
+ const openAuthSessionAndroid = async (url: string, redirectUrls: string[]) => {
34
39
  try {
35
40
  const [redirectUrl] = await Promise.all([
36
41
  Promise.race([
37
42
  // wait for app to redirect, resulting in a redirectUrl
38
- getRedirectPromise(redirectSchemes),
43
+ getRedirectPromise(redirectUrls),
39
44
  // wait for app to return some other way, resulting in null
40
45
  getAppStatePromise(),
41
46
  ]),
@@ -67,10 +72,10 @@ const getAppStatePromise = (): Promise<null> =>
67
72
  });
68
73
  });
69
74
 
70
- const getRedirectPromise = (redirectSchemes: string[]): Promise<string> =>
75
+ const getRedirectPromise = (redirectUrls: string[]): Promise<string> =>
71
76
  new Promise(resolve => {
72
77
  redirectListener = Linking.addEventListener('url', event => {
73
- if (redirectSchemes.some(scheme => event.url.startsWith(scheme))) {
78
+ if (redirectUrls.some(url => event.url.startsWith(url))) {
74
79
  resolve(event.url);
75
80
  }
76
81
  });
package/src/types.ts CHANGED
@@ -2,5 +2,8 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  export type WebBrowserNativeModule = {
5
- openAuthSessionAsync: (url: string) => Promise<string | null>;
5
+ openAuthSessionAsync: (
6
+ url: string,
7
+ redirectUrl?: string
8
+ ) => Promise<string | null>;
6
9
  };