banking_dcb_sdk_react_native 2.0.7 → 2.0.8

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.
@@ -4,11 +4,12 @@ import { WebView as RNWebView } from 'react-native-webview';
4
4
  import { BackHandler, Platform, Linking, SafeAreaView, ActivityIndicator, View, ToastAndroid, StatusBar } from 'react-native';
5
5
  import { useEffect, useRef, useState } from 'react';
6
6
  import { WebViewCallback } from "./utils/webviewCallback.js";
7
- import { check, PERMISSIONS, request, RESULTS } from 'react-native-permissions';
7
+ import { check, PERMISSIONS, request, RESULTS, openSettings } from 'react-native-permissions';
8
8
  import FileViewer from 'react-native-file-viewer';
9
9
  import RNFS from 'react-native-fs';
10
10
  import CookieManager from '@react-native-cookies/cookies';
11
11
  import SendIntentAndroid from 'react-native-send-intent';
12
+ import Geolocation from '@react-native-community/geolocation';
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  const PKG = {
14
15
  gmail: 'com.google.android.gm',
@@ -81,6 +82,7 @@ export const WebView = ({
81
82
  const [canGoBack, setCanGoBack] = useState(false);
82
83
  const canGoBackRef = useRef(false);
83
84
  const hasUserClosedRef = useRef(false);
85
+ const locationRequestInProgress = useRef(false); // Prevent duplicate location requests
84
86
 
85
87
  // const [hasRedirected, setHasRedirected] = useState(false);
86
88
  const [, setToast] = useState(null);
@@ -97,6 +99,148 @@ export const WebView = ({
97
99
  console.log('SDK:LOG: Application not found to open link');
98
100
  }
99
101
  };
102
+
103
+ // ============================================================================
104
+ // LOCATION PERMISSION IMPLEMENTATION - START
105
+ // ============================================================================
106
+
107
+ /**
108
+ * Sends results back to web by calling window.onNativeActionResult
109
+ */
110
+ const sendResultToWeb = (action, result) => {
111
+ const jsonResult = JSON.stringify(result);
112
+ console.log(`SDK:LOG: 📤 Sending to web: ${action} = ${jsonResult}`);
113
+ const jsCode = `
114
+ if (window.onNativeActionResult) {
115
+ window.onNativeActionResult('${action}', ${jsonResult});
116
+ console.log('✅ SDK callback executed: ${action}');
117
+ } else {
118
+ console.error('❌ window.onNativeActionResult is not defined!');
119
+ }
120
+ true;
121
+ `;
122
+ webviewRef.current?.injectJavaScript(jsCode);
123
+ };
124
+
125
+ /**
126
+ * Requests location permission and fetches current location
127
+ */
128
+ const handleRequestLocationPermission = async () => {
129
+ // Prevent duplicate requests
130
+ if (locationRequestInProgress.current) {
131
+ console.log('SDK:LOG: 📍 Location request already in progress, ignoring duplicate');
132
+ return;
133
+ }
134
+ locationRequestInProgress.current = true;
135
+ try {
136
+ console.log('SDK:LOG: 📍 Requesting location permission...');
137
+ const permission = Platform.OS === 'ios' ? PERMISSIONS.IOS.LOCATION_WHEN_IN_USE : PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION;
138
+ const status = await request(permission);
139
+ if (status === RESULTS.GRANTED) {
140
+ console.log('SDK:LOG: ✅ Permission granted, fetching location...');
141
+
142
+ // Fetch current location
143
+ Geolocation.getCurrentPosition(position => {
144
+ console.log(`SDK:LOG: ✅ Location fetched: ${position.coords.latitude}, ${position.coords.longitude}`);
145
+ sendResultToWeb('locationPermission', {
146
+ state: 'granted',
147
+ latitude: position.coords.latitude,
148
+ longitude: position.coords.longitude,
149
+ accuracy: position.coords.accuracy
150
+ });
151
+ locationRequestInProgress.current = false;
152
+ }, error => {
153
+ console.log(`SDK:LOG: ⚠️ Location fetch failed: ${error.message} (code: ${error.code})`);
154
+
155
+ // Error codes:
156
+ // 1 = PERMISSION_DENIED
157
+ // 2 = POSITION_UNAVAILABLE (includes location services disabled)
158
+ // 3 = TIMEOUT
159
+ if (error.code === 2) {
160
+ // POSITION_UNAVAILABLE - likely location services disabled
161
+ sendResultToWeb('locationPermission', {
162
+ state: 'location_services_disabled'
163
+ });
164
+ } else {
165
+ // Permission granted but location fetch failed for other reasons
166
+ // Send granted state so web can try browser API
167
+ sendResultToWeb('locationPermission', {
168
+ state: 'granted'
169
+ });
170
+ }
171
+ locationRequestInProgress.current = false;
172
+ }, {
173
+ enableHighAccuracy: true,
174
+ timeout: 10000,
175
+ maximumAge: 0
176
+ });
177
+ } else if (status === RESULTS.BLOCKED) {
178
+ console.log('SDK:LOG: ❌ Permission permanently denied');
179
+ sendResultToWeb('locationPermission', {
180
+ state: 'permanently_denied'
181
+ });
182
+ locationRequestInProgress.current = false;
183
+ } else {
184
+ console.log('SDK:LOG: ❌ Permission denied');
185
+ sendResultToWeb('locationPermission', {
186
+ state: 'denied'
187
+ });
188
+ locationRequestInProgress.current = false;
189
+ }
190
+ } catch (error) {
191
+ console.log(`SDK:LOG: ❌ Permission request failed: ${error}`);
192
+ sendResultToWeb('locationPermission', {
193
+ state: 'denied'
194
+ });
195
+ locationRequestInProgress.current = false;
196
+ }
197
+ };
198
+
199
+ /**
200
+ * Opens device settings for app permissions
201
+ */
202
+ const handleOpenAppSettings = async () => {
203
+ try {
204
+ console.log('SDK:LOG: ⚙️ Opening app settings...');
205
+ await openSettings();
206
+ sendResultToWeb('openAppSettings', {
207
+ success: true
208
+ });
209
+ console.log('SDK:LOG: ✅ App settings opened');
210
+ } catch (error) {
211
+ console.log(`SDK:LOG: ❌ Failed to open app settings: ${error}`);
212
+ sendResultToWeb('openAppSettings', {
213
+ success: false
214
+ });
215
+ }
216
+ };
217
+
218
+ /**
219
+ * Handles the dispatchEventToApp calls from web
220
+ */
221
+ const handleDispatchEvent = jsonString => {
222
+ try {
223
+ const data = JSON.parse(jsonString);
224
+ const method = data?.method;
225
+ console.log(`SDK:LOG: 📥 Received dispatch event: ${method}`);
226
+ switch (method) {
227
+ case 'REQUEST_LOCATION_PERMISSION':
228
+ handleRequestLocationPermission();
229
+ break;
230
+ case 'OPEN_APP_SETTINGS':
231
+ handleOpenAppSettings();
232
+ break;
233
+ default:
234
+ console.log(`SDK:LOG: ⚠️ Unknown dispatch method: ${method}`);
235
+ }
236
+ } catch (e) {
237
+ console.log(`SDK:LOG: ❌ Error handling dispatch event: ${e}`);
238
+ }
239
+ };
240
+
241
+ // ============================================================================
242
+ // LOCATION PERMISSION IMPLEMENTATION - END
243
+ // ============================================================================
100
244
  const showToast_with_code_message = syntheticEvent => {
101
245
  const {
102
246
  nativeEvent
@@ -270,7 +414,7 @@ export const WebView = ({
270
414
  })
271
415
  });
272
416
 
273
- // Cookie injection script
417
+ // Cookie injection script with dispatchEventToApp bridge
274
418
  const injectedJavaScript = `
275
419
  (function() {
276
420
  function safePost(msg) {
@@ -281,6 +425,71 @@ export const WebView = ({
281
425
  } catch (e) {}
282
426
  }
283
427
 
428
+ // ============================================================================
429
+ // DISPATCH EVENT TO APP BRIDGE - START
430
+ // ============================================================================
431
+ console.log('🌉 [RN] Installing dispatchEventToApp bridge...');
432
+
433
+ // Queue for calls made before bridge is ready
434
+ window.__dispatchEventQueue = window.__dispatchEventQueue || [];
435
+
436
+ function processQueue() {
437
+ while (window.__dispatchEventQueue && window.__dispatchEventQueue.length > 0) {
438
+ var jsonString = window.__dispatchEventQueue.shift();
439
+ try {
440
+ safePost({ type: 'DISPATCH_EVENT_TO_APP', payload: jsonString });
441
+ console.log('🌉 [RN] Processed queued dispatchEventToApp call');
442
+ } catch(e) {
443
+ console.error('🌉 [RN] Error processing queued call:', e);
444
+ }
445
+ }
446
+ }
447
+
448
+ function dispatchToRN(jsonString) {
449
+ console.log('🌉 [RN] dispatchEventToApp called with:', jsonString);
450
+ try {
451
+ if (window.ReactNativeWebView) {
452
+ safePost({ type: 'DISPATCH_EVENT_TO_APP', payload: jsonString });
453
+ console.log('🌉 [RN] Successfully called RN handler');
454
+ } else {
455
+ console.log('🌉 [RN] ReactNativeWebView not ready, queueing call');
456
+ window.__dispatchEventQueue.push(jsonString);
457
+ setTimeout(processQueue, 100);
458
+ }
459
+ } catch(e) {
460
+ console.error('🌉 [RN] dispatchEventToApp error:', e);
461
+ window.__dispatchEventQueue.push(jsonString);
462
+ setTimeout(processQueue, 100);
463
+ }
464
+ }
465
+
466
+ // Create Android bridge: window.android.dispatchEventToApp
467
+ if (!window.android) {
468
+ window.android = {};
469
+ }
470
+ window.android.dispatchEventToApp = dispatchToRN;
471
+ console.log('🌉 [RN] window.android.dispatchEventToApp installed');
472
+
473
+ // Create iOS bridge: window.webkit.messageHandlers.dispatchEventToApp
474
+ if (!window.webkit) {
475
+ window.webkit = {};
476
+ }
477
+ if (!window.webkit.messageHandlers) {
478
+ window.webkit.messageHandlers = {};
479
+ }
480
+ window.webkit.messageHandlers.dispatchEventToApp = {
481
+ postMessage: dispatchToRN
482
+ };
483
+ console.log('🌉 [RN] window.webkit.messageHandlers.dispatchEventToApp installed');
484
+
485
+ // Process any queued calls
486
+ setTimeout(processQueue, 50);
487
+
488
+ console.log('🌉 [RN] dispatchEventToApp bridge installation complete');
489
+ // ============================================================================
490
+ // DISPATCH EVENT TO APP BRIDGE - END
491
+ // ============================================================================
492
+
284
493
  // Preserve any existing window.onerror
285
494
  var previousOnError = window.onerror || null;
286
495
  window.onerror = function(message, source, lineno, colno, error) {
@@ -356,7 +565,14 @@ export const WebView = ({
356
565
  const handleMessage = event => {
357
566
  try {
358
567
  const data = JSON.parse(event.nativeEvent.data);
359
- console.log('SDK:LOG: onMessage data =');
568
+ console.log('SDK:LOG: onMessage data =', data?.type);
569
+
570
+ // Handle dispatchEventToApp messages from web
571
+ if (data?.type === 'DISPATCH_EVENT_TO_APP') {
572
+ if (__DEV__) console.log('SDK:LOG: DISPATCH_EVENT_TO_APP received:', data.payload);
573
+ handleDispatchEvent(data.payload);
574
+ return;
575
+ }
360
576
 
361
577
  // 1) history.back() from a "root" page → treat as USER_CLOSED
362
578
  if (data?.type === 'HISTORY_BACK_CALLED') {
@@ -1 +1 @@
1
- {"version":3,"names":["WebView","RNWebView","BackHandler","Platform","Linking","SafeAreaView","ActivityIndicator","View","ToastAndroid","StatusBar","useEffect","useRef","useState","WebViewCallback","check","PERMISSIONS","request","RESULTS","FileViewer","RNFS","CookieManager","SendIntentAndroid","jsx","_jsx","PKG","gmail","outlook","yahoo","SCHEME","openMailAppIntent","app","OS","pkg","scheme","wasOpened","openApp","err","console","log","canOpen","canOpenURL","openURL","err2","clearAllCookies","clearAll","e","error","url","options","onCallback","hostName","whitelistedUrls","onPageFinished","webviewRef","canGoBack","setCanGoBack","canGoBackRef","hasUserClosedRef","setToast","handleExternalUrl","Promise","resolve","setTimeout","show","LONG","showToast_with_code_message","syntheticEvent","nativeEvent","errorCodesToHandle","includes","code","message","description","visible","redirect","getQueryParam","param","match","RegExp","decodeURIComponent","downloadAndOpenFile","fileUrl","cookieString","cookies","get","Object","keys","map","key","value","join","timestamp","Date","getTime","urlParts","split","lastPart","length","fileExt","pop","fileName","downloadPath","select","ios","DocumentDirectoryPath","android","DownloadDirectoryPath","Error","__DEV__","fromUrl","toFile","headers","background","begin","res","response","downloadFile","promise","statusCode","SHORT","open","showOpenWithDialog","onDismiss","unlink","catch","handleOnShouldStartLoadWithRequest","event","then","ok","status","setBackgroundColor","undefined","isWhitelisted","some","white","handleBackButton","current","goBack","backHandler","addEventListener","remove","Loading","style","flex","justifyContent","alignItems","children","size","injectedJavaScript","requestPermission","permission","result","DENIED","requestResult","GRANTED","handlePermissionRequest","resources","permissionsToRequest","push","IOS","CAMERA","ANDROID","MICROPHONE","RECORD_AUDIO","LOCATION_WHEN_IN_USE","ACCESS_FINE_LOCATION","results","all","granted","every","grant","deny","handleMessage","data","JSON","parse","type","href","warn","handleWebViewLoadEnd","loadedUrl","backgroundColor","ref","source","uri","onPermissionRequest","geolocationEnabled","androidPermissions","camera","microphone","geolocation","onError","startInLoadingState","renderLoading","onLoadEnd","originWhitelist","javaScriptEnabled","domStorageEnabled","mediaPlaybackRequiresUserAction","allowsInlineMediaPlayback","onShouldStartLoadWithRequest","onNavigationStateChange","navState","decelerationRate","allowsBackForwardNavigationGestures","sharedCookiesEnabled","setSupportMultipleWindows","mixedContentMode","allowsLinkPreview","onMessage"],"sourceRoot":"../../../src","sources":["helpers/webview.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebView","RNWebView","BackHandler","Platform","Linking","SafeAreaView","ActivityIndicator","View","ToastAndroid","StatusBar","useEffect","useRef","useState","WebViewCallback","check","PERMISSIONS","request","RESULTS","openSettings","FileViewer","RNFS","CookieManager","SendIntentAndroid","Geolocation","jsx","_jsx","PKG","gmail","outlook","yahoo","SCHEME","openMailAppIntent","app","OS","pkg","scheme","wasOpened","openApp","err","console","log","canOpen","canOpenURL","openURL","err2","clearAllCookies","clearAll","e","error","url","options","onCallback","hostName","whitelistedUrls","onPageFinished","webviewRef","canGoBack","setCanGoBack","canGoBackRef","hasUserClosedRef","locationRequestInProgress","setToast","handleExternalUrl","Promise","resolve","setTimeout","show","LONG","sendResultToWeb","action","result","jsonResult","JSON","stringify","jsCode","current","injectJavaScript","handleRequestLocationPermission","permission","IOS","LOCATION_WHEN_IN_USE","ANDROID","ACCESS_FINE_LOCATION","status","GRANTED","getCurrentPosition","position","coords","latitude","longitude","state","accuracy","message","code","enableHighAccuracy","timeout","maximumAge","BLOCKED","handleOpenAppSettings","success","handleDispatchEvent","jsonString","data","parse","method","showToast_with_code_message","syntheticEvent","nativeEvent","errorCodesToHandle","includes","description","visible","redirect","getQueryParam","param","match","RegExp","decodeURIComponent","downloadAndOpenFile","fileUrl","cookieString","cookies","get","Object","keys","map","key","value","join","timestamp","Date","getTime","urlParts","split","lastPart","length","fileExt","pop","fileName","downloadPath","select","ios","DocumentDirectoryPath","android","DownloadDirectoryPath","Error","__DEV__","fromUrl","toFile","headers","background","begin","res","response","downloadFile","promise","statusCode","SHORT","open","showOpenWithDialog","onDismiss","unlink","catch","handleOnShouldStartLoadWithRequest","event","then","ok","setBackgroundColor","undefined","isWhitelisted","some","white","handleBackButton","goBack","backHandler","addEventListener","remove","Loading","style","flex","justifyContent","alignItems","children","size","injectedJavaScript","requestPermission","DENIED","requestResult","handlePermissionRequest","resources","permissionsToRequest","push","CAMERA","MICROPHONE","RECORD_AUDIO","results","all","granted","every","grant","deny","handleMessage","type","payload","href","warn","handleWebViewLoadEnd","loadedUrl","backgroundColor","ref","source","uri","onPermissionRequest","geolocationEnabled","androidPermissions","camera","microphone","geolocation","onError","startInLoadingState","renderLoading","onLoadEnd","originWhitelist","javaScriptEnabled","domStorageEnabled","mediaPlaybackRequiresUserAction","allowsInlineMediaPlayback","onShouldStartLoadWithRequest","onNavigationStateChange","navState","decelerationRate","allowsBackForwardNavigationGestures","sharedCookiesEnabled","setSupportMultipleWindows","mixedContentMode","allowsLinkPreview","onMessage"],"sourceRoot":"../../../src","sources":["helpers/webview.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"webview.d.ts","sourceRoot":"","sources":["../../../../src/helpers/webview.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAcjC,UAAU,oBAAqB,SAAQ,YAAY;IACjD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AACD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAc7C;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoCtE;AAWD,eAAO,MAAM,OAAO,GAAI,0EAOrB,kBAAkB,4CA0bpB,CAAC"}
1
+ {"version":3,"file":"webview.d.ts","sourceRoot":"","sources":["../../../../src/helpers/webview.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAgBjC,UAAU,oBAAqB,SAAQ,YAAY;IACjD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AACD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAc7C;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoCtE;AAWD,eAAO,MAAM,OAAO,GAAI,0EAOrB,kBAAkB,4CAkqBpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "banking_dcb_sdk_react_native",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "React Native package for partner integrating with DCB",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/module/index.js",
@@ -27,6 +27,7 @@ import {
27
27
  PERMISSIONS,
28
28
  request,
29
29
  RESULTS,
30
+ openSettings,
30
31
  type Permission,
31
32
  } from 'react-native-permissions';
32
33
  import FileViewer from 'react-native-file-viewer';
@@ -34,6 +35,7 @@ import RNFS from 'react-native-fs';
34
35
  import CookieManager from '@react-native-cookies/cookies';
35
36
  import { AnalyticsLogger } from './analytics/analytics_logger';
36
37
  import SendIntentAndroid from 'react-native-send-intent';
38
+ import Geolocation from '@react-native-community/geolocation';
37
39
 
38
40
  interface ExtendedWebViewProps extends WebViewProps {
39
41
  onPermissionRequest?: (event: any) => void;
@@ -133,6 +135,7 @@ export const WebView = ({
133
135
  const [canGoBack, setCanGoBack] = useState(false);
134
136
  const canGoBackRef = useRef(false);
135
137
  const hasUserClosedRef = useRef(false);
138
+ const locationRequestInProgress = useRef(false); // Prevent duplicate location requests
136
139
 
137
140
  // const [hasRedirected, setHasRedirected] = useState(false);
138
141
  const [, setToast] = useState<{ visible: boolean; message: string } | null>(
@@ -154,6 +157,164 @@ export const WebView = ({
154
157
  console.log('SDK:LOG: Application not found to open link');
155
158
  }
156
159
  };
160
+
161
+ // ============================================================================
162
+ // LOCATION PERMISSION IMPLEMENTATION - START
163
+ // ============================================================================
164
+
165
+ /**
166
+ * Sends results back to web by calling window.onNativeActionResult
167
+ */
168
+ const sendResultToWeb = (action: string, result: Record<string, any>) => {
169
+ const jsonResult = JSON.stringify(result);
170
+ console.log(`SDK:LOG: 📤 Sending to web: ${action} = ${jsonResult}`);
171
+
172
+ const jsCode = `
173
+ if (window.onNativeActionResult) {
174
+ window.onNativeActionResult('${action}', ${jsonResult});
175
+ console.log('✅ SDK callback executed: ${action}');
176
+ } else {
177
+ console.error('❌ window.onNativeActionResult is not defined!');
178
+ }
179
+ true;
180
+ `;
181
+
182
+ webviewRef.current?.injectJavaScript(jsCode);
183
+ };
184
+
185
+ /**
186
+ * Requests location permission and fetches current location
187
+ */
188
+ const handleRequestLocationPermission = async () => {
189
+ // Prevent duplicate requests
190
+ if (locationRequestInProgress.current) {
191
+ console.log(
192
+ 'SDK:LOG: 📍 Location request already in progress, ignoring duplicate'
193
+ );
194
+ return;
195
+ }
196
+ locationRequestInProgress.current = true;
197
+
198
+ try {
199
+ console.log('SDK:LOG: 📍 Requesting location permission...');
200
+
201
+ const permission =
202
+ Platform.OS === 'ios'
203
+ ? PERMISSIONS.IOS.LOCATION_WHEN_IN_USE
204
+ : PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION;
205
+
206
+ const status = await request(permission);
207
+
208
+ if (status === RESULTS.GRANTED) {
209
+ console.log('SDK:LOG: ✅ Permission granted, fetching location...');
210
+
211
+ // Fetch current location
212
+ Geolocation.getCurrentPosition(
213
+ (position) => {
214
+ console.log(
215
+ `SDK:LOG: ✅ Location fetched: ${position.coords.latitude}, ${position.coords.longitude}`
216
+ );
217
+
218
+ sendResultToWeb('locationPermission', {
219
+ state: 'granted',
220
+ latitude: position.coords.latitude,
221
+ longitude: position.coords.longitude,
222
+ accuracy: position.coords.accuracy,
223
+ });
224
+
225
+ locationRequestInProgress.current = false;
226
+ },
227
+ (error) => {
228
+ console.log(
229
+ `SDK:LOG: ⚠️ Location fetch failed: ${error.message} (code: ${error.code})`
230
+ );
231
+
232
+ // Error codes:
233
+ // 1 = PERMISSION_DENIED
234
+ // 2 = POSITION_UNAVAILABLE (includes location services disabled)
235
+ // 3 = TIMEOUT
236
+ if (error.code === 2) {
237
+ // POSITION_UNAVAILABLE - likely location services disabled
238
+ sendResultToWeb('locationPermission', {
239
+ state: 'location_services_disabled',
240
+ });
241
+ } else {
242
+ // Permission granted but location fetch failed for other reasons
243
+ // Send granted state so web can try browser API
244
+ sendResultToWeb('locationPermission', {
245
+ state: 'granted',
246
+ });
247
+ }
248
+
249
+ locationRequestInProgress.current = false;
250
+ },
251
+ {
252
+ enableHighAccuracy: true,
253
+ timeout: 10000,
254
+ maximumAge: 0,
255
+ }
256
+ );
257
+ } else if (status === RESULTS.BLOCKED) {
258
+ console.log('SDK:LOG: ❌ Permission permanently denied');
259
+ sendResultToWeb('locationPermission', { state: 'permanently_denied' });
260
+ locationRequestInProgress.current = false;
261
+ } else {
262
+ console.log('SDK:LOG: ❌ Permission denied');
263
+ sendResultToWeb('locationPermission', { state: 'denied' });
264
+ locationRequestInProgress.current = false;
265
+ }
266
+ } catch (error) {
267
+ console.log(`SDK:LOG: ❌ Permission request failed: ${error}`);
268
+ sendResultToWeb('locationPermission', { state: 'denied' });
269
+ locationRequestInProgress.current = false;
270
+ }
271
+ };
272
+
273
+ /**
274
+ * Opens device settings for app permissions
275
+ */
276
+ const handleOpenAppSettings = async () => {
277
+ try {
278
+ console.log('SDK:LOG: ⚙️ Opening app settings...');
279
+ await openSettings();
280
+ sendResultToWeb('openAppSettings', { success: true });
281
+ console.log('SDK:LOG: ✅ App settings opened');
282
+ } catch (error) {
283
+ console.log(`SDK:LOG: ❌ Failed to open app settings: ${error}`);
284
+ sendResultToWeb('openAppSettings', { success: false });
285
+ }
286
+ };
287
+
288
+ /**
289
+ * Handles the dispatchEventToApp calls from web
290
+ */
291
+ const handleDispatchEvent = (jsonString: string) => {
292
+ try {
293
+ const data = JSON.parse(jsonString);
294
+ const method = data?.method;
295
+
296
+ console.log(`SDK:LOG: 📥 Received dispatch event: ${method}`);
297
+
298
+ switch (method) {
299
+ case 'REQUEST_LOCATION_PERMISSION':
300
+ handleRequestLocationPermission();
301
+ break;
302
+
303
+ case 'OPEN_APP_SETTINGS':
304
+ handleOpenAppSettings();
305
+ break;
306
+
307
+ default:
308
+ console.log(`SDK:LOG: ⚠️ Unknown dispatch method: ${method}`);
309
+ }
310
+ } catch (e) {
311
+ console.log(`SDK:LOG: ❌ Error handling dispatch event: ${e}`);
312
+ }
313
+ };
314
+
315
+ // ============================================================================
316
+ // LOCATION PERMISSION IMPLEMENTATION - END
317
+ // ============================================================================
157
318
  const showToast_with_code_message = (syntheticEvent: any) => {
158
319
  const { nativeEvent } = syntheticEvent;
159
320
  const errorCodesToHandle = [-2, -6, -8, -10];
@@ -375,7 +536,7 @@ export const WebView = ({
375
536
  </View>
376
537
  );
377
538
 
378
- // Cookie injection script
539
+ // Cookie injection script with dispatchEventToApp bridge
379
540
  const injectedJavaScript = `
380
541
  (function() {
381
542
  function safePost(msg) {
@@ -386,6 +547,71 @@ export const WebView = ({
386
547
  } catch (e) {}
387
548
  }
388
549
 
550
+ // ============================================================================
551
+ // DISPATCH EVENT TO APP BRIDGE - START
552
+ // ============================================================================
553
+ console.log('🌉 [RN] Installing dispatchEventToApp bridge...');
554
+
555
+ // Queue for calls made before bridge is ready
556
+ window.__dispatchEventQueue = window.__dispatchEventQueue || [];
557
+
558
+ function processQueue() {
559
+ while (window.__dispatchEventQueue && window.__dispatchEventQueue.length > 0) {
560
+ var jsonString = window.__dispatchEventQueue.shift();
561
+ try {
562
+ safePost({ type: 'DISPATCH_EVENT_TO_APP', payload: jsonString });
563
+ console.log('🌉 [RN] Processed queued dispatchEventToApp call');
564
+ } catch(e) {
565
+ console.error('🌉 [RN] Error processing queued call:', e);
566
+ }
567
+ }
568
+ }
569
+
570
+ function dispatchToRN(jsonString) {
571
+ console.log('🌉 [RN] dispatchEventToApp called with:', jsonString);
572
+ try {
573
+ if (window.ReactNativeWebView) {
574
+ safePost({ type: 'DISPATCH_EVENT_TO_APP', payload: jsonString });
575
+ console.log('🌉 [RN] Successfully called RN handler');
576
+ } else {
577
+ console.log('🌉 [RN] ReactNativeWebView not ready, queueing call');
578
+ window.__dispatchEventQueue.push(jsonString);
579
+ setTimeout(processQueue, 100);
580
+ }
581
+ } catch(e) {
582
+ console.error('🌉 [RN] dispatchEventToApp error:', e);
583
+ window.__dispatchEventQueue.push(jsonString);
584
+ setTimeout(processQueue, 100);
585
+ }
586
+ }
587
+
588
+ // Create Android bridge: window.android.dispatchEventToApp
589
+ if (!window.android) {
590
+ window.android = {};
591
+ }
592
+ window.android.dispatchEventToApp = dispatchToRN;
593
+ console.log('🌉 [RN] window.android.dispatchEventToApp installed');
594
+
595
+ // Create iOS bridge: window.webkit.messageHandlers.dispatchEventToApp
596
+ if (!window.webkit) {
597
+ window.webkit = {};
598
+ }
599
+ if (!window.webkit.messageHandlers) {
600
+ window.webkit.messageHandlers = {};
601
+ }
602
+ window.webkit.messageHandlers.dispatchEventToApp = {
603
+ postMessage: dispatchToRN
604
+ };
605
+ console.log('🌉 [RN] window.webkit.messageHandlers.dispatchEventToApp installed');
606
+
607
+ // Process any queued calls
608
+ setTimeout(processQueue, 50);
609
+
610
+ console.log('🌉 [RN] dispatchEventToApp bridge installation complete');
611
+ // ============================================================================
612
+ // DISPATCH EVENT TO APP BRIDGE - END
613
+ // ============================================================================
614
+
389
615
  // Preserve any existing window.onerror
390
616
  var previousOnError = window.onerror || null;
391
617
  window.onerror = function(message, source, lineno, colno, error) {
@@ -482,7 +708,15 @@ export const WebView = ({
482
708
  const handleMessage = (event: WebViewMessageEvent) => {
483
709
  try {
484
710
  const data = JSON.parse(event.nativeEvent.data);
485
- console.log('SDK:LOG: onMessage data =');
711
+ console.log('SDK:LOG: onMessage data =', data?.type);
712
+
713
+ // Handle dispatchEventToApp messages from web
714
+ if (data?.type === 'DISPATCH_EVENT_TO_APP') {
715
+ if (__DEV__)
716
+ console.log('SDK:LOG: DISPATCH_EVENT_TO_APP received:', data.payload);
717
+ handleDispatchEvent(data.payload);
718
+ return;
719
+ }
486
720
 
487
721
  // 1) history.back() from a "root" page → treat as USER_CLOSED
488
722
  if (data?.type === 'HISTORY_BACK_CALLED') {