@savers_app/react-native-sandbox-sdk 1.2.8 → 1.3.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.
- package/lib/module/services/webview/DualWebViewBridgeController.js +32 -6
- package/lib/module/services/webview/DualWebViewBridgeController.js.map +1 -1
- package/lib/module/services/webview/dualWebViewBridge.types.js.map +1 -1
- package/lib/typescript/src/services/webview/DualWebViewBridgeController.d.ts.map +1 -1
- package/lib/typescript/src/services/webview/dualWebViewBridge.types.d.ts +2 -0
- package/lib/typescript/src/services/webview/dualWebViewBridge.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/services/webview/DualWebViewBridgeController.tsx +36 -6
- package/src/services/webview/dualWebViewBridge.types.ts +2 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Image, StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
5
5
|
import WebView from 'react-native-webview';
|
|
6
6
|
import { parseDualWebViewEnvelope } from "./dualWebViewBridge.types.js";
|
|
@@ -13,6 +13,25 @@ const WEBVIEW_UA_MARKER = 'CloAppWebView';
|
|
|
13
13
|
/** Legacy / Hub: open travel from first WebView without JSON envelope. */
|
|
14
14
|
const TRAVEL_DEEP_LINK = 'saversapp://travel';
|
|
15
15
|
const LEGACY_OPEN_TRAVEL_ACTIONS = ['OPEN_TRAVEL_PORTAL', 'OPEN_TRAVEL'];
|
|
16
|
+
function resolveTravelPortalUrlFromPayload(payload) {
|
|
17
|
+
if (typeof payload === 'string' && payload.trim()) {
|
|
18
|
+
return payload.trim();
|
|
19
|
+
}
|
|
20
|
+
if (payload && typeof payload === 'object' && 'url' in payload) {
|
|
21
|
+
const url = payload.url;
|
|
22
|
+
if (typeof url === 'string' && url.trim()) {
|
|
23
|
+
return url.trim();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
function resolveTravelPortalUrlFromLegacyMessage(data) {
|
|
29
|
+
const topLevel = data?.url;
|
|
30
|
+
if (typeof topLevel === 'string' && topLevel.trim()) {
|
|
31
|
+
return topLevel.trim();
|
|
32
|
+
}
|
|
33
|
+
return resolveTravelPortalUrlFromPayload(data?.payload);
|
|
34
|
+
}
|
|
16
35
|
function buildInjectNativeBridgeScript(detail) {
|
|
17
36
|
return `
|
|
18
37
|
(function(){
|
|
@@ -37,7 +56,14 @@ export const DualWebViewBridgeController = ({
|
|
|
37
56
|
const [surface, setSurface] = useState(initialSurface);
|
|
38
57
|
const [saversKey, setSaversKey] = useState(0);
|
|
39
58
|
const [travelKey, setTravelKey] = useState(0);
|
|
40
|
-
const
|
|
59
|
+
const [activeTravelPortalUrl, setActiveTravelPortalUrl] = useState(travelPortalUrl);
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
setActiveTravelPortalUrl(travelPortalUrl);
|
|
62
|
+
}, [travelPortalUrl]);
|
|
63
|
+
const openTravel = useCallback(url => {
|
|
64
|
+
if (url) {
|
|
65
|
+
setActiveTravelPortalUrl(url);
|
|
66
|
+
}
|
|
41
67
|
setSurface('travel');
|
|
42
68
|
setTravelKey(k => k + 1);
|
|
43
69
|
}, []);
|
|
@@ -58,7 +84,7 @@ export const DualWebViewBridgeController = ({
|
|
|
58
84
|
const handleBridgeEnvelope = useCallback(env => {
|
|
59
85
|
switch (env.action) {
|
|
60
86
|
case 'open_travel':
|
|
61
|
-
openTravel();
|
|
87
|
+
openTravel(resolveTravelPortalUrlFromPayload(env.payload));
|
|
62
88
|
return true;
|
|
63
89
|
case 'close_travel':
|
|
64
90
|
backToSavers();
|
|
@@ -84,7 +110,7 @@ export const DualWebViewBridgeController = ({
|
|
|
84
110
|
try {
|
|
85
111
|
const data = JSON.parse(raw);
|
|
86
112
|
if (data?.action === 'OPEN_TRAVEL_PORTAL' || data?.type === 'OPEN_TRAVEL' || data?.openTravel === true) {
|
|
87
|
-
openTravel();
|
|
113
|
+
openTravel(resolveTravelPortalUrlFromLegacyMessage(data));
|
|
88
114
|
return true;
|
|
89
115
|
}
|
|
90
116
|
} catch {
|
|
@@ -137,8 +163,8 @@ export const DualWebViewBridgeController = ({
|
|
|
137
163
|
return true;
|
|
138
164
|
}, [openTravel]);
|
|
139
165
|
const travelSource = useMemo(() => ({
|
|
140
|
-
uri:
|
|
141
|
-
}), [
|
|
166
|
+
uri: activeTravelPortalUrl
|
|
167
|
+
}), [activeTravelPortalUrl]);
|
|
142
168
|
const saversSource = useMemo(() => ({
|
|
143
169
|
uri: saversAppUrl
|
|
144
170
|
}), [saversAppUrl]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","useRef","useState","Image","StyleSheet","TouchableOpacity","View","WebView","parseDualWebViewEnvelope","jsx","_jsx","jsxs","_jsxs","DEFAULT_TRAVEL_PORTAL_URL","WEBVIEW_UA_MARKER","TRAVEL_DEEP_LINK","LEGACY_OPEN_TRAVEL_ACTIONS","buildInjectNativeBridgeScript","detail","JSON","stringify","DualWebViewBridgeController","saversAppUrl","travelPortalUrl","partnerLogo","renderTravelBackIcon","initialSurface","onSaversSdkMessage","onLoadEndSavers","onLoadEndTravel","saversRef","travelRef","surface","setSurface","saversKey","setSaversKey","travelKey","setTravelKey","openTravel","k","backToSavers","relayTo","target","payload","from","bridge","action","ref","current","injectJavaScript","handleBridgeEnvelope","env","to","tryLegacyOpenTravel","raw","data","parse","type","some","s","includes","onMessageSavers","e","nativeEvent","postBack","onMessageTravel","onShouldStartLoadSavers","request","url","startsWith","travelSource","uri","saversSource","style","styles","root","children","source","originWhitelist","applicationNameForUserAgent","onMessage","onShouldStartLoadWithRequest","onLoadEnd","webview","sharedCookiesEnabled","incognito","webviewDebuggingEnabled","__DEV__","travelColumn","header","onPress","hitSlop","accessibilityRole","accessibilityLabel","backButton","backIconWrapper","backIconShaft","backIconHead","headerSpacer","resizeMode","logo","logoPlaceholder","create","flex","flexDirection","alignItems","backgroundColor","paddingHorizontal","paddingTop","paddingBottom","borderBottomWidth","hairlineWidth","borderBottomColor","width","height","justifyContent","position","left","right","borderRadius","borderLeftWidth","borderColor","transform","rotate","marginLeft"],"sourceRoot":"../../../../src","sources":["services/webview/DualWebViewBridgeController.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","Image","StyleSheet","TouchableOpacity","View","WebView","parseDualWebViewEnvelope","jsx","_jsx","jsxs","_jsxs","DEFAULT_TRAVEL_PORTAL_URL","WEBVIEW_UA_MARKER","TRAVEL_DEEP_LINK","LEGACY_OPEN_TRAVEL_ACTIONS","resolveTravelPortalUrlFromPayload","payload","trim","url","undefined","resolveTravelPortalUrlFromLegacyMessage","data","topLevel","buildInjectNativeBridgeScript","detail","JSON","stringify","DualWebViewBridgeController","saversAppUrl","travelPortalUrl","partnerLogo","renderTravelBackIcon","initialSurface","onSaversSdkMessage","onLoadEndSavers","onLoadEndTravel","saversRef","travelRef","surface","setSurface","saversKey","setSaversKey","travelKey","setTravelKey","activeTravelPortalUrl","setActiveTravelPortalUrl","openTravel","k","backToSavers","relayTo","target","from","bridge","action","ref","current","injectJavaScript","handleBridgeEnvelope","env","to","tryLegacyOpenTravel","raw","parse","type","some","s","includes","onMessageSavers","e","nativeEvent","postBack","onMessageTravel","onShouldStartLoadSavers","request","startsWith","travelSource","uri","saversSource","style","styles","root","children","source","originWhitelist","applicationNameForUserAgent","onMessage","onShouldStartLoadWithRequest","onLoadEnd","webview","sharedCookiesEnabled","incognito","webviewDebuggingEnabled","__DEV__","travelColumn","header","onPress","hitSlop","accessibilityRole","accessibilityLabel","backButton","backIconWrapper","backIconShaft","backIconHead","headerSpacer","resizeMode","logo","logoPlaceholder","create","flex","flexDirection","alignItems","backgroundColor","paddingHorizontal","paddingTop","paddingBottom","borderBottomWidth","hairlineWidth","borderBottomColor","width","height","justifyContent","position","left","right","borderRadius","borderLeftWidth","borderColor","transform","rotate","marginLeft"],"sourceRoot":"../../../../src","sources":["services/webview/DualWebViewBridgeController.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["parseDualWebViewEnvelope","raw","o","JSON","parse","bridge","from","action"],"sourceRoot":"../../../../src","sources":["services/webview/dualWebViewBridge.types.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["parseDualWebViewEnvelope","raw","o","JSON","parse","bridge","from","action"],"sourceRoot":"../../../../src","sources":["services/webview/dualWebViewBridge.types.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAkBA,OAAO,SAASA,wBAAwBA,CACtCC,GAAW,EACuB;EAClC,IAAI;IACF,MAAMC,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACH,GAAG,CAA8B;IACtD,IAAIC,CAAC,EAAEG,MAAM,KAAK,cAAc,IAAIH,CAAC,EAAEI,IAAI,IAAIJ,CAAC,EAAEK,MAAM,EAAE;MACxD,OAAOL,CAAC;IACV;EACF,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DualWebViewBridgeController.d.ts","sourceRoot":"","sources":["../../../../../src/services/webview/DualWebViewBridgeController.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DualWebViewBridgeController.d.ts","sourceRoot":"","sources":["../../../../../src/services/webview/DualWebViewBridgeController.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAsCjF,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,gCAAgC,GAAG;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IAC9E,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAC;AAcF,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAChD,gCAAgC,CA6OjC,CAAC;AA0DF,eAAe,2BAA2B,CAAC"}
|
|
@@ -9,11 +9,13 @@ export type DualWebViewBridgeEnvelope = {
|
|
|
9
9
|
/**
|
|
10
10
|
* relay — forward payload to the other WebView via injectJavaScript + CustomEvent.
|
|
11
11
|
* open_travel — show travel surface (reloads travel WebView).
|
|
12
|
+
* payload may be `{ url: string }` (SSO initialize URL from hosted m.saversapp.com).
|
|
12
13
|
* close_travel — same as native back (reloads Savers WebView).
|
|
13
14
|
*/
|
|
14
15
|
action: 'relay' | 'open_travel' | 'close_travel';
|
|
15
16
|
/** For relay: which surface should receive the event. */
|
|
16
17
|
to?: 'savers' | 'travel';
|
|
18
|
+
/** open_travel: `{ url: string }` — travel portal URL to load. */
|
|
17
19
|
payload?: unknown;
|
|
18
20
|
};
|
|
19
21
|
export declare function parseDualWebViewEnvelope(raw: string): DualWebViewBridgeEnvelope | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualWebViewBridge.types.d.ts","sourceRoot":"","sources":["../../../../../src/services/webview/dualWebViewBridge.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,+CAA+C;IAC/C,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"dualWebViewBridge.types.d.ts","sourceRoot":"","sources":["../../../../../src/services/webview/dualWebViewBridge.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,+CAA+C;IAC/C,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B;;;;;OAKG;IACH,MAAM,EAAE,OAAO,GAAG,aAAa,GAAG,cAAc,CAAC;IACjD,yDAAyD;IACzD,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACzB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,GACV,yBAAyB,GAAG,IAAI,CAUlC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@savers_app/react-native-sandbox-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Cross-platform React Native SDK exposing native features (maps, dial pad, browser), device ID/location and session utilities, a URL generator, and a WebView message bridge to trigger actions from web content.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"react-native": "./src/index.tsx",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { Image, StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
3
3
|
import WebView from 'react-native-webview';
|
|
4
4
|
import {
|
|
@@ -15,6 +15,27 @@ const WEBVIEW_UA_MARKER = 'CloAppWebView';
|
|
|
15
15
|
const TRAVEL_DEEP_LINK = 'saversapp://travel';
|
|
16
16
|
const LEGACY_OPEN_TRAVEL_ACTIONS = ['OPEN_TRAVEL_PORTAL', 'OPEN_TRAVEL'];
|
|
17
17
|
|
|
18
|
+
function resolveTravelPortalUrlFromPayload(payload: unknown): string | undefined {
|
|
19
|
+
if (typeof payload === 'string' && payload.trim()) {
|
|
20
|
+
return payload.trim();
|
|
21
|
+
}
|
|
22
|
+
if (payload && typeof payload === 'object' && 'url' in payload) {
|
|
23
|
+
const url = (payload as { url?: unknown }).url;
|
|
24
|
+
if (typeof url === 'string' && url.trim()) {
|
|
25
|
+
return url.trim();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function resolveTravelPortalUrlFromLegacyMessage(data: Record<string, unknown>): string | undefined {
|
|
32
|
+
const topLevel = data?.url;
|
|
33
|
+
if (typeof topLevel === 'string' && topLevel.trim()) {
|
|
34
|
+
return topLevel.trim();
|
|
35
|
+
}
|
|
36
|
+
return resolveTravelPortalUrlFromPayload(data?.payload);
|
|
37
|
+
}
|
|
38
|
+
|
|
18
39
|
export type Surface = 'savers' | 'travel';
|
|
19
40
|
|
|
20
41
|
export type DualWebViewBridgeControllerProps = {
|
|
@@ -58,8 +79,17 @@ export const DualWebViewBridgeController: React.FC<
|
|
|
58
79
|
const [surface, setSurface] = useState<Surface>(initialSurface);
|
|
59
80
|
const [saversKey, setSaversKey] = useState(0);
|
|
60
81
|
const [travelKey, setTravelKey] = useState(0);
|
|
82
|
+
const [activeTravelPortalUrl, setActiveTravelPortalUrl] =
|
|
83
|
+
useState(travelPortalUrl);
|
|
84
|
+
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
setActiveTravelPortalUrl(travelPortalUrl);
|
|
87
|
+
}, [travelPortalUrl]);
|
|
61
88
|
|
|
62
|
-
const openTravel = useCallback(() => {
|
|
89
|
+
const openTravel = useCallback((url?: string) => {
|
|
90
|
+
if (url) {
|
|
91
|
+
setActiveTravelPortalUrl(url);
|
|
92
|
+
}
|
|
63
93
|
setSurface('travel');
|
|
64
94
|
setTravelKey((k) => k + 1);
|
|
65
95
|
}, []);
|
|
@@ -91,7 +121,7 @@ export const DualWebViewBridgeController: React.FC<
|
|
|
91
121
|
(env: DualWebViewBridgeEnvelope): boolean => {
|
|
92
122
|
switch (env.action) {
|
|
93
123
|
case 'open_travel':
|
|
94
|
-
openTravel();
|
|
124
|
+
openTravel(resolveTravelPortalUrlFromPayload(env.payload));
|
|
95
125
|
return true;
|
|
96
126
|
case 'close_travel':
|
|
97
127
|
backToSavers();
|
|
@@ -125,7 +155,7 @@ export const DualWebViewBridgeController: React.FC<
|
|
|
125
155
|
data?.type === 'OPEN_TRAVEL' ||
|
|
126
156
|
data?.openTravel === true
|
|
127
157
|
) {
|
|
128
|
-
openTravel();
|
|
158
|
+
openTravel(resolveTravelPortalUrlFromLegacyMessage(data));
|
|
129
159
|
return true;
|
|
130
160
|
}
|
|
131
161
|
} catch {
|
|
@@ -196,8 +226,8 @@ export const DualWebViewBridgeController: React.FC<
|
|
|
196
226
|
);
|
|
197
227
|
|
|
198
228
|
const travelSource = useMemo(
|
|
199
|
-
() => ({ uri:
|
|
200
|
-
[
|
|
229
|
+
() => ({ uri: activeTravelPortalUrl }),
|
|
230
|
+
[activeTravelPortalUrl]
|
|
201
231
|
);
|
|
202
232
|
const saversSource = useMemo(() => ({ uri: saversAppUrl }), [saversAppUrl]);
|
|
203
233
|
|
|
@@ -9,11 +9,13 @@ export type DualWebViewBridgeEnvelope = {
|
|
|
9
9
|
/**
|
|
10
10
|
* relay — forward payload to the other WebView via injectJavaScript + CustomEvent.
|
|
11
11
|
* open_travel — show travel surface (reloads travel WebView).
|
|
12
|
+
* payload may be `{ url: string }` (SSO initialize URL from hosted m.saversapp.com).
|
|
12
13
|
* close_travel — same as native back (reloads Savers WebView).
|
|
13
14
|
*/
|
|
14
15
|
action: 'relay' | 'open_travel' | 'close_travel';
|
|
15
16
|
/** For relay: which surface should receive the event. */
|
|
16
17
|
to?: 'savers' | 'travel';
|
|
18
|
+
/** open_travel: `{ url: string }` — travel portal URL to load. */
|
|
17
19
|
payload?: unknown;
|
|
18
20
|
};
|
|
19
21
|
|