@apps-in-toss/framework 1.5.2 → 1.6.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/dist/index.cjs +607 -273
- package/dist/index.d.cts +68 -2
- package/dist/index.d.ts +68 -2
- package/dist/index.js +447 -111
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -37,6 +37,8 @@ __export(src_exports, {
|
|
|
37
37
|
OverlayProvider: () => import_private10.OverlayProvider,
|
|
38
38
|
WebView: () => WebView,
|
|
39
39
|
env: () => env,
|
|
40
|
+
loadFullScreenAd: () => loadFullScreenAd,
|
|
41
|
+
showFullScreenAd: () => showFullScreenAd,
|
|
40
42
|
useCreateUserAgent: () => useCreateUserAgent,
|
|
41
43
|
useGeolocation: () => useGeolocation,
|
|
42
44
|
useOverlay: () => import_private10.useOverlay,
|
|
@@ -48,9 +50,9 @@ var import_analytics2 = require("@apps-in-toss/analytics");
|
|
|
48
50
|
|
|
49
51
|
// src/core/registerApp.tsx
|
|
50
52
|
var import_analytics = require("@apps-in-toss/analytics");
|
|
51
|
-
var
|
|
53
|
+
var import_native_modules13 = require("@apps-in-toss/native-modules");
|
|
52
54
|
var import_react_native23 = require("@granite-js/react-native");
|
|
53
|
-
var
|
|
55
|
+
var import_tds_react_native10 = require("@toss/tds-react-native");
|
|
54
56
|
var import_react_native24 = require("react-native");
|
|
55
57
|
|
|
56
58
|
// src/core/components/AppEvent.tsx
|
|
@@ -248,45 +250,17 @@ function useNavigationBarContext() {
|
|
|
248
250
|
return context;
|
|
249
251
|
}
|
|
250
252
|
|
|
251
|
-
// src/core/hooks/useAppsInTossBridge.ts
|
|
252
|
-
var import_native_modules3 = require("@apps-in-toss/native-modules");
|
|
253
|
-
var import_tds_react_native = require("@toss/tds-react-native");
|
|
254
|
-
var import_react6 = require("react");
|
|
255
|
-
|
|
256
|
-
// src/core/utils/toIcon.ts
|
|
257
|
-
function toIcon(source) {
|
|
258
|
-
return source.startsWith("http") ? { source: { uri: source } } : { name: source };
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// src/core/hooks/useAppsInTossBridge.ts
|
|
262
|
-
function useAppsInTossBridge() {
|
|
263
|
-
const controller = (0, import_tds_react_native.useBridge)();
|
|
264
|
-
const appsInTossGlobals = getAppsInTossGlobals();
|
|
265
|
-
(0, import_react6.useEffect)(() => {
|
|
266
|
-
const isGameApp = appsInTossGlobals.webViewType === "game" || appsInTossGlobals.appType === "game";
|
|
267
|
-
controller.open({
|
|
268
|
-
serviceName: appsInTossGlobals.brandDisplayName,
|
|
269
|
-
icon: toIcon(appsInTossGlobals.brandIcon),
|
|
270
|
-
color: appsInTossGlobals.brandPrimaryColor,
|
|
271
|
-
colorMode: isGameApp ? "inverted" : appsInTossGlobals.brandBridgeColorMode,
|
|
272
|
-
onExited: () => {
|
|
273
|
-
import_native_modules3.appsInTossEvent.emit("entryMessageExited", void 0);
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
}, []);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
253
|
// src/components/RNAppContainer.tsx
|
|
280
|
-
var
|
|
281
|
-
var
|
|
254
|
+
var import_native_modules12 = require("@apps-in-toss/native-modules");
|
|
255
|
+
var import_react17 = require("react");
|
|
282
256
|
var import_react_native22 = require("react-native");
|
|
283
257
|
|
|
284
258
|
// src/components/GameInitializer.tsx
|
|
285
|
-
var
|
|
259
|
+
var import_native_modules6 = require("@apps-in-toss/native-modules");
|
|
286
260
|
var import_react_native10 = require("@granite-js/react-native");
|
|
287
|
-
var
|
|
261
|
+
var import_tds_react_native4 = require("@toss/tds-react-native");
|
|
288
262
|
var import_es_hangul = require("es-hangul");
|
|
289
|
-
var
|
|
263
|
+
var import_react11 = require("react");
|
|
290
264
|
var import_react_native11 = require("react-native");
|
|
291
265
|
|
|
292
266
|
// src/constant/game-center.ts
|
|
@@ -297,10 +271,10 @@ var GAME_MIN_VERSION = {
|
|
|
297
271
|
};
|
|
298
272
|
|
|
299
273
|
// src/hooks/useAppUpdateDialog.tsx
|
|
300
|
-
var
|
|
274
|
+
var import_native_modules3 = require("@apps-in-toss/native-modules");
|
|
301
275
|
var import_react_native7 = require("@granite-js/react-native");
|
|
302
|
-
var
|
|
303
|
-
var
|
|
276
|
+
var import_tds_react_native = require("@toss/tds-react-native");
|
|
277
|
+
var import_react6 = require("react");
|
|
304
278
|
|
|
305
279
|
// src/utils/market.ts
|
|
306
280
|
var import_react_native6 = require("react-native");
|
|
@@ -312,9 +286,9 @@ var getMarketLink = () => {
|
|
|
312
286
|
|
|
313
287
|
// src/hooks/useAppUpdateDialog.tsx
|
|
314
288
|
function useAppUpdateDialog() {
|
|
315
|
-
const { openConfirm } = (0,
|
|
289
|
+
const { openConfirm } = (0, import_tds_react_native.useDialog)();
|
|
316
290
|
const logging = useAppUpdateDialogLogging();
|
|
317
|
-
const openAppUpdateDialog = (0,
|
|
291
|
+
const openAppUpdateDialog = (0, import_react6.useCallback)(
|
|
318
292
|
async ({
|
|
319
293
|
title,
|
|
320
294
|
description,
|
|
@@ -356,7 +330,7 @@ function useAppUpdateDialogLogging() {
|
|
|
356
330
|
app_name: import_react_native7.Granite.appName
|
|
357
331
|
};
|
|
358
332
|
const logUpdateClick = () => {
|
|
359
|
-
|
|
333
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
360
334
|
log_name: UPDATE_DIALOG_CTA_CLICK_LOG_NAME,
|
|
361
335
|
log_type: "event",
|
|
362
336
|
params: {
|
|
@@ -368,7 +342,7 @@ function useAppUpdateDialogLogging() {
|
|
|
368
342
|
});
|
|
369
343
|
};
|
|
370
344
|
const logCloseClick = () => {
|
|
371
|
-
|
|
345
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
372
346
|
log_name: UPDATE_DIALOG_CTA_CLICK_LOG_NAME,
|
|
373
347
|
log_type: "event",
|
|
374
348
|
params: {
|
|
@@ -380,7 +354,7 @@ function useAppUpdateDialogLogging() {
|
|
|
380
354
|
});
|
|
381
355
|
};
|
|
382
356
|
const logDialogShow = () => {
|
|
383
|
-
|
|
357
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
384
358
|
log_name: UPDATE_DIALOG_LOG_NAME,
|
|
385
359
|
log_type: "popup",
|
|
386
360
|
params: {
|
|
@@ -393,13 +367,13 @@ function useAppUpdateDialogLogging() {
|
|
|
393
367
|
}
|
|
394
368
|
|
|
395
369
|
// src/hooks/useGameCenterProfile.ts
|
|
396
|
-
var
|
|
397
|
-
var
|
|
370
|
+
var import_native_modules5 = require("@apps-in-toss/native-modules");
|
|
371
|
+
var import_react10 = require("react");
|
|
398
372
|
|
|
399
373
|
// src/hooks/useErrorAlert.ts
|
|
400
374
|
var import_react_native8 = require("@granite-js/react-native");
|
|
401
|
-
var
|
|
402
|
-
var
|
|
375
|
+
var import_tds_react_native2 = require("@toss/tds-react-native");
|
|
376
|
+
var import_react7 = require("react");
|
|
403
377
|
|
|
404
378
|
// src/utils/error.ts
|
|
405
379
|
var DEFAULT_ERROR = {
|
|
@@ -409,8 +383,8 @@ var DEFAULT_ERROR = {
|
|
|
409
383
|
|
|
410
384
|
// src/hooks/useErrorAlert.ts
|
|
411
385
|
var useErrorAlert = () => {
|
|
412
|
-
const { openAlert } = (0,
|
|
413
|
-
const openErrorAlert = (0,
|
|
386
|
+
const { openAlert } = (0, import_tds_react_native2.useDialog)();
|
|
387
|
+
const openErrorAlert = (0, import_react7.useCallback)(async () => {
|
|
414
388
|
await openAlert({
|
|
415
389
|
title: DEFAULT_ERROR.title,
|
|
416
390
|
description: DEFAULT_ERROR.description
|
|
@@ -421,14 +395,14 @@ var useErrorAlert = () => {
|
|
|
421
395
|
};
|
|
422
396
|
|
|
423
397
|
// src/hooks/useTransparentWebview.tsx
|
|
424
|
-
var
|
|
398
|
+
var import_react8 = require("react");
|
|
425
399
|
|
|
426
400
|
// src/utils/openTransparentWebView.ts
|
|
427
401
|
var import_react_native9 = require("@granite-js/react-native");
|
|
428
402
|
|
|
429
403
|
// src/private.ts
|
|
430
|
-
var
|
|
431
|
-
var INTERNAL__onVisibilityChangedByTransparentServiceWeb =
|
|
404
|
+
var import_native_modules4 = require("@apps-in-toss/native-modules");
|
|
405
|
+
var INTERNAL__onVisibilityChangedByTransparentServiceWeb = import_native_modules4.onVisibilityChangedByTransparentServiceWeb;
|
|
432
406
|
|
|
433
407
|
// src/utils/openTransparentWebView.ts
|
|
434
408
|
var openTransparentWebView = ({
|
|
@@ -463,9 +437,9 @@ var openTransparentWebView = ({
|
|
|
463
437
|
|
|
464
438
|
// src/hooks/useTransparentWebview.tsx
|
|
465
439
|
var useTransparentWebview = () => {
|
|
466
|
-
const [isWebviewLoading, setIsWebviewLoading] = (0,
|
|
440
|
+
const [isWebviewLoading, setIsWebviewLoading] = (0, import_react8.useState)(false);
|
|
467
441
|
const { open: openErrorAlert } = useErrorAlert();
|
|
468
|
-
const _openTransparentWebview = (0,
|
|
442
|
+
const _openTransparentWebview = (0, import_react8.useCallback)(
|
|
469
443
|
({ webUrl, onClose, onError }) => {
|
|
470
444
|
if (isWebviewLoading) {
|
|
471
445
|
return;
|
|
@@ -497,18 +471,18 @@ var useTransparentWebview = () => {
|
|
|
497
471
|
};
|
|
498
472
|
|
|
499
473
|
// src/components/GameProfileToast.tsx
|
|
500
|
-
var
|
|
474
|
+
var import_tds_react_native3 = require("@toss/tds-react-native");
|
|
501
475
|
var import_private2 = require("@toss/tds-react-native/private");
|
|
502
|
-
var
|
|
476
|
+
var import_react9 = require("react");
|
|
503
477
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
504
478
|
var useGameProfileToast = () => {
|
|
505
479
|
const overlay = (0, import_private2.useOverlay)();
|
|
506
|
-
const openGameProfileToast = (0,
|
|
480
|
+
const openGameProfileToast = (0, import_react9.useCallback)(
|
|
507
481
|
(nickname, profileImageUri) => {
|
|
508
482
|
return new Promise((resolve) => {
|
|
509
483
|
overlay.open(({ isOpen, close, exit }) => {
|
|
510
484
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_private2.ColorPreferenceProvider, { colorPreference: "dark", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_private2.AdaptiveColorProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
511
|
-
|
|
485
|
+
import_tds_react_native3.Toast,
|
|
512
486
|
{
|
|
513
487
|
open: isOpen,
|
|
514
488
|
onClose: () => {
|
|
@@ -519,10 +493,10 @@ var useGameProfileToast = () => {
|
|
|
519
493
|
position: "top",
|
|
520
494
|
text: `${nickname}\uB2D8 \uBC18\uAC00\uC6CC\uC694!`,
|
|
521
495
|
icon: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
522
|
-
|
|
496
|
+
import_tds_react_native3.Asset.Image,
|
|
523
497
|
{
|
|
524
498
|
style: { borderRadius: 64, overflow: "hidden" },
|
|
525
|
-
frameShape:
|
|
499
|
+
frameShape: import_tds_react_native3.Asset.frameShape.CleanW32,
|
|
526
500
|
source: { uri: profileImageUri }
|
|
527
501
|
}
|
|
528
502
|
)
|
|
@@ -537,19 +511,19 @@ var useGameProfileToast = () => {
|
|
|
537
511
|
};
|
|
538
512
|
|
|
539
513
|
// src/hooks/useGameCenterProfile.ts
|
|
540
|
-
var useGameCenterProfile = (
|
|
541
|
-
const [profileData, setProfileData] = (0,
|
|
542
|
-
const [isProfileDataLoading, setIsProfileDataLoading] = (0,
|
|
543
|
-
const [isProfileDataRefetching, setIsProfileDataRefetching] = (0,
|
|
544
|
-
const shouldShowProfileLoadingOverlay = isProfileDataLoading
|
|
545
|
-
const shouldShowProfileNotFoundOverlay = profileData?.statusCode === "PROFILE_NOT_FOUND" &&
|
|
546
|
-
const canShowBottomSheetOrToast = !isProfileDataLoading
|
|
514
|
+
var useGameCenterProfile = () => {
|
|
515
|
+
const [profileData, setProfileData] = (0, import_react10.useState)(void 0);
|
|
516
|
+
const [isProfileDataLoading, setIsProfileDataLoading] = (0, import_react10.useState)(true);
|
|
517
|
+
const [isProfileDataRefetching, setIsProfileDataRefetching] = (0, import_react10.useState)(false);
|
|
518
|
+
const shouldShowProfileLoadingOverlay = isProfileDataLoading || isProfileDataRefetching;
|
|
519
|
+
const shouldShowProfileNotFoundOverlay = profileData?.statusCode === "PROFILE_NOT_FOUND" && !isProfileDataRefetching;
|
|
520
|
+
const canShowBottomSheetOrToast = !isProfileDataLoading;
|
|
547
521
|
const { openGameProfileToast } = useGameProfileToast();
|
|
548
522
|
const { open: openErrorAlert } = useErrorAlert();
|
|
549
523
|
const { open: openTransparentWebView2 } = useTransparentWebview();
|
|
550
|
-
const fetchProfileData = (0,
|
|
524
|
+
const fetchProfileData = (0, import_react10.useCallback)(async () => {
|
|
551
525
|
try {
|
|
552
|
-
const data = await (0,
|
|
526
|
+
const data = await (0, import_native_modules5.getGameCenterGameProfile)();
|
|
553
527
|
setProfileData(data);
|
|
554
528
|
setIsProfileDataLoading(false);
|
|
555
529
|
} catch (_) {
|
|
@@ -557,10 +531,10 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
|
557
531
|
setIsProfileDataLoading(false);
|
|
558
532
|
}
|
|
559
533
|
}, [openErrorAlert]);
|
|
560
|
-
const refetchProfileData = (0,
|
|
534
|
+
const refetchProfileData = (0, import_react10.useCallback)(async () => {
|
|
561
535
|
try {
|
|
562
536
|
setIsProfileDataRefetching(true);
|
|
563
|
-
const data = await (0,
|
|
537
|
+
const data = await (0, import_native_modules5.getGameCenterGameProfile)();
|
|
564
538
|
setProfileData(data);
|
|
565
539
|
setIsProfileDataRefetching(false);
|
|
566
540
|
if (data?.statusCode === "SUCCESS") {
|
|
@@ -571,7 +545,7 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
|
571
545
|
openErrorAlert();
|
|
572
546
|
}
|
|
573
547
|
}, [openErrorAlert, openGameProfileToast]);
|
|
574
|
-
const openProfileWebview = (0,
|
|
548
|
+
const openProfileWebview = (0, import_react10.useCallback)(() => {
|
|
575
549
|
openTransparentWebView2({
|
|
576
550
|
webUrl: `${GAME_PROFILE_WEBVIEW_URL}?appName=${getAppName()}&referrer=appsintoss.${getAppName()}`,
|
|
577
551
|
onClose: async () => {
|
|
@@ -605,7 +579,7 @@ var Z_INDEX = {
|
|
|
605
579
|
|
|
606
580
|
// src/components/GameInitializer.tsx
|
|
607
581
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
608
|
-
var GameInitializer = ({ children
|
|
582
|
+
var GameInitializer = ({ children }) => {
|
|
609
583
|
const {
|
|
610
584
|
profileData,
|
|
611
585
|
shouldShowProfileLoadingOverlay,
|
|
@@ -614,13 +588,13 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
|
|
|
614
588
|
openProfileWebview,
|
|
615
589
|
openGameProfileToast,
|
|
616
590
|
fetchProfileData
|
|
617
|
-
} = useGameCenterProfile(
|
|
618
|
-
const isCompletedFlow = (0,
|
|
591
|
+
} = useGameCenterProfile();
|
|
592
|
+
const isCompletedFlow = (0, import_react11.useRef)(false);
|
|
619
593
|
const { open: openAppUpdateDialog } = useAppUpdateDialog();
|
|
620
|
-
(0,
|
|
594
|
+
(0, import_react11.useEffect)(() => {
|
|
621
595
|
fetchProfileData();
|
|
622
596
|
}, []);
|
|
623
|
-
(0,
|
|
597
|
+
(0, import_react11.useEffect)(() => {
|
|
624
598
|
const handleGameProfileFlow = async () => {
|
|
625
599
|
if (!canShowBottomSheetOrToast) {
|
|
626
600
|
return;
|
|
@@ -629,7 +603,7 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
|
|
|
629
603
|
return;
|
|
630
604
|
}
|
|
631
605
|
isCompletedFlow.current = true;
|
|
632
|
-
if (!(0,
|
|
606
|
+
if (!(0, import_native_modules6.isMinVersionSupported)(GAME_MIN_VERSION)) {
|
|
633
607
|
openAppUpdateDialog({
|
|
634
608
|
title: `${(0, import_es_hangul.josa)(getAppsInTossGlobals().brandDisplayName, "\uC744/\uB97C")} \uD558\uB824\uBA74
|
|
635
609
|
\uC571\uC744 \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694`,
|
|
@@ -656,7 +630,7 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
|
|
|
656
630
|
openProfileWebview,
|
|
657
631
|
profileData
|
|
658
632
|
]);
|
|
659
|
-
if (!(0,
|
|
633
|
+
if (!(0, import_native_modules6.isMinVersionSupported)(GAME_MIN_VERSION)) {
|
|
660
634
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
661
635
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native11.View, { style: { flex: 1, position: "relative" }, children }),
|
|
662
636
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
@@ -690,7 +664,7 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
|
|
|
690
664
|
alignItems: "center",
|
|
691
665
|
backgroundColor: "rgba(0, 0, 0, 0.2)"
|
|
692
666
|
},
|
|
693
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
667
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_tds_react_native4.Loader, { size: "large", type: "light" })
|
|
694
668
|
}
|
|
695
669
|
)
|
|
696
670
|
] });
|
|
@@ -726,10 +700,10 @@ var overlayStyle = {
|
|
|
726
700
|
var import_private5 = require("@toss/tds-react-native/private");
|
|
727
701
|
|
|
728
702
|
// src/components/NavigationBar/RNNavigationBar/hooks/useHardwareBackPress.ts
|
|
729
|
-
var
|
|
703
|
+
var import_react12 = require("react");
|
|
730
704
|
var import_react_native12 = require("react-native");
|
|
731
705
|
function useHardwareBackPress(handler) {
|
|
732
|
-
(0,
|
|
706
|
+
(0, import_react12.useEffect)(() => {
|
|
733
707
|
const handleBackPress = () => {
|
|
734
708
|
handler();
|
|
735
709
|
return true;
|
|
@@ -741,16 +715,16 @@ function useHardwareBackPress(handler) {
|
|
|
741
715
|
|
|
742
716
|
// src/components/NavigationBar/RNNavigationBar/hooks/useNavigationEvent.ts
|
|
743
717
|
var import_react_native14 = require("@granite-js/react-native");
|
|
744
|
-
var
|
|
718
|
+
var import_react14 = require("react");
|
|
745
719
|
|
|
746
720
|
// src/components/NavigationBar/RNNavigationBar/hooks/useCloseConfirm.ts
|
|
747
|
-
var
|
|
721
|
+
var import_tds_react_native5 = require("@toss/tds-react-native");
|
|
748
722
|
var import_es_hangul2 = require("es-hangul");
|
|
749
|
-
var
|
|
723
|
+
var import_react13 = require("react");
|
|
750
724
|
function useCloseConfirm() {
|
|
751
725
|
const { brandDisplayName } = getAppsInTossGlobals();
|
|
752
|
-
const { openConfirm } = (0,
|
|
753
|
-
return (0,
|
|
726
|
+
const { openConfirm } = (0, import_tds_react_native5.useDialog)();
|
|
727
|
+
return (0, import_react13.useCallback)(async ({ onEntered }) => {
|
|
754
728
|
return await openConfirm({
|
|
755
729
|
title: `${(0, import_es_hangul2.josa)(brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
|
|
756
730
|
leftButton: "\uCDE8\uC18C",
|
|
@@ -762,7 +736,7 @@ function useCloseConfirm() {
|
|
|
762
736
|
}
|
|
763
737
|
|
|
764
738
|
// src/components/NavigationBar/common/useNavigationBarLogging.tsx
|
|
765
|
-
var
|
|
739
|
+
var import_native_modules7 = require("@apps-in-toss/native-modules");
|
|
766
740
|
var import_react_native13 = require("@granite-js/react-native");
|
|
767
741
|
var NAVI_BAR_IMPRESSION_SCHEMA_ID = 1596837;
|
|
768
742
|
var NAVI_BAR_IMPRESSION_LOG_NAME = "appsintoss_app_visit__common_module::impression__navigation_bar";
|
|
@@ -781,7 +755,7 @@ function useNavigationBarLogging() {
|
|
|
781
755
|
app_name: import_react_native13.Granite.appName
|
|
782
756
|
};
|
|
783
757
|
const logNavBarImpression = (naviBarConfig) => {
|
|
784
|
-
|
|
758
|
+
import_native_modules7.INTERNAL__module.tossCoreEventLog({
|
|
785
759
|
log_name: NAVI_BAR_IMPRESSION_LOG_NAME,
|
|
786
760
|
log_type: "event",
|
|
787
761
|
params: {
|
|
@@ -793,7 +767,7 @@ function useNavigationBarLogging() {
|
|
|
793
767
|
});
|
|
794
768
|
};
|
|
795
769
|
const logHomeButtonClick = () => {
|
|
796
|
-
|
|
770
|
+
import_native_modules7.INTERNAL__module.tossCoreEventLog({
|
|
797
771
|
log_name: HOME_BUTTON_CLICK_LOG_NAME,
|
|
798
772
|
log_type: "event",
|
|
799
773
|
params: {
|
|
@@ -804,7 +778,7 @@ function useNavigationBarLogging() {
|
|
|
804
778
|
});
|
|
805
779
|
};
|
|
806
780
|
const logCloseButtonClick = () => {
|
|
807
|
-
|
|
781
|
+
import_native_modules7.INTERNAL__module.tossCoreEventLog({
|
|
808
782
|
log_name: CLOSE_BUTTON_CLICK_LOG_NAME,
|
|
809
783
|
log_type: "event",
|
|
810
784
|
params: {
|
|
@@ -815,7 +789,7 @@ function useNavigationBarLogging() {
|
|
|
815
789
|
});
|
|
816
790
|
};
|
|
817
791
|
const logClosePopupShow = () => {
|
|
818
|
-
|
|
792
|
+
import_native_modules7.INTERNAL__module.tossCoreEventLog({
|
|
819
793
|
log_name: CLOSE_POPUP_SHOW_LOG_NAME,
|
|
820
794
|
log_type: "popup",
|
|
821
795
|
params: {
|
|
@@ -825,7 +799,7 @@ function useNavigationBarLogging() {
|
|
|
825
799
|
});
|
|
826
800
|
};
|
|
827
801
|
const logClosePopupCtaClick = (confirm) => {
|
|
828
|
-
|
|
802
|
+
import_native_modules7.INTERNAL__module.tossCoreEventLog({
|
|
829
803
|
log_name: CLOSE_POPUP_CTA_CLICK_LOG_NAME,
|
|
830
804
|
log_type: "event",
|
|
831
805
|
params: {
|
|
@@ -852,7 +826,7 @@ function useNavigationEvent() {
|
|
|
852
826
|
const navigation = (0, import_react_native14.useNavigation)();
|
|
853
827
|
const closeConfirm = useCloseConfirm();
|
|
854
828
|
const { captureExitLog } = useCaptureExitLog();
|
|
855
|
-
return (0,
|
|
829
|
+
return (0, import_react14.useMemo)(() => {
|
|
856
830
|
const close = async () => {
|
|
857
831
|
const hasConfirmed = await closeConfirm({
|
|
858
832
|
onEntered: logging.closePopupShow
|
|
@@ -886,25 +860,25 @@ function useNavigationEvent() {
|
|
|
886
860
|
}
|
|
887
861
|
|
|
888
862
|
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
889
|
-
var
|
|
863
|
+
var import_native_modules11 = require("@apps-in-toss/native-modules");
|
|
890
864
|
var import_react_native20 = require("@granite-js/react-native");
|
|
891
|
-
var
|
|
865
|
+
var import_tds_react_native8 = require("@toss/tds-react-native");
|
|
892
866
|
var import_private4 = require("@toss/tds-react-native/private");
|
|
893
|
-
var
|
|
867
|
+
var import_react15 = require("react");
|
|
894
868
|
|
|
895
869
|
// src/core/hooks/useMoreButtonBottomSheet/AppShareListMenu.tsx
|
|
896
|
-
var
|
|
870
|
+
var import_native_modules9 = require("@apps-in-toss/native-modules");
|
|
897
871
|
var import_react_native17 = require("@granite-js/react-native");
|
|
898
|
-
var
|
|
872
|
+
var import_tds_react_native7 = require("@toss/tds-react-native");
|
|
899
873
|
var import_react_native18 = require("react-native");
|
|
900
874
|
|
|
901
875
|
// src/core/hooks/useMoreButtonBottomSheet/Menu.tsx
|
|
902
|
-
var
|
|
876
|
+
var import_tds_react_native6 = require("@toss/tds-react-native");
|
|
903
877
|
var import_private3 = require("@toss/tds-react-native/private");
|
|
904
878
|
var import_react_native16 = require("react-native");
|
|
905
879
|
|
|
906
880
|
// src/core/hooks/useMoreButtonBottomSheet/useMoreButtonBottomSheetLogging.tsx
|
|
907
|
-
var
|
|
881
|
+
var import_native_modules8 = require("@apps-in-toss/native-modules");
|
|
908
882
|
var import_react_native15 = require("@granite-js/react-native");
|
|
909
883
|
var BOTTOM_SHEET_SCHEMA_ID = 1596825;
|
|
910
884
|
var BOTTOM_SHEET_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__more";
|
|
@@ -921,7 +895,7 @@ function useMoreButtonBottomSheetLogging() {
|
|
|
921
895
|
app_name: import_react_native15.Granite.appName
|
|
922
896
|
};
|
|
923
897
|
const logBottomSheetShow = () => {
|
|
924
|
-
|
|
898
|
+
import_native_modules8.INTERNAL__module.tossCoreEventLog({
|
|
925
899
|
log_name: BOTTOM_SHEET_LOG_NAME,
|
|
926
900
|
log_type: "popup",
|
|
927
901
|
params: {
|
|
@@ -931,7 +905,7 @@ function useMoreButtonBottomSheetLogging() {
|
|
|
931
905
|
});
|
|
932
906
|
};
|
|
933
907
|
const logBottomSheetOpen = () => {
|
|
934
|
-
|
|
908
|
+
import_native_modules8.INTERNAL__module.tossCoreEventLog({
|
|
935
909
|
log_name: BOTTOM_SHEET_OPEN_LOG_NAME,
|
|
936
910
|
log_type: "event",
|
|
937
911
|
params: {
|
|
@@ -942,7 +916,7 @@ function useMoreButtonBottomSheetLogging() {
|
|
|
942
916
|
});
|
|
943
917
|
};
|
|
944
918
|
const logBottomSheetCloseClick = () => {
|
|
945
|
-
|
|
919
|
+
import_native_modules8.INTERNAL__module.tossCoreEventLog({
|
|
946
920
|
log_name: BOTTOM_SHEET_CLOSE_CLICK_LOG_NAME,
|
|
947
921
|
log_type: "event",
|
|
948
922
|
params: {
|
|
@@ -953,7 +927,7 @@ function useMoreButtonBottomSheetLogging() {
|
|
|
953
927
|
});
|
|
954
928
|
};
|
|
955
929
|
const logBottomSheetMenuClick = ({ title }) => {
|
|
956
|
-
|
|
930
|
+
import_native_modules8.INTERNAL__module.tossCoreEventLog({
|
|
957
931
|
log_name: BOTTOM_SHEET_MENU_CLICK_LOG_NAME,
|
|
958
932
|
log_type: "event",
|
|
959
933
|
params: {
|
|
@@ -982,7 +956,7 @@ function Menu({ title, iconURL, onPress }) {
|
|
|
982
956
|
const brandPrimaryColorRGB = hexToRGB(globals.brandPrimaryColor);
|
|
983
957
|
const iconBackgroundColor = brandPrimaryColorRGB ? `rgba(${brandPrimaryColorRGB.join(",")},0.1)` : adaptive.grey100;
|
|
984
958
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
985
|
-
|
|
959
|
+
import_tds_react_native6.ListRow,
|
|
986
960
|
{
|
|
987
961
|
left: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
988
962
|
import_react_native16.View,
|
|
@@ -998,14 +972,14 @@ function Menu({ title, iconURL, onPress }) {
|
|
|
998
972
|
backgroundColor: iconBackgroundColor
|
|
999
973
|
},
|
|
1000
974
|
children: iconName ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1001
|
-
|
|
975
|
+
import_tds_react_native6.Asset.Icon,
|
|
1002
976
|
{
|
|
1003
977
|
frameShape: { width: 20, height: 20 },
|
|
1004
978
|
color: globals.brandPrimaryColor,
|
|
1005
979
|
name: iconName
|
|
1006
980
|
}
|
|
1007
981
|
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1008
|
-
|
|
982
|
+
import_tds_react_native6.Asset.Image,
|
|
1009
983
|
{
|
|
1010
984
|
frameShape: { width: 20, height: 20 },
|
|
1011
985
|
source: { uri: iconURL }
|
|
@@ -1014,7 +988,7 @@ function Menu({ title, iconURL, onPress }) {
|
|
|
1014
988
|
}
|
|
1015
989
|
),
|
|
1016
990
|
contents: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1017
|
-
|
|
991
|
+
import_tds_react_native6.ListRow.Texts,
|
|
1018
992
|
{
|
|
1019
993
|
type: "1RowTypeA",
|
|
1020
994
|
top: title,
|
|
@@ -1066,8 +1040,8 @@ var APP_SHARE_MENU_INFO = {
|
|
|
1066
1040
|
};
|
|
1067
1041
|
function AppShareListMenu() {
|
|
1068
1042
|
const initialScheme = (0, import_react_native17.getSchemeUri)();
|
|
1069
|
-
const isSandbox = (0,
|
|
1070
|
-
const { openConfirm } = (0,
|
|
1043
|
+
const isSandbox = (0, import_native_modules9.getOperationalEnvironment)() === "sandbox";
|
|
1044
|
+
const { openConfirm } = (0, import_tds_react_native7.useDialog)();
|
|
1071
1045
|
const schemeForShare = addParamsToUrl(initialScheme, {
|
|
1072
1046
|
referrer: SHARE_SCHEME_REFERRER
|
|
1073
1047
|
});
|
|
@@ -1097,12 +1071,12 @@ function AppShareListMenu() {
|
|
|
1097
1071
|
}
|
|
1098
1072
|
|
|
1099
1073
|
// src/core/hooks/useMoreButtonBottomSheet/PermissionsMenu.tsx
|
|
1100
|
-
var
|
|
1074
|
+
var import_native_modules10 = require("@apps-in-toss/native-modules");
|
|
1101
1075
|
var import_react_native19 = require("@granite-js/react-native");
|
|
1102
1076
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1103
1077
|
function PermissionsMenu() {
|
|
1104
1078
|
const globals = getAppsInTossGlobals();
|
|
1105
|
-
if ((0,
|
|
1079
|
+
if ((0, import_native_modules10.getOperationalEnvironment)() === "sandbox") {
|
|
1106
1080
|
return null;
|
|
1107
1081
|
}
|
|
1108
1082
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
@@ -1143,19 +1117,19 @@ var MIN_VERSION = {
|
|
|
1143
1117
|
function useMoreButtonBottomSheet() {
|
|
1144
1118
|
const globals = getAppsInTossGlobals();
|
|
1145
1119
|
const adaptive = (0, import_private4.useAdaptive)();
|
|
1146
|
-
const [itemList, setItemList] = (0,
|
|
1120
|
+
const [itemList, setItemList] = (0, import_react15.useState)([]);
|
|
1147
1121
|
const appUpdateDialog = useAppUpdateDialog();
|
|
1148
1122
|
const logging = useMoreButtonBottomSheetLogging();
|
|
1149
1123
|
const overlay = (0, import_private4.useOverlay)();
|
|
1150
1124
|
const title = ensureValue(globals.brandDisplayName, "displayName");
|
|
1151
|
-
const isBottomSheetSupported = (0,
|
|
1152
|
-
const isShareListMenuSupported = (0,
|
|
1153
|
-
const [isPermissionsMenuSupported, setIsPermissionsMenuSupported] = (0,
|
|
1154
|
-
(0,
|
|
1125
|
+
const isBottomSheetSupported = (0, import_native_modules11.isMinVersionSupported)(MIN_VERSION.BOTTOM_SHEET);
|
|
1126
|
+
const isShareListMenuSupported = (0, import_native_modules11.isMinVersionSupported)(MIN_VERSION.SHARE_LIST_MENU);
|
|
1127
|
+
const [isPermissionsMenuSupported, setIsPermissionsMenuSupported] = (0, import_react15.useState)(false);
|
|
1128
|
+
(0, import_react15.useEffect)(() => {
|
|
1155
1129
|
if (!isBottomSheetSupported) {
|
|
1156
1130
|
return;
|
|
1157
1131
|
}
|
|
1158
|
-
|
|
1132
|
+
import_native_modules11.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1159
1133
|
APP_BRIDGE_METHOD_NAME,
|
|
1160
1134
|
{},
|
|
1161
1135
|
{
|
|
@@ -1163,8 +1137,8 @@ function useMoreButtonBottomSheet() {
|
|
|
1163
1137
|
onError: (error) => console.error("\uBA54\uB274 \uBAA9\uB85D\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:", error)
|
|
1164
1138
|
}
|
|
1165
1139
|
);
|
|
1166
|
-
if ((0,
|
|
1167
|
-
|
|
1140
|
+
if ((0, import_native_modules11.isMinVersionSupported)(MIN_VERSION.PERMISSIONS_MENU)) {
|
|
1141
|
+
import_native_modules11.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1168
1142
|
"getAllPermission",
|
|
1169
1143
|
{},
|
|
1170
1144
|
{
|
|
@@ -1189,17 +1163,17 @@ function useMoreButtonBottomSheet() {
|
|
|
1189
1163
|
close();
|
|
1190
1164
|
};
|
|
1191
1165
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BottomSheetImpressionArea, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1192
|
-
|
|
1166
|
+
import_tds_react_native8.BottomSheet.Root,
|
|
1193
1167
|
{
|
|
1194
1168
|
header: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1195
|
-
|
|
1169
|
+
import_tds_react_native8.ListHeader,
|
|
1196
1170
|
{
|
|
1197
|
-
title: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1171
|
+
title: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tds_react_native8.ListHeader.TitleParagraph, { color: adaptive.grey800, fontWeight: "bold", typography: "t5", children: title })
|
|
1198
1172
|
}
|
|
1199
1173
|
),
|
|
1200
1174
|
open: isOpen,
|
|
1201
1175
|
cta: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1202
|
-
|
|
1176
|
+
import_tds_react_native8.BottomSheet.CTA,
|
|
1203
1177
|
{
|
|
1204
1178
|
size: "large",
|
|
1205
1179
|
type: "dark",
|
|
@@ -1212,7 +1186,7 @@ function useMoreButtonBottomSheet() {
|
|
|
1212
1186
|
),
|
|
1213
1187
|
onClose: handleClose,
|
|
1214
1188
|
onExited: exit,
|
|
1215
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1189
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_tds_react_native8.List, { rowSeparator: "none", children: [
|
|
1216
1190
|
itemList.map(
|
|
1217
1191
|
(item) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1218
1192
|
Menu,
|
|
@@ -1235,22 +1209,27 @@ function useMoreButtonBottomSheet() {
|
|
|
1235
1209
|
}
|
|
1236
1210
|
function BottomSheetImpressionArea({ children }) {
|
|
1237
1211
|
const logging = useMoreButtonBottomSheetLogging();
|
|
1238
|
-
(0,
|
|
1212
|
+
(0, import_react15.useEffect)(() => {
|
|
1239
1213
|
logging.show();
|
|
1240
1214
|
}, [logging]);
|
|
1241
1215
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children });
|
|
1242
1216
|
}
|
|
1243
1217
|
|
|
1218
|
+
// src/core/utils/toIcon.ts
|
|
1219
|
+
function toIcon(source) {
|
|
1220
|
+
return source.startsWith("http") ? { source: { uri: source } } : { name: source };
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1244
1223
|
// src/components/NavigationBar/common/NavigationBarImpressionArea.tsx
|
|
1245
|
-
var
|
|
1224
|
+
var import_react16 = require("react");
|
|
1246
1225
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1247
1226
|
function NavigationBarImpressionArea({
|
|
1248
1227
|
children,
|
|
1249
1228
|
withHomeButton
|
|
1250
1229
|
}) {
|
|
1251
|
-
const hasLogged = (0,
|
|
1230
|
+
const hasLogged = (0, import_react16.useRef)(false);
|
|
1252
1231
|
const logging = useNavigationBarLogging();
|
|
1253
|
-
(0,
|
|
1232
|
+
(0, import_react16.useEffect)(() => {
|
|
1254
1233
|
if (hasLogged.current === false) {
|
|
1255
1234
|
logging.navBarImpression({ home_icon_yn: withHomeButton ? "Y" : "N" });
|
|
1256
1235
|
hasLogged.current = true;
|
|
@@ -1289,7 +1268,7 @@ function DefaultNavigationBar() {
|
|
|
1289
1268
|
|
|
1290
1269
|
// src/components/NavigationBar/RNNavigationBar/Game.tsx
|
|
1291
1270
|
var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
|
|
1292
|
-
var
|
|
1271
|
+
var import_tds_react_native9 = require("@toss/tds-react-native");
|
|
1293
1272
|
var import_private6 = require("@toss/tds-react-native/private");
|
|
1294
1273
|
var import_react_native21 = require("react-native");
|
|
1295
1274
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
@@ -1301,7 +1280,7 @@ function GameNavigationBar() {
|
|
|
1301
1280
|
const { right: safeAreaRight } = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
|
|
1302
1281
|
useHardwareBackPress(navigationEvent.handleBack);
|
|
1303
1282
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
1304
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1283
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_tds_react_native9.PageNavbar, { preference: { type: "none" } }),
|
|
1305
1284
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1306
1285
|
import_react_native21.View,
|
|
1307
1286
|
{
|
|
@@ -1357,26 +1336,18 @@ function RNAppContainer({ children }) {
|
|
|
1357
1336
|
}
|
|
1358
1337
|
}
|
|
1359
1338
|
function GameAppContainer({ children }) {
|
|
1360
|
-
|
|
1361
|
-
(0, import_react18.useEffect)(() => {
|
|
1339
|
+
(0, import_react17.useEffect)(() => {
|
|
1362
1340
|
if (import_react_native22.Platform.OS === "ios") {
|
|
1363
|
-
(0,
|
|
1341
|
+
(0, import_native_modules12.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1364
1342
|
return () => {
|
|
1365
|
-
(0,
|
|
1343
|
+
(0, import_native_modules12.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
1366
1344
|
};
|
|
1367
1345
|
}
|
|
1368
1346
|
return;
|
|
1369
1347
|
}, []);
|
|
1370
|
-
(0, import_react18.useEffect)(() => {
|
|
1371
|
-
import_native_modules13.appsInTossEvent.addEventListener("entryMessageExited", {
|
|
1372
|
-
onEvent: () => {
|
|
1373
|
-
setIsEntryMessageExited(true);
|
|
1374
|
-
}
|
|
1375
|
-
});
|
|
1376
|
-
}, []);
|
|
1377
1348
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
1378
1349
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RNNavigationBar.Game, {}),
|
|
1379
|
-
(0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GameInitializer, {
|
|
1350
|
+
(0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GameInitializer, { children }) : children
|
|
1380
1351
|
] });
|
|
1381
1352
|
}
|
|
1382
1353
|
function GeneralAppContainer({ children }) {
|
|
@@ -1389,7 +1360,7 @@ function GeneralAppContainer({ children }) {
|
|
|
1389
1360
|
// src/core/registerApp.tsx
|
|
1390
1361
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1391
1362
|
function AppsInTossContainer(Container, { children, ...initialProps }) {
|
|
1392
|
-
if (!(0,
|
|
1363
|
+
if (!(0, import_native_modules13.isMinVersionSupported)({
|
|
1393
1364
|
android: "5.220.0",
|
|
1394
1365
|
ios: "5.221.0"
|
|
1395
1366
|
})) {
|
|
@@ -1403,25 +1374,21 @@ function AppsInTossContainer(Container, { children, ...initialProps }) {
|
|
|
1403
1374
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.StayTime, {}),
|
|
1404
1375
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.Entry, {}),
|
|
1405
1376
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.System, { ...initialProps }),
|
|
1406
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1377
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tds_react_native10.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children }) })
|
|
1407
1378
|
] });
|
|
1408
1379
|
}
|
|
1409
|
-
function TDSContainer({ children }) {
|
|
1410
|
-
useAppsInTossBridge();
|
|
1411
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children });
|
|
1412
|
-
}
|
|
1413
1380
|
function registerApp(container, { context, analytics }) {
|
|
1414
1381
|
const appName = getAppName();
|
|
1415
1382
|
const isRegistered = import_react_native24.AppRegistry.getAppKeys().includes(appName);
|
|
1416
1383
|
if (!isRegistered) {
|
|
1417
1384
|
import_analytics.Analytics.init({
|
|
1418
|
-
logger: (params) => void (0,
|
|
1385
|
+
logger: (params) => void (0, import_native_modules13.eventLog)(params),
|
|
1419
1386
|
debug: analytics?.debug ?? __DEV__
|
|
1420
1387
|
});
|
|
1421
1388
|
const App = import_react_native23.Granite.registerApp(AppsInTossContainer.bind(null, container), {
|
|
1422
1389
|
appName,
|
|
1423
1390
|
context,
|
|
1424
|
-
setIosSwipeGestureEnabled:
|
|
1391
|
+
setIosSwipeGestureEnabled: import_native_modules13.setIosSwipeGestureEnabled,
|
|
1425
1392
|
router: {
|
|
1426
1393
|
screenContainer: AppsInTossScreenContainer,
|
|
1427
1394
|
defaultScreenOption: {
|
|
@@ -1452,42 +1419,42 @@ var AppsInToss = {
|
|
|
1452
1419
|
};
|
|
1453
1420
|
|
|
1454
1421
|
// src/components/WebView.tsx
|
|
1455
|
-
var
|
|
1422
|
+
var import_native_modules22 = require("@apps-in-toss/native-modules");
|
|
1456
1423
|
var appsInTossAsyncBridges = __toESM(require("@apps-in-toss/native-modules/async-bridges"), 1);
|
|
1457
1424
|
var appsInTossConstantBridges = __toESM(require("@apps-in-toss/native-modules/constant-bridges"), 1);
|
|
1458
1425
|
var appsInTossEventBridges = __toESM(require("@apps-in-toss/native-modules/event-bridges"), 1);
|
|
1459
1426
|
var import_react_native_safe_area_context4 = require("@granite-js/native/react-native-safe-area-context");
|
|
1460
|
-
var
|
|
1461
|
-
var
|
|
1427
|
+
var import_react_native37 = require("@granite-js/react-native");
|
|
1428
|
+
var import_tds_react_native14 = require("@toss/tds-react-native");
|
|
1462
1429
|
var import_private9 = require("@toss/tds-react-native/private");
|
|
1463
|
-
var
|
|
1464
|
-
var
|
|
1430
|
+
var import_react28 = require("react");
|
|
1431
|
+
var import_react_native38 = require("react-native");
|
|
1465
1432
|
|
|
1466
1433
|
// src/components/GameWebView.tsx
|
|
1467
|
-
var
|
|
1434
|
+
var import_native_modules14 = require("@apps-in-toss/native-modules");
|
|
1468
1435
|
var import_react_native_webview = require("@granite-js/native/react-native-webview");
|
|
1469
|
-
var
|
|
1436
|
+
var import_react19 = require("react");
|
|
1470
1437
|
var import_react_native27 = require("react-native");
|
|
1471
1438
|
|
|
1472
1439
|
// src/components/NavigationBar/GameWebviewNavigationBar.tsx
|
|
1473
1440
|
var import_react_native_safe_area_context2 = require("@granite-js/native/react-native-safe-area-context");
|
|
1474
1441
|
var import_react_native25 = require("@granite-js/react-native");
|
|
1475
|
-
var
|
|
1442
|
+
var import_tds_react_native11 = require("@toss/tds-react-native");
|
|
1476
1443
|
var import_private7 = require("@toss/tds-react-native/private");
|
|
1477
1444
|
var import_es_hangul3 = require("es-hangul");
|
|
1478
|
-
var
|
|
1445
|
+
var import_react18 = require("react");
|
|
1479
1446
|
var import_react_native26 = require("react-native");
|
|
1480
1447
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1481
1448
|
function GameWebviewNavigationBar() {
|
|
1482
1449
|
const safeAreaTop = (0, import_private7.useSafeAreaTop)();
|
|
1483
|
-
const { openConfirm } = (0,
|
|
1450
|
+
const { openConfirm } = (0, import_tds_react_native11.useDialog)();
|
|
1484
1451
|
const { captureExitLog } = useCaptureExitLog();
|
|
1485
1452
|
const global2 = getAppsInTossGlobals();
|
|
1486
1453
|
const logging = useNavigationBarLogging();
|
|
1487
1454
|
const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
|
|
1488
1455
|
const { navigationRightButton } = useNavigationBarContext();
|
|
1489
1456
|
const { right: safeAreaRight } = (0, import_react_native_safe_area_context2.useSafeAreaInsets)();
|
|
1490
|
-
const handleGameWebviewClose = (0,
|
|
1457
|
+
const handleGameWebviewClose = (0, import_react18.useCallback)(async () => {
|
|
1491
1458
|
logging.closeButtonClick();
|
|
1492
1459
|
const isConfirmed = await openConfirm({
|
|
1493
1460
|
title: `${(0, import_es_hangul3.josa)(global2.brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
|
|
@@ -1503,7 +1470,7 @@ function GameWebviewNavigationBar() {
|
|
|
1503
1470
|
}
|
|
1504
1471
|
}, [captureExitLog, global2.brandDisplayName, logging, openConfirm]);
|
|
1505
1472
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
1506
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1473
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native11.PageNavbar, { preference: { type: "none" } }),
|
|
1507
1474
|
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1508
1475
|
import_react_native26.View,
|
|
1509
1476
|
{
|
|
@@ -1538,52 +1505,44 @@ function GameWebviewNavigationBar() {
|
|
|
1538
1505
|
|
|
1539
1506
|
// src/components/GameWebView.tsx
|
|
1540
1507
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1541
|
-
var GameWebView = (0,
|
|
1542
|
-
|
|
1543
|
-
(0, import_react20.useEffect)(() => {
|
|
1508
|
+
var GameWebView = (0, import_react19.forwardRef)(function GameWebView2(props, ref) {
|
|
1509
|
+
(0, import_react19.useEffect)(() => {
|
|
1544
1510
|
if (import_react_native27.Platform.OS === "ios") {
|
|
1545
|
-
(0,
|
|
1511
|
+
(0, import_native_modules14.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1546
1512
|
return () => {
|
|
1547
|
-
(0,
|
|
1513
|
+
(0, import_native_modules14.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
1548
1514
|
};
|
|
1549
1515
|
}
|
|
1550
1516
|
return;
|
|
1551
1517
|
}, []);
|
|
1552
|
-
(0, import_react20.useEffect)(() => {
|
|
1553
|
-
import_native_modules15.appsInTossEvent.addEventListener("entryMessageExited", {
|
|
1554
|
-
onEvent: () => {
|
|
1555
|
-
setIsEntryMessageExited(true);
|
|
1556
|
-
}
|
|
1557
|
-
});
|
|
1558
|
-
}, []);
|
|
1559
1518
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1560
1519
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameWebviewNavigationBar, {}),
|
|
1561
|
-
(0,
|
|
1520
|
+
(0, import_native_modules14.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameInitializer, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props })
|
|
1562
1521
|
] });
|
|
1563
1522
|
});
|
|
1564
1523
|
|
|
1565
1524
|
// src/components/PartnerWebView.tsx
|
|
1566
1525
|
var import_react_native_webview2 = require("@granite-js/native/react-native-webview");
|
|
1567
|
-
var
|
|
1526
|
+
var import_react21 = require("react");
|
|
1568
1527
|
|
|
1569
1528
|
// src/components/NavigationBar/PartnerWebviewNavigationBar.tsx
|
|
1570
1529
|
var import_react_native28 = require("@granite-js/react-native");
|
|
1571
|
-
var
|
|
1530
|
+
var import_tds_react_native12 = require("@toss/tds-react-native");
|
|
1572
1531
|
var import_private8 = require("@toss/tds-react-native/private");
|
|
1573
1532
|
var import_es_hangul4 = require("es-hangul");
|
|
1574
|
-
var
|
|
1533
|
+
var import_react20 = require("react");
|
|
1575
1534
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1576
1535
|
function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
|
|
1577
1536
|
const globals = getAppsInTossGlobals();
|
|
1578
1537
|
const { captureExitLog } = useCaptureExitLog();
|
|
1579
1538
|
const logging = useNavigationBarLogging();
|
|
1580
|
-
const { openConfirm } = (0,
|
|
1539
|
+
const { openConfirm } = (0, import_tds_react_native12.useDialog)();
|
|
1581
1540
|
const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
|
|
1582
1541
|
const parsedNavigationBar = globals.navigationBar != null ? safeParseNavigationBar(globals.navigationBar) : null;
|
|
1583
1542
|
const withHomeButton = parsedNavigationBar?.withHomeButton ?? false;
|
|
1584
1543
|
const withBackButton = parsedNavigationBar?.withBackButton ?? true;
|
|
1585
1544
|
const { navigationRightButton } = useNavigationBarContext();
|
|
1586
|
-
const handleClose = (0,
|
|
1545
|
+
const handleClose = (0, import_react20.useCallback)(async () => {
|
|
1587
1546
|
logging.closeButtonClick();
|
|
1588
1547
|
const isConfirmed = await openConfirm({
|
|
1589
1548
|
title: `${(0, import_es_hangul4.josa)(globals.brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
|
|
@@ -1617,7 +1576,7 @@ function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
|
|
|
1617
1576
|
|
|
1618
1577
|
// src/components/PartnerWebView.tsx
|
|
1619
1578
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1620
|
-
var PartnerWebView = (0,
|
|
1579
|
+
var PartnerWebView = (0, import_react21.forwardRef)(function PartnerWebViewScreen({ onBackButtonClick, onHomeButtonClick, ...webViewProps }, ref) {
|
|
1621
1580
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
1622
1581
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PartnerWebviewNavigationBar, { onBackButtonClick, onHomeButtonClick }),
|
|
1623
1582
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_native_webview2.WebView, { ref, ...webViewProps, style: { flex: 1 } })
|
|
@@ -1637,8 +1596,362 @@ function convertIntentURL(url) {
|
|
|
1637
1596
|
return `${scheme}://${url.hostname}${url.pathname}${url.search}`;
|
|
1638
1597
|
}
|
|
1639
1598
|
|
|
1599
|
+
// src/ads/fetchTossAd.ts
|
|
1600
|
+
var import_native_modules15 = require("@apps-in-toss/native-modules");
|
|
1601
|
+
|
|
1602
|
+
// ../../.yarn/cache/es-toolkit-npm-1.34.1-4cd6371dcb-aab6d07be3.zip/node_modules/es-toolkit/dist/function/noop.mjs
|
|
1603
|
+
function noop() {
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
// src/ads/generateSessionId.ts
|
|
1607
|
+
function generateSessionId() {
|
|
1608
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
1609
|
+
const r = Math.random() * 16 | 0;
|
|
1610
|
+
const v = c === "x" ? r : r & 3 | 8;
|
|
1611
|
+
return v.toString(16);
|
|
1612
|
+
});
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
// src/ads/constants.ts
|
|
1616
|
+
var sessionId = generateSessionId();
|
|
1617
|
+
|
|
1618
|
+
// src/ads/fetchTossAd.ts
|
|
1619
|
+
var ANDROID_FETCH_TOSS_AD_SUPPORTED_VERSION = "5.241.0";
|
|
1620
|
+
var IOS_FETCH_TOSS_AD_SUPPORTED_VERSION = "5.241.0";
|
|
1621
|
+
var UNSUPPORTED_ERROR_MESSAGE = "This feature is not supported in the current environment";
|
|
1622
|
+
var ENVIRONMENT = (0, import_native_modules15.getOperationalEnvironment)();
|
|
1623
|
+
function fetchTossAd(params) {
|
|
1624
|
+
if (!fetchTossAd.isSupported()) {
|
|
1625
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
1626
|
+
return noop;
|
|
1627
|
+
}
|
|
1628
|
+
const { onEvent, onError, options } = params;
|
|
1629
|
+
const { adGroupId } = options;
|
|
1630
|
+
const unregisterCallbacks = import_native_modules15.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1631
|
+
"fetchTossAd",
|
|
1632
|
+
{ spaceUnitId: adGroupId, sessionId, sdkId: options.sdkId, availableStyleIds: options.availableStyleIds },
|
|
1633
|
+
{
|
|
1634
|
+
onSuccess: (response) => {
|
|
1635
|
+
onEvent(response);
|
|
1636
|
+
},
|
|
1637
|
+
onError: (error) => {
|
|
1638
|
+
onError(error);
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
);
|
|
1642
|
+
return unregisterCallbacks;
|
|
1643
|
+
}
|
|
1644
|
+
fetchTossAd.isSupported = () => {
|
|
1645
|
+
if (ENVIRONMENT !== "toss") {
|
|
1646
|
+
return false;
|
|
1647
|
+
}
|
|
1648
|
+
return (0, import_native_modules15.isMinVersionSupported)({
|
|
1649
|
+
android: ANDROID_FETCH_TOSS_AD_SUPPORTED_VERSION,
|
|
1650
|
+
ios: IOS_FETCH_TOSS_AD_SUPPORTED_VERSION
|
|
1651
|
+
});
|
|
1652
|
+
};
|
|
1653
|
+
|
|
1654
|
+
// src/ads/integratedAd.ts
|
|
1655
|
+
var import_native_modules17 = require("@apps-in-toss/native-modules");
|
|
1656
|
+
|
|
1657
|
+
// src/ads/generateRequestId.ts
|
|
1658
|
+
function generateRequestId() {
|
|
1659
|
+
const timestamp = Date.now().toString(36).toUpperCase();
|
|
1660
|
+
const random = Math.random().toString(36).substring(2, 7).toUpperCase();
|
|
1661
|
+
return `ait-${timestamp}${random}`;
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
// src/ads/getReferrer.ts
|
|
1665
|
+
var import_react_native29 = require("@granite-js/react-native");
|
|
1666
|
+
function getReferrer() {
|
|
1667
|
+
try {
|
|
1668
|
+
return new URL((0, import_react_native29.getSchemeUri)()).searchParams.get("referrer");
|
|
1669
|
+
} catch {
|
|
1670
|
+
return null;
|
|
1671
|
+
}
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
// src/ads/remotes.ts
|
|
1675
|
+
var import_native_modules16 = require("@apps-in-toss/native-modules");
|
|
1676
|
+
|
|
1677
|
+
// src/ads/getIsDev.ts
|
|
1678
|
+
var import_react_native30 = require("@granite-js/react-native");
|
|
1679
|
+
function getIsDev() {
|
|
1680
|
+
try {
|
|
1681
|
+
return new URL((0, import_react_native30.getSchemeUri)()).searchParams.get("isDev") === "true";
|
|
1682
|
+
} catch {
|
|
1683
|
+
return false;
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
// src/ads/remotes.ts
|
|
1688
|
+
var OPERATIONAL_ENVIRONMENT = (0, import_native_modules16.getOperationalEnvironment)();
|
|
1689
|
+
var OS = (0, import_native_modules16.getPlatformOS)();
|
|
1690
|
+
var APP_VER = (0, import_native_modules16.getTossAppVersion)();
|
|
1691
|
+
var ALPHA_EVENT_TRACKER_HTTP_ENDPOINT = "https://alpha-trillion.toss.im/trk/sdk-mediation/event";
|
|
1692
|
+
var LIVE_EVENT_TRACKER_HTTP_ENDPOINT = "https://trillion.toss.im/trk/sdk-mediation/event";
|
|
1693
|
+
function getPostEventTrackingUrl() {
|
|
1694
|
+
const isDev = getIsDev();
|
|
1695
|
+
if (OPERATIONAL_ENVIRONMENT === "sandbox" || isDev) {
|
|
1696
|
+
return ALPHA_EVENT_TRACKER_HTTP_ENDPOINT;
|
|
1697
|
+
}
|
|
1698
|
+
return LIVE_EVENT_TRACKER_HTTP_ENDPOINT;
|
|
1699
|
+
}
|
|
1700
|
+
function postEventTracking(params) {
|
|
1701
|
+
const endpoint = getPostEventTrackingUrl();
|
|
1702
|
+
const bodyJSON = JSON.stringify({
|
|
1703
|
+
...params,
|
|
1704
|
+
os: OS,
|
|
1705
|
+
appVer: APP_VER,
|
|
1706
|
+
deviceIdType: "NONE",
|
|
1707
|
+
platform: "RN"
|
|
1708
|
+
});
|
|
1709
|
+
return fetch(
|
|
1710
|
+
endpoint,
|
|
1711
|
+
{
|
|
1712
|
+
method: "POST",
|
|
1713
|
+
headers: {
|
|
1714
|
+
"Content-Type": "application/json"
|
|
1715
|
+
},
|
|
1716
|
+
body: bodyJSON
|
|
1717
|
+
}
|
|
1718
|
+
).catch(noop);
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
// src/ads/integratedAd.ts
|
|
1722
|
+
var INTEGRATED_AD_SDK_VERSION = "0.0.0";
|
|
1723
|
+
var ANDROID_INTEGRATED_AD_SUPPORTED_VERSION = "5.241.0";
|
|
1724
|
+
var IOS_INTEGRATED_AD_SUPPORTED_VERSION = "5.241.0";
|
|
1725
|
+
var UNSUPPORTED_ERROR_MESSAGE2 = "This feature is not supported in the current environment";
|
|
1726
|
+
var INTG_AD_ADM_FALLBACK_RID_MAP = {};
|
|
1727
|
+
function integratedAdIsSupported() {
|
|
1728
|
+
return (0, import_native_modules17.isMinVersionSupported)({
|
|
1729
|
+
android: ANDROID_INTEGRATED_AD_SUPPORTED_VERSION,
|
|
1730
|
+
ios: IOS_INTEGRATED_AD_SUPPORTED_VERSION
|
|
1731
|
+
});
|
|
1732
|
+
}
|
|
1733
|
+
function generateLoadFullScreenAd(sdkId) {
|
|
1734
|
+
const fn = (params) => {
|
|
1735
|
+
if (!import_native_modules17.GoogleAdMob.loadAppsInTossAdMob.isSupported()) {
|
|
1736
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
|
|
1737
|
+
return noop;
|
|
1738
|
+
}
|
|
1739
|
+
if (!integratedAdIsSupported()) {
|
|
1740
|
+
return import_native_modules17.GoogleAdMob.loadAppsInTossAdMob({
|
|
1741
|
+
...params,
|
|
1742
|
+
onEvent: (event) => {
|
|
1743
|
+
if (event.type === "loaded") {
|
|
1744
|
+
const requestId = generateRequestId();
|
|
1745
|
+
INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] = requestId;
|
|
1746
|
+
postEventTracking({
|
|
1747
|
+
eventName: "LOAD",
|
|
1748
|
+
spaceUnitId: params.options.adGroupId,
|
|
1749
|
+
requestId,
|
|
1750
|
+
responseId: event.data.responseInfo.responseId,
|
|
1751
|
+
mediationType: "ADMOB",
|
|
1752
|
+
format: "",
|
|
1753
|
+
adSourceName: event.data.responseInfo.loadedAdNetworkInfo?.adSourceName ?? "",
|
|
1754
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1755
|
+
});
|
|
1756
|
+
}
|
|
1757
|
+
return params.onEvent(event);
|
|
1758
|
+
},
|
|
1759
|
+
onError: (error) => {
|
|
1760
|
+
const requestId = INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] ?? "";
|
|
1761
|
+
postEventTracking({
|
|
1762
|
+
eventName: "FAILED_TO_LOAD",
|
|
1763
|
+
spaceUnitId: params.options.adGroupId,
|
|
1764
|
+
requestId,
|
|
1765
|
+
responseId: "",
|
|
1766
|
+
mediationType: "ADMOB",
|
|
1767
|
+
format: "",
|
|
1768
|
+
adSourceName: "",
|
|
1769
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1770
|
+
});
|
|
1771
|
+
return params.onError(error);
|
|
1772
|
+
}
|
|
1773
|
+
});
|
|
1774
|
+
}
|
|
1775
|
+
const { onEvent, onError, options } = params;
|
|
1776
|
+
const { adGroupId } = options;
|
|
1777
|
+
const referrer = getReferrer();
|
|
1778
|
+
const unregisterCallbacks = import_native_modules17.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1779
|
+
"loadTossAdOrAdmob",
|
|
1780
|
+
{ spaceUnitId: adGroupId, referrer, sessionId, sdkId },
|
|
1781
|
+
{
|
|
1782
|
+
onSuccess: () => {
|
|
1783
|
+
onEvent({ type: "loaded" });
|
|
1784
|
+
},
|
|
1785
|
+
onError: (error) => {
|
|
1786
|
+
onError(error);
|
|
1787
|
+
}
|
|
1788
|
+
}
|
|
1789
|
+
);
|
|
1790
|
+
return unregisterCallbacks;
|
|
1791
|
+
};
|
|
1792
|
+
fn.isSupported = import_native_modules17.GoogleAdMob.loadAppsInTossAdMob.isSupported;
|
|
1793
|
+
return fn;
|
|
1794
|
+
}
|
|
1795
|
+
var loadFullScreenAd = generateLoadFullScreenAd("107");
|
|
1796
|
+
var loadFullScreenAdForWeb = generateLoadFullScreenAd("107");
|
|
1797
|
+
function showFullScreenAd(params) {
|
|
1798
|
+
if (!import_native_modules17.GoogleAdMob.showAppsInTossAdMob.isSupported()) {
|
|
1799
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
|
|
1800
|
+
return noop;
|
|
1801
|
+
}
|
|
1802
|
+
if (!integratedAdIsSupported()) {
|
|
1803
|
+
return import_native_modules17.GoogleAdMob.showAppsInTossAdMob({
|
|
1804
|
+
...params,
|
|
1805
|
+
onEvent: (event) => {
|
|
1806
|
+
const requestId = INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] ?? "";
|
|
1807
|
+
switch (event.type) {
|
|
1808
|
+
case "show":
|
|
1809
|
+
postEventTracking({
|
|
1810
|
+
eventName: "SHOW",
|
|
1811
|
+
spaceUnitId: params.options.adGroupId,
|
|
1812
|
+
requestId,
|
|
1813
|
+
responseId: "",
|
|
1814
|
+
mediationType: "ADMOB",
|
|
1815
|
+
format: "",
|
|
1816
|
+
adSourceName: "",
|
|
1817
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1818
|
+
});
|
|
1819
|
+
break;
|
|
1820
|
+
case "failedToShow":
|
|
1821
|
+
postEventTracking({
|
|
1822
|
+
eventName: "FAILED_TO_SHOW",
|
|
1823
|
+
spaceUnitId: params.options.adGroupId,
|
|
1824
|
+
requestId,
|
|
1825
|
+
responseId: "",
|
|
1826
|
+
mediationType: "ADMOB",
|
|
1827
|
+
format: "",
|
|
1828
|
+
adSourceName: "",
|
|
1829
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1830
|
+
});
|
|
1831
|
+
break;
|
|
1832
|
+
case "impression":
|
|
1833
|
+
postEventTracking({
|
|
1834
|
+
eventName: "IMP",
|
|
1835
|
+
spaceUnitId: params.options.adGroupId,
|
|
1836
|
+
requestId,
|
|
1837
|
+
responseId: "",
|
|
1838
|
+
mediationType: "ADMOB",
|
|
1839
|
+
format: "",
|
|
1840
|
+
adSourceName: "",
|
|
1841
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1842
|
+
});
|
|
1843
|
+
break;
|
|
1844
|
+
case "clicked":
|
|
1845
|
+
postEventTracking({
|
|
1846
|
+
eventName: "CLICK",
|
|
1847
|
+
spaceUnitId: params.options.adGroupId,
|
|
1848
|
+
requestId,
|
|
1849
|
+
responseId: "",
|
|
1850
|
+
mediationType: "ADMOB",
|
|
1851
|
+
format: "",
|
|
1852
|
+
adSourceName: "",
|
|
1853
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1854
|
+
});
|
|
1855
|
+
break;
|
|
1856
|
+
case "dismissed":
|
|
1857
|
+
postEventTracking({
|
|
1858
|
+
eventName: "DISMISS",
|
|
1859
|
+
spaceUnitId: params.options.adGroupId,
|
|
1860
|
+
requestId,
|
|
1861
|
+
responseId: "",
|
|
1862
|
+
mediationType: "ADMOB",
|
|
1863
|
+
format: "",
|
|
1864
|
+
adSourceName: "",
|
|
1865
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1866
|
+
});
|
|
1867
|
+
break;
|
|
1868
|
+
case "userEarnedReward":
|
|
1869
|
+
postEventTracking({
|
|
1870
|
+
eventName: "USER_EARNED_REWARD",
|
|
1871
|
+
spaceUnitId: params.options.adGroupId,
|
|
1872
|
+
requestId,
|
|
1873
|
+
responseId: "",
|
|
1874
|
+
mediationType: "ADMOB",
|
|
1875
|
+
format: "",
|
|
1876
|
+
adSourceName: "",
|
|
1877
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1878
|
+
});
|
|
1879
|
+
break;
|
|
1880
|
+
}
|
|
1881
|
+
return params.onEvent(event);
|
|
1882
|
+
},
|
|
1883
|
+
onError: (error) => {
|
|
1884
|
+
const requestId = INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] ?? "";
|
|
1885
|
+
postEventTracking({
|
|
1886
|
+
eventName: "FAILED_TO_SHOW",
|
|
1887
|
+
spaceUnitId: params.options.adGroupId,
|
|
1888
|
+
requestId,
|
|
1889
|
+
responseId: "",
|
|
1890
|
+
mediationType: "ADMOB",
|
|
1891
|
+
format: "",
|
|
1892
|
+
adSourceName: "",
|
|
1893
|
+
sdkVer: INTEGRATED_AD_SDK_VERSION
|
|
1894
|
+
});
|
|
1895
|
+
return params.onError(error);
|
|
1896
|
+
}
|
|
1897
|
+
});
|
|
1898
|
+
}
|
|
1899
|
+
const { onEvent, onError, options } = params;
|
|
1900
|
+
const { adGroupId } = options;
|
|
1901
|
+
const referrer = getReferrer();
|
|
1902
|
+
const unregisterCallbacks = import_native_modules17.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1903
|
+
"showTossAdOrAdmob",
|
|
1904
|
+
{ spaceUnitId: adGroupId, referrer, sessionId },
|
|
1905
|
+
{
|
|
1906
|
+
onAdClicked: () => {
|
|
1907
|
+
onEvent({ type: "clicked" });
|
|
1908
|
+
},
|
|
1909
|
+
onAdDismissed: () => {
|
|
1910
|
+
onEvent({ type: "dismissed" });
|
|
1911
|
+
},
|
|
1912
|
+
onAdFailedToShow: () => {
|
|
1913
|
+
onEvent({ type: "failedToShow" });
|
|
1914
|
+
},
|
|
1915
|
+
onAdImpression: () => {
|
|
1916
|
+
onEvent({ type: "impression" });
|
|
1917
|
+
},
|
|
1918
|
+
onAdShow: () => {
|
|
1919
|
+
onEvent({ type: "show" });
|
|
1920
|
+
},
|
|
1921
|
+
onUserEarnedReward: (data) => {
|
|
1922
|
+
onEvent({ type: "userEarnedReward", data });
|
|
1923
|
+
},
|
|
1924
|
+
onSuccess: () => {
|
|
1925
|
+
onEvent({ type: "requested" });
|
|
1926
|
+
},
|
|
1927
|
+
onError: (error) => {
|
|
1928
|
+
onError(error);
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
);
|
|
1932
|
+
return unregisterCallbacks;
|
|
1933
|
+
}
|
|
1934
|
+
showFullScreenAd.isSupported = import_native_modules17.GoogleAdMob.showAppsInTossAdMob.isSupported;
|
|
1935
|
+
|
|
1936
|
+
// src/ads/tossAdEventLog.ts
|
|
1937
|
+
var import_native_modules18 = require("@apps-in-toss/native-modules");
|
|
1938
|
+
var import_react_native31 = require("@granite-js/react-native");
|
|
1939
|
+
async function tossAdEventLog(params) {
|
|
1940
|
+
const referrer = getReferrer();
|
|
1941
|
+
const appName = import_react_native31.Granite.appName;
|
|
1942
|
+
const eventLogParams = {
|
|
1943
|
+
...params,
|
|
1944
|
+
params: {
|
|
1945
|
+
...params.params,
|
|
1946
|
+
referrer,
|
|
1947
|
+
app_name: appName
|
|
1948
|
+
}
|
|
1949
|
+
};
|
|
1950
|
+
return import_native_modules18.INTERNAL__module.tossCoreEventLog(eventLogParams);
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1640
1953
|
// src/bridge-handler/useBridgeHandler.tsx
|
|
1641
|
-
var
|
|
1954
|
+
var import_react22 = require("react");
|
|
1642
1955
|
function serializeError(error) {
|
|
1643
1956
|
return JSON.stringify(error, (_, value) => {
|
|
1644
1957
|
if (value instanceof Error) {
|
|
@@ -1690,8 +2003,8 @@ function useBridgeHandler({
|
|
|
1690
2003
|
asyncHandlerMap,
|
|
1691
2004
|
eventListenerMap
|
|
1692
2005
|
}) {
|
|
1693
|
-
const ref = (0,
|
|
1694
|
-
const injectedJavaScript = (0,
|
|
2006
|
+
const ref = (0, import_react22.useRef)(null);
|
|
2007
|
+
const injectedJavaScript = (0, import_react22.useMemo)(
|
|
1695
2008
|
() => `window.__CONSTANT_HANDLER_MAP = ${JSON.stringify(
|
|
1696
2009
|
Object.entries(constantHandlerMap).reduce(
|
|
1697
2010
|
(acc, [key, value]) => {
|
|
@@ -1703,7 +2016,7 @@ function useBridgeHandler({
|
|
|
1703
2016
|
)};`,
|
|
1704
2017
|
[constantHandlerMap]
|
|
1705
2018
|
);
|
|
1706
|
-
(0,
|
|
2019
|
+
(0, import_react22.useEffect)(() => {
|
|
1707
2020
|
ref.current?.injectJavaScript(injectedJavaScript);
|
|
1708
2021
|
}, [injectedJavaScript]);
|
|
1709
2022
|
const createHandleOnEvent = (functionName, eventId) => (response) => {
|
|
@@ -1717,7 +2030,7 @@ function useBridgeHandler({
|
|
|
1717
2030
|
window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${serializedError});
|
|
1718
2031
|
`);
|
|
1719
2032
|
};
|
|
1720
|
-
const $onMessage = (0,
|
|
2033
|
+
const $onMessage = (0, import_react22.useCallback)(
|
|
1721
2034
|
async (e) => {
|
|
1722
2035
|
onMessage?.(e);
|
|
1723
2036
|
const data = parseNativeEventData(e.nativeEvent.data);
|
|
@@ -1777,7 +2090,7 @@ function parseNativeEventData(data) {
|
|
|
1777
2090
|
|
|
1778
2091
|
// src/core/hooks/useSafeAreaInsetsEmitter.tsx
|
|
1779
2092
|
var import_react_native_safe_area_context3 = require("@granite-js/native/react-native-safe-area-context");
|
|
1780
|
-
var
|
|
2093
|
+
var import_react23 = require("react");
|
|
1781
2094
|
var EventEmitter = class {
|
|
1782
2095
|
listeners = {};
|
|
1783
2096
|
on(event, listener) {
|
|
@@ -1801,8 +2114,8 @@ var EventEmitter = class {
|
|
|
1801
2114
|
};
|
|
1802
2115
|
function useSafeAreaInsetsEmitter() {
|
|
1803
2116
|
const insets = (0, import_react_native_safe_area_context3.useSafeAreaInsets)();
|
|
1804
|
-
const emitter = (0,
|
|
1805
|
-
(0,
|
|
2117
|
+
const emitter = (0, import_react23.useMemo)(() => new EventEmitter(), []);
|
|
2118
|
+
(0, import_react23.useEffect)(() => {
|
|
1806
2119
|
emitter.emit("safeAreaInsetsChange", insets);
|
|
1807
2120
|
return () => {
|
|
1808
2121
|
emitter.off("safeAreaInsetsChange", (listener) => listener(insets));
|
|
@@ -1812,13 +2125,13 @@ function useSafeAreaInsetsEmitter() {
|
|
|
1812
2125
|
}
|
|
1813
2126
|
|
|
1814
2127
|
// src/core/hooks/useWebBackHandler.tsx
|
|
1815
|
-
var
|
|
1816
|
-
var
|
|
2128
|
+
var import_react_native32 = require("@granite-js/react-native");
|
|
2129
|
+
var import_tds_react_native13 = require("@toss/tds-react-native");
|
|
1817
2130
|
var import_es_hangul5 = require("es-hangul");
|
|
1818
|
-
var
|
|
2131
|
+
var import_react25 = require("react");
|
|
1819
2132
|
|
|
1820
2133
|
// src/hooks/useWebviewHistoryStack.tsx
|
|
1821
|
-
var
|
|
2134
|
+
var import_react24 = require("react");
|
|
1822
2135
|
var INITIAL_STATE = { stack: [], index: -1 };
|
|
1823
2136
|
function reducer(state, action) {
|
|
1824
2137
|
switch (action.type) {
|
|
@@ -1849,11 +2162,11 @@ function reducer(state, action) {
|
|
|
1849
2162
|
}
|
|
1850
2163
|
}
|
|
1851
2164
|
function useWebViewHistory() {
|
|
1852
|
-
const [state, dispatch] = (0,
|
|
1853
|
-
const onNavigationStateChange = (0,
|
|
2165
|
+
const [state, dispatch] = (0, import_react24.useReducer)(reducer, INITIAL_STATE);
|
|
2166
|
+
const onNavigationStateChange = (0, import_react24.useCallback)(({ url, canGoForward: canGoForward2 }) => {
|
|
1854
2167
|
dispatch({ type: "NAVIGATION_CHANGE", url, canGoForward: canGoForward2 });
|
|
1855
2168
|
}, []);
|
|
1856
|
-
const { canGoBack, canGoForward } = (0,
|
|
2169
|
+
const { canGoBack, canGoForward } = (0, import_react24.useMemo)(() => {
|
|
1857
2170
|
const canBack = state.index > 0;
|
|
1858
2171
|
const canFwd = state.index >= 0 && state.index < state.stack.length - 1;
|
|
1859
2172
|
return { canGoBack: canBack, canGoForward: canFwd };
|
|
@@ -1882,23 +2195,23 @@ function useWebBackHandler(webViewRef) {
|
|
|
1882
2195
|
hasBackEvent: hasWebBackEvent,
|
|
1883
2196
|
addEventListener: addWebBackEventListener,
|
|
1884
2197
|
removeEventListener: removeWebBackEventListener
|
|
1885
|
-
} = (0,
|
|
2198
|
+
} = (0, import_react_native32.useBackEventState)();
|
|
1886
2199
|
const logging = useNavigationBarLogging();
|
|
1887
|
-
const { openConfirm } = (0,
|
|
2200
|
+
const { openConfirm } = (0, import_tds_react_native13.useDialog)();
|
|
1888
2201
|
const global2 = getAppsInTossGlobals();
|
|
1889
|
-
const addEventListener = (0,
|
|
2202
|
+
const addEventListener = (0, import_react25.useCallback)(
|
|
1890
2203
|
(handler) => {
|
|
1891
2204
|
addWebBackEventListener(handler);
|
|
1892
2205
|
},
|
|
1893
2206
|
[addWebBackEventListener]
|
|
1894
2207
|
);
|
|
1895
|
-
const removeEventListener = (0,
|
|
2208
|
+
const removeEventListener = (0, import_react25.useCallback)(
|
|
1896
2209
|
(handler) => {
|
|
1897
2210
|
removeWebBackEventListener(handler);
|
|
1898
2211
|
},
|
|
1899
2212
|
[removeWebBackEventListener]
|
|
1900
2213
|
);
|
|
1901
|
-
const handleWebBack = (0,
|
|
2214
|
+
const handleWebBack = (0, import_react25.useCallback)(async () => {
|
|
1902
2215
|
if (hasWebBackEvent) {
|
|
1903
2216
|
for (const handler of webBackHandlersRef) {
|
|
1904
2217
|
handler();
|
|
@@ -1918,7 +2231,7 @@ function useWebBackHandler(webViewRef) {
|
|
|
1918
2231
|
logging.closePopupCtaClick(isConfirmed);
|
|
1919
2232
|
if (isConfirmed) {
|
|
1920
2233
|
captureExitLog(Date.now());
|
|
1921
|
-
(0,
|
|
2234
|
+
(0, import_react_native32.closeView)();
|
|
1922
2235
|
}
|
|
1923
2236
|
}
|
|
1924
2237
|
}, [
|
|
@@ -1931,7 +2244,7 @@ function useWebBackHandler(webViewRef) {
|
|
|
1931
2244
|
openConfirm,
|
|
1932
2245
|
webViewRef
|
|
1933
2246
|
]);
|
|
1934
|
-
const handleWebHome = (0,
|
|
2247
|
+
const handleWebHome = (0, import_react25.useCallback)(() => {
|
|
1935
2248
|
logging.homeButtonClick();
|
|
1936
2249
|
if (hasWebBackEvent) {
|
|
1937
2250
|
for (const handler of webBackHandlersRef) {
|
|
@@ -1941,7 +2254,7 @@ function useWebBackHandler(webViewRef) {
|
|
|
1941
2254
|
}
|
|
1942
2255
|
webViewRef.current?.injectJavaScript(HISTORY_HOME_SCRIPT);
|
|
1943
2256
|
}, [hasWebBackEvent, webBackHandlersRef, logging, webViewRef]);
|
|
1944
|
-
return (0,
|
|
2257
|
+
return (0, import_react25.useMemo)(
|
|
1945
2258
|
() => ({ addEventListener, removeEventListener, handleWebBack, handleWebHome, onNavigationStateChange }),
|
|
1946
2259
|
[addEventListener, removeEventListener, handleWebBack, handleWebHome, onNavigationStateChange]
|
|
1947
2260
|
);
|
|
@@ -1961,8 +2274,8 @@ function mergeRefs(...refs) {
|
|
|
1961
2274
|
}
|
|
1962
2275
|
|
|
1963
2276
|
// src/hooks/useCreateUserAgent.ts
|
|
1964
|
-
var
|
|
1965
|
-
var
|
|
2277
|
+
var import_native_modules19 = require("@apps-in-toss/native-modules");
|
|
2278
|
+
var import_react_native33 = require("react-native");
|
|
1966
2279
|
var FontA11yCategory = {
|
|
1967
2280
|
Large: "Large",
|
|
1968
2281
|
xLarge: "xLarge",
|
|
@@ -2095,9 +2408,9 @@ function useCreateUserAgent({
|
|
|
2095
2408
|
safeArea,
|
|
2096
2409
|
safeAreaBottomTransparency
|
|
2097
2410
|
}) {
|
|
2098
|
-
const platform = (0,
|
|
2099
|
-
const appVersion = (0,
|
|
2100
|
-
const { fontScale } = (0,
|
|
2411
|
+
const platform = (0, import_native_modules19.getPlatformOS)();
|
|
2412
|
+
const appVersion = (0, import_native_modules19.getTossAppVersion)();
|
|
2413
|
+
const { fontScale } = (0, import_react_native33.useWindowDimensions)();
|
|
2101
2414
|
const platformString = platform === "ios" ? "iPhone" : "Android phone";
|
|
2102
2415
|
const fontA11y = mapFontScaleToCategory(fontScale, platform);
|
|
2103
2416
|
const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
|
|
@@ -2118,17 +2431,17 @@ function useCreateUserAgent({
|
|
|
2118
2431
|
}
|
|
2119
2432
|
|
|
2120
2433
|
// src/hooks/useGeolocation.ts
|
|
2121
|
-
var
|
|
2122
|
-
var
|
|
2123
|
-
var
|
|
2434
|
+
var import_native_modules20 = require("@apps-in-toss/native-modules");
|
|
2435
|
+
var import_react_native34 = require("@granite-js/react-native");
|
|
2436
|
+
var import_react26 = require("react");
|
|
2124
2437
|
function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
2125
|
-
const isVisible = (0,
|
|
2126
|
-
const [location, setLocation] = (0,
|
|
2127
|
-
(0,
|
|
2438
|
+
const isVisible = (0, import_react_native34.useVisibility)();
|
|
2439
|
+
const [location, setLocation] = (0, import_react26.useState)(null);
|
|
2440
|
+
(0, import_react26.useEffect)(() => {
|
|
2128
2441
|
if (!isVisible) {
|
|
2129
2442
|
return;
|
|
2130
2443
|
}
|
|
2131
|
-
return (0,
|
|
2444
|
+
return (0, import_native_modules20.startUpdateLocation)({
|
|
2132
2445
|
options: {
|
|
2133
2446
|
accuracy,
|
|
2134
2447
|
distanceInterval,
|
|
@@ -2142,12 +2455,12 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
|
2142
2455
|
}
|
|
2143
2456
|
|
|
2144
2457
|
// src/hooks/useWaitForReturnNavigator.tsx
|
|
2145
|
-
var
|
|
2146
|
-
var
|
|
2458
|
+
var import_react_native35 = require("@granite-js/react-native");
|
|
2459
|
+
var import_react27 = require("react");
|
|
2147
2460
|
function useWaitForReturnNavigator() {
|
|
2148
|
-
const callbacks = (0,
|
|
2149
|
-
const navigation = (0,
|
|
2150
|
-
const startNavigating = (0,
|
|
2461
|
+
const callbacks = (0, import_react27.useRef)([]).current;
|
|
2462
|
+
const navigation = (0, import_react_native35.useNavigation)();
|
|
2463
|
+
const startNavigating = (0, import_react27.useCallback)(
|
|
2151
2464
|
(route, params) => {
|
|
2152
2465
|
return new Promise((resolve) => {
|
|
2153
2466
|
callbacks.push(resolve);
|
|
@@ -2156,7 +2469,7 @@ function useWaitForReturnNavigator() {
|
|
|
2156
2469
|
},
|
|
2157
2470
|
[callbacks, navigation]
|
|
2158
2471
|
);
|
|
2159
|
-
const handleVisibilityChange = (0,
|
|
2472
|
+
const handleVisibilityChange = (0, import_react27.useCallback)(
|
|
2160
2473
|
(state) => {
|
|
2161
2474
|
if (state === "visible" && callbacks.length > 0) {
|
|
2162
2475
|
for (const callback of callbacks) {
|
|
@@ -2167,7 +2480,7 @@ function useWaitForReturnNavigator() {
|
|
|
2167
2480
|
},
|
|
2168
2481
|
[callbacks]
|
|
2169
2482
|
);
|
|
2170
|
-
(0,
|
|
2483
|
+
(0, import_react_native35.useVisibilityChange)(handleVisibilityChange);
|
|
2171
2484
|
return startNavigating;
|
|
2172
2485
|
}
|
|
2173
2486
|
|
|
@@ -2181,8 +2494,8 @@ function useTopNavigation() {
|
|
|
2181
2494
|
}
|
|
2182
2495
|
|
|
2183
2496
|
// src/utils/log.ts
|
|
2184
|
-
var
|
|
2185
|
-
var
|
|
2497
|
+
var import_native_modules21 = require("@apps-in-toss/native-modules");
|
|
2498
|
+
var import_react_native36 = require("@granite-js/react-native");
|
|
2186
2499
|
|
|
2187
2500
|
// src/utils/extractDateFromUUIDv7.ts
|
|
2188
2501
|
var extractDateFromUUIDv7 = (uuid) => {
|
|
@@ -2206,9 +2519,9 @@ var getGroupId = (url) => {
|
|
|
2206
2519
|
};
|
|
2207
2520
|
}
|
|
2208
2521
|
};
|
|
2209
|
-
var
|
|
2522
|
+
var getReferrer2 = () => {
|
|
2210
2523
|
try {
|
|
2211
|
-
const referrer = new URL((0,
|
|
2524
|
+
const referrer = new URL((0, import_react_native36.getSchemeUri)());
|
|
2212
2525
|
return referrer.searchParams.get("referrer");
|
|
2213
2526
|
} catch {
|
|
2214
2527
|
return "";
|
|
@@ -2221,12 +2534,12 @@ var trackScreen = (url) => {
|
|
|
2221
2534
|
log_name: `${groupId}::screen`,
|
|
2222
2535
|
params: {
|
|
2223
2536
|
search,
|
|
2224
|
-
referrer:
|
|
2537
|
+
referrer: getReferrer2(),
|
|
2225
2538
|
deployment_id: env.getDeploymentId(),
|
|
2226
2539
|
deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
|
|
2227
2540
|
}
|
|
2228
2541
|
};
|
|
2229
|
-
return (0,
|
|
2542
|
+
return (0, import_native_modules21.eventLog)(log);
|
|
2230
2543
|
};
|
|
2231
2544
|
|
|
2232
2545
|
// src/components/WebView.tsx
|
|
@@ -2235,12 +2548,12 @@ var operationalEnvironment = appsInTossConstantBridges.getOperationalEnvironment
|
|
|
2235
2548
|
var TYPES = ["partner", "external", "game"];
|
|
2236
2549
|
var WEBVIEW_TYPES = {
|
|
2237
2550
|
partner: PartnerWebView,
|
|
2238
|
-
external:
|
|
2551
|
+
external: import_tds_react_native14.ExternalWebViewScreen,
|
|
2239
2552
|
game: GameWebView
|
|
2240
2553
|
};
|
|
2241
2554
|
function mergeSchemeQueryParamsInto(url) {
|
|
2242
2555
|
const baseUrl = new URL(url);
|
|
2243
|
-
const schemeUrl = new URL((0,
|
|
2556
|
+
const schemeUrl = new URL((0, import_react_native37.getSchemeUri)());
|
|
2244
2557
|
baseUrl.pathname = schemeUrl.pathname;
|
|
2245
2558
|
for (const [key, value] of schemeUrl.searchParams.entries()) {
|
|
2246
2559
|
baseUrl.searchParams.set(key, value);
|
|
@@ -2252,7 +2565,7 @@ function getWebViewUri(local) {
|
|
|
2252
2565
|
const devUrl = `http://${local.host}:${local.port}`;
|
|
2253
2566
|
return mergeSchemeQueryParamsInto(devUrl).toString();
|
|
2254
2567
|
}
|
|
2255
|
-
const { url: rawUrl } =
|
|
2568
|
+
const { url: rawUrl } = import_native_modules22.AppsInTossModule.getWebBundleURL({});
|
|
2256
2569
|
const url = mergeSchemeQueryParamsInto(rawUrl);
|
|
2257
2570
|
const deploymentId = env.getDeploymentId();
|
|
2258
2571
|
if (deploymentId) {
|
|
@@ -2264,31 +2577,30 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2264
2577
|
if (!TYPES.includes(type)) {
|
|
2265
2578
|
throw new Error(`Invalid WebView type: '${type}'`);
|
|
2266
2579
|
}
|
|
2267
|
-
const webViewRef = (0,
|
|
2580
|
+
const webViewRef = (0, import_react28.useRef)(null);
|
|
2268
2581
|
const webBackHandler = useWebBackHandler(webViewRef);
|
|
2269
|
-
const uri = (0,
|
|
2582
|
+
const uri = (0, import_react28.useMemo)(() => getWebViewUri(local), [local]);
|
|
2270
2583
|
const top = (0, import_private9.useSafeAreaTop)();
|
|
2271
2584
|
const bottom = (0, import_private9.useSafeAreaBottom)();
|
|
2272
2585
|
const insets = (0, import_react_native_safe_area_context4.useSafeAreaInsets)();
|
|
2273
2586
|
const global2 = getAppsInTossGlobals();
|
|
2274
2587
|
const navigationBarContext = useNavigationBarContext();
|
|
2275
2588
|
const safeAreaInsetsEmitter = useSafeAreaInsetsEmitter();
|
|
2276
|
-
const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0,
|
|
2589
|
+
const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0, import_react28.useState)(
|
|
2277
2590
|
props.allowsBackForwardNavigationGestures
|
|
2278
2591
|
);
|
|
2279
2592
|
const handler = useBridgeHandler({
|
|
2280
2593
|
onMessage,
|
|
2281
2594
|
eventListenerMap: {
|
|
2282
2595
|
...appsInTossEventBridges,
|
|
2283
|
-
navigationAccessoryEvent: ({ onEvent, onError }) =>
|
|
2596
|
+
navigationAccessoryEvent: ({ onEvent, onError }) => import_tds_react_native14.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
|
|
2284
2597
|
backEvent: ({ onEvent }) => {
|
|
2285
2598
|
webBackHandler.addEventListener(onEvent);
|
|
2286
2599
|
return () => {
|
|
2287
2600
|
webBackHandler.removeEventListener(onEvent);
|
|
2288
2601
|
};
|
|
2289
2602
|
},
|
|
2290
|
-
|
|
2291
|
-
updateLocationEvent: ({ onEvent, onError, options }) => import_native_modules19.appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
|
|
2603
|
+
updateLocationEvent: ({ onEvent, onError, options }) => import_native_modules22.appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
|
|
2292
2604
|
safeAreaInsetsChange: ({ onEvent }) => {
|
|
2293
2605
|
safeAreaInsetsEmitter.on("safeAreaInsetsChange", onEvent);
|
|
2294
2606
|
return () => {
|
|
@@ -2296,18 +2608,23 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2296
2608
|
};
|
|
2297
2609
|
},
|
|
2298
2610
|
/** @internal */
|
|
2299
|
-
appBridgeCallbackEvent: ({ onEvent, onError, options }) =>
|
|
2611
|
+
appBridgeCallbackEvent: ({ onEvent, onError, options }) => import_native_modules22.appsInTossEvent.addEventListener("appBridgeCallbackEvent", { onEvent, onError, options }),
|
|
2300
2612
|
/** AdMob */
|
|
2301
|
-
loadAdMobInterstitialAd:
|
|
2302
|
-
showAdMobInterstitialAd:
|
|
2303
|
-
loadAdMobRewardedAd:
|
|
2304
|
-
showAdMobRewardedAd:
|
|
2613
|
+
loadAdMobInterstitialAd: import_native_modules22.GoogleAdMob.loadAdMobInterstitialAd,
|
|
2614
|
+
showAdMobInterstitialAd: import_native_modules22.GoogleAdMob.showAdMobInterstitialAd,
|
|
2615
|
+
loadAdMobRewardedAd: import_native_modules22.GoogleAdMob.loadAdMobRewardedAd,
|
|
2616
|
+
showAdMobRewardedAd: import_native_modules22.GoogleAdMob.showAdMobRewardedAd,
|
|
2305
2617
|
/** AdMobV2 */
|
|
2306
|
-
loadAppsInTossAdMob:
|
|
2307
|
-
showAppsInTossAdMob:
|
|
2618
|
+
loadAppsInTossAdMob: import_native_modules22.GoogleAdMob.loadAppsInTossAdMob,
|
|
2619
|
+
showAppsInTossAdMob: import_native_modules22.GoogleAdMob.showAppsInTossAdMob,
|
|
2620
|
+
/** IntegratedAd */
|
|
2621
|
+
loadFullScreenAd: loadFullScreenAdForWeb,
|
|
2622
|
+
showFullScreenAd,
|
|
2623
|
+
/** TossAd */
|
|
2624
|
+
fetchTossAd,
|
|
2308
2625
|
/** IAP */
|
|
2309
|
-
iapCreateOneTimePurchaseOrder:
|
|
2310
|
-
requestOneTimePurchase:
|
|
2626
|
+
iapCreateOneTimePurchaseOrder: import_native_modules22.IAP.createOneTimePurchaseOrder,
|
|
2627
|
+
requestOneTimePurchase: import_native_modules22.requestOneTimePurchase
|
|
2311
2628
|
},
|
|
2312
2629
|
constantHandlerMap: {
|
|
2313
2630
|
...appsInTossConstantBridges,
|
|
@@ -2317,13 +2634,18 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2317
2634
|
getSafeAreaRight: () => insets.right,
|
|
2318
2635
|
...Object.fromEntries(Object.entries(global2).map(([key, value]) => [key, () => value])),
|
|
2319
2636
|
/** AdMob */
|
|
2320
|
-
loadAdMobInterstitialAd_isSupported:
|
|
2321
|
-
showAdMobInterstitialAd_isSupported:
|
|
2322
|
-
loadAdMobRewardedAd_isSupported:
|
|
2323
|
-
showAdMobRewardedAd_isSupported:
|
|
2637
|
+
loadAdMobInterstitialAd_isSupported: import_native_modules22.GoogleAdMob.loadAdMobInterstitialAd.isSupported,
|
|
2638
|
+
showAdMobInterstitialAd_isSupported: import_native_modules22.GoogleAdMob.showAdMobInterstitialAd.isSupported,
|
|
2639
|
+
loadAdMobRewardedAd_isSupported: import_native_modules22.GoogleAdMob.loadAdMobRewardedAd.isSupported,
|
|
2640
|
+
showAdMobRewardedAd_isSupported: import_native_modules22.GoogleAdMob.showAdMobRewardedAd.isSupported,
|
|
2324
2641
|
/** AdMobV2 */
|
|
2325
|
-
loadAppsInTossAdMob_isSupported:
|
|
2326
|
-
showAppsInTossAdMob_isSupported:
|
|
2642
|
+
loadAppsInTossAdMob_isSupported: import_native_modules22.GoogleAdMob.loadAppsInTossAdMob.isSupported,
|
|
2643
|
+
showAppsInTossAdMob_isSupported: import_native_modules22.GoogleAdMob.showAppsInTossAdMob.isSupported,
|
|
2644
|
+
/** IntegratedAd */
|
|
2645
|
+
loadFullScreenAd_isSupported: loadFullScreenAdForWeb.isSupported,
|
|
2646
|
+
showFullScreenAd_isSupported: showFullScreenAd.isSupported,
|
|
2647
|
+
/** TossAd */
|
|
2648
|
+
fetchTossAd_isSupported: fetchTossAd.isSupported,
|
|
2327
2649
|
/** env */
|
|
2328
2650
|
getDeploymentId: env.getDeploymentId
|
|
2329
2651
|
},
|
|
@@ -2346,20 +2668,22 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2346
2668
|
getCurrentLocation: appsInTossAsyncBridges.getCurrentLocation,
|
|
2347
2669
|
openCamera: appsInTossAsyncBridges.openCamera,
|
|
2348
2670
|
/** Storage */
|
|
2349
|
-
getStorageItem:
|
|
2350
|
-
setStorageItem:
|
|
2351
|
-
removeStorageItem:
|
|
2352
|
-
clearItems:
|
|
2671
|
+
getStorageItem: import_native_modules22.Storage.getItem,
|
|
2672
|
+
setStorageItem: import_native_modules22.Storage.setItem,
|
|
2673
|
+
removeStorageItem: import_native_modules22.Storage.removeItem,
|
|
2674
|
+
clearItems: import_native_modules22.Storage.clearItems,
|
|
2353
2675
|
/** IAP */
|
|
2354
|
-
iapGetProductItemList:
|
|
2355
|
-
iapCreateOneTimePurchaseOrder:
|
|
2356
|
-
processProductGrant:
|
|
2357
|
-
getPendingOrders:
|
|
2358
|
-
getCompletedOrRefundedOrders:
|
|
2359
|
-
completeProductGrant:
|
|
2676
|
+
iapGetProductItemList: import_native_modules22.IAP.getProductItemList,
|
|
2677
|
+
iapCreateOneTimePurchaseOrder: import_native_modules22.iapCreateOneTimePurchaseOrder,
|
|
2678
|
+
processProductGrant: import_native_modules22.processProductGrant,
|
|
2679
|
+
getPendingOrders: import_native_modules22.IAP.getPendingOrders,
|
|
2680
|
+
getCompletedOrRefundedOrders: import_native_modules22.IAP.getCompletedOrRefundedOrders,
|
|
2681
|
+
completeProductGrant: import_native_modules22.IAP.completeProductGrant,
|
|
2682
|
+
/** Toss Ads */
|
|
2683
|
+
tossAdEventLog
|
|
2360
2684
|
}
|
|
2361
2685
|
});
|
|
2362
|
-
const headerPropForExternalWebView = (0,
|
|
2686
|
+
const headerPropForExternalWebView = (0, import_react28.useMemo)(() => {
|
|
2363
2687
|
const parsedNavigationBar = global2.navigationBar != null ? safeParseNavigationBar(global2.navigationBar) : null;
|
|
2364
2688
|
const initialAccessoryButton = parsedNavigationBar?.initialAccessoryButton;
|
|
2365
2689
|
const withBackButton = parsedNavigationBar?.withBackButton ?? true;
|
|
@@ -2380,13 +2704,13 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2380
2704
|
colorPreference: "light"
|
|
2381
2705
|
});
|
|
2382
2706
|
const refs = mergeRefs(handler.ref, webViewRef);
|
|
2383
|
-
(0,
|
|
2707
|
+
(0, import_react28.useEffect)(() => {
|
|
2384
2708
|
const callback = () => {
|
|
2385
2709
|
webBackHandler.handleWebBack();
|
|
2386
2710
|
return true;
|
|
2387
2711
|
};
|
|
2388
|
-
|
|
2389
|
-
return () =>
|
|
2712
|
+
import_react_native38.BackHandler.addEventListener("hardwareBackPress", callback);
|
|
2713
|
+
return () => import_react_native38.BackHandler.removeEventListener("hardwareBackPress", callback);
|
|
2390
2714
|
}, [webBackHandler]);
|
|
2391
2715
|
const globalScripts = useGlobalScripts();
|
|
2392
2716
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
@@ -2411,14 +2735,14 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2411
2735
|
props.onNavigationStateChange?.(event);
|
|
2412
2736
|
webBackHandler.onNavigationStateChange(event);
|
|
2413
2737
|
},
|
|
2414
|
-
userAgent:
|
|
2738
|
+
userAgent: import_react_native38.Platform.OS === "ios" ? userAgent : void 0,
|
|
2415
2739
|
sharedCookiesEnabled: true,
|
|
2416
2740
|
webviewDebuggingEnabled: webViewDebuggingEnabled,
|
|
2417
2741
|
thirdPartyCookiesEnabled: true,
|
|
2418
2742
|
onMessage: handler.onMessage,
|
|
2419
2743
|
injectedJavaScript: globalScripts.afterLoad,
|
|
2420
2744
|
injectedJavaScriptBeforeContentLoaded: mergeScripts(handler.injectedJavaScript, globalScripts.beforeLoad),
|
|
2421
|
-
decelerationRate:
|
|
2745
|
+
decelerationRate: import_react_native38.Platform.OS === "ios" ? 1 : void 0,
|
|
2422
2746
|
allowsBackForwardNavigationGestures,
|
|
2423
2747
|
onShouldStartLoadWithRequest: (event) => {
|
|
2424
2748
|
try {
|
|
@@ -2426,7 +2750,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2426
2750
|
if (["https:", "http:"].includes(url.protocol)) {
|
|
2427
2751
|
return true;
|
|
2428
2752
|
} else {
|
|
2429
|
-
|
|
2753
|
+
import_react_native38.Linking.openURL(convertIntentURL(url) ?? url.href);
|
|
2430
2754
|
return false;
|
|
2431
2755
|
}
|
|
2432
2756
|
} catch (error) {
|
|
@@ -2434,7 +2758,15 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2434
2758
|
return false;
|
|
2435
2759
|
}
|
|
2436
2760
|
},
|
|
2437
|
-
originWhitelist: [
|
|
2761
|
+
originWhitelist: [
|
|
2762
|
+
"https://*",
|
|
2763
|
+
"http://*",
|
|
2764
|
+
"intoss://*",
|
|
2765
|
+
"intoss-private://*",
|
|
2766
|
+
"servicetoss://*",
|
|
2767
|
+
"supertoss://*",
|
|
2768
|
+
"intent://*"
|
|
2769
|
+
]
|
|
2438
2770
|
}
|
|
2439
2771
|
);
|
|
2440
2772
|
}
|
|
@@ -2519,6 +2851,8 @@ var Analytics2 = {
|
|
|
2519
2851
|
OverlayProvider,
|
|
2520
2852
|
WebView,
|
|
2521
2853
|
env,
|
|
2854
|
+
loadFullScreenAd,
|
|
2855
|
+
showFullScreenAd,
|
|
2522
2856
|
useCreateUserAgent,
|
|
2523
2857
|
useGeolocation,
|
|
2524
2858
|
useOverlay,
|