@apps-in-toss/framework 1.0.2 → 1.1.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 +758 -356
- package/dist/index.d.cts +7 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.js +699 -302
- package/dist/types.cjs +24 -0
- package/dist/types.d.cts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +2 -0
- package/package.json +9 -8
package/dist/index.cjs
CHANGED
|
@@ -37,16 +37,18 @@ __export(src_exports, {
|
|
|
37
37
|
WebView: () => WebView,
|
|
38
38
|
env: () => env,
|
|
39
39
|
useCreateUserAgent: () => useCreateUserAgent,
|
|
40
|
-
useGeolocation: () => useGeolocation
|
|
40
|
+
useGeolocation: () => useGeolocation,
|
|
41
|
+
useTopNavigation: () => import_private6.useTopNavigation
|
|
41
42
|
});
|
|
42
43
|
module.exports = __toCommonJS(src_exports);
|
|
43
44
|
var import_analytics2 = require("@apps-in-toss/analytics");
|
|
44
45
|
|
|
45
46
|
// src/core/registerApp.tsx
|
|
46
47
|
var import_analytics = require("@apps-in-toss/analytics");
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
48
|
+
var import_native_modules9 = require("@apps-in-toss/native-modules");
|
|
49
|
+
var import_react_native17 = require("@granite-js/react-native");
|
|
50
|
+
var import_react_native18 = require("@toss-design-system/react-native");
|
|
51
|
+
var import_react_native19 = require("react-native");
|
|
50
52
|
|
|
51
53
|
// src/core/components/AppEvent.tsx
|
|
52
54
|
var import_native_modules2 = require("@apps-in-toss/native-modules");
|
|
@@ -189,11 +191,277 @@ function AppUpdate() {
|
|
|
189
191
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
|
|
190
192
|
}
|
|
191
193
|
|
|
192
|
-
// src/core/
|
|
194
|
+
// src/core/components/BuiltinNavigationBar/index.tsx
|
|
195
|
+
var import_native_modules7 = require("@apps-in-toss/native-modules");
|
|
196
|
+
var import_react_native13 = require("@granite-js/react-native");
|
|
197
|
+
var import_react_native14 = require("@toss-design-system/react-native");
|
|
198
|
+
var import_private2 = require("@toss-design-system/react-native/private");
|
|
199
|
+
var import_es_hangul = require("es-hangul");
|
|
200
|
+
var import_react7 = require("react");
|
|
201
|
+
var import_react_native15 = require("react-native");
|
|
202
|
+
|
|
203
|
+
// src/core/components/BuiltinNavigationBar/useBuiltinNavigationBarLogging.tsx
|
|
193
204
|
var import_native_modules3 = require("@apps-in-toss/native-modules");
|
|
194
|
-
var import_react_native6 = require("@
|
|
205
|
+
var import_react_native6 = require("@granite-js/react-native");
|
|
206
|
+
var NAVI_BAR_IMPRESSION_SCHEMA_ID = 1596837;
|
|
207
|
+
var NAVI_BAR_IMPRESSION_LOG_NAME = "appsintoss_app_visit__common_module::impression__navigation_bar";
|
|
208
|
+
var CLOSE_POPUP_SHOW_SCHEMA_ID = 1644490;
|
|
209
|
+
var CLOSE_POPUP_SHOW_LOG_NAME = "appsintoss_app_visit__common_module::popup__close_app";
|
|
210
|
+
var CLOSE_BUTTON_CLICK_SCHEMA_ID = 1596831;
|
|
211
|
+
var CLOSE_BUTTON_CLICK_LOG_NAME = "appsintoss_app_visit__common_module::click__icon_close";
|
|
212
|
+
var CLOSE_POPUP_CTA_CLICK_SCHEMA_ID = 1644492;
|
|
213
|
+
var CLOSE_POPUP_CTA_CLICK_LOG_NAME = "appsintoss_app_visit__common_module::popup__close_app::click__cta";
|
|
214
|
+
var HOME_BUTTON_CLICK_SCHEMA_ID = 1596839;
|
|
215
|
+
var HOME_BUTTON_CLICK_LOG_NAME = "appsintoss_app_visit__common_module::click__icon_home";
|
|
216
|
+
function useBuiltinNavigationBarLogging() {
|
|
217
|
+
const referrer = useReferrer();
|
|
218
|
+
const baseParams = {
|
|
219
|
+
referrer,
|
|
220
|
+
app_name: import_react_native6.Granite.appName
|
|
221
|
+
};
|
|
222
|
+
const logNavBarImpression = (naviBarConfig) => {
|
|
223
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
224
|
+
log_name: NAVI_BAR_IMPRESSION_LOG_NAME,
|
|
225
|
+
log_type: "event",
|
|
226
|
+
params: {
|
|
227
|
+
...naviBarConfig,
|
|
228
|
+
...baseParams,
|
|
229
|
+
event_type: "impression",
|
|
230
|
+
schema_id: NAVI_BAR_IMPRESSION_SCHEMA_ID
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
const logHomeButtonClick = () => {
|
|
235
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
236
|
+
log_name: HOME_BUTTON_CLICK_LOG_NAME,
|
|
237
|
+
log_type: "event",
|
|
238
|
+
params: {
|
|
239
|
+
...baseParams,
|
|
240
|
+
event_type: "click",
|
|
241
|
+
schema_id: HOME_BUTTON_CLICK_SCHEMA_ID
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
};
|
|
245
|
+
const logCloseButtonClick = () => {
|
|
246
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
247
|
+
log_name: CLOSE_BUTTON_CLICK_LOG_NAME,
|
|
248
|
+
log_type: "event",
|
|
249
|
+
params: {
|
|
250
|
+
...baseParams,
|
|
251
|
+
event_type: "click",
|
|
252
|
+
schema_id: CLOSE_BUTTON_CLICK_SCHEMA_ID
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
const logClosePopupShow = () => {
|
|
257
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
258
|
+
log_name: CLOSE_POPUP_SHOW_LOG_NAME,
|
|
259
|
+
log_type: "popup",
|
|
260
|
+
params: {
|
|
261
|
+
...baseParams,
|
|
262
|
+
schema_id: CLOSE_POPUP_SHOW_SCHEMA_ID
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
const logClosePopupCtaClick = (confirm) => {
|
|
267
|
+
import_native_modules3.INTERNAL__module.tossCoreEventLog({
|
|
268
|
+
log_name: CLOSE_POPUP_CTA_CLICK_LOG_NAME,
|
|
269
|
+
log_type: "event",
|
|
270
|
+
params: {
|
|
271
|
+
...baseParams,
|
|
272
|
+
close_yn: confirm ? "Y" : "N",
|
|
273
|
+
schema_id: CLOSE_POPUP_CTA_CLICK_SCHEMA_ID,
|
|
274
|
+
event_type: "click"
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
};
|
|
278
|
+
return {
|
|
279
|
+
navBarImpression: logNavBarImpression,
|
|
280
|
+
closePopupShow: logClosePopupShow,
|
|
281
|
+
closePopupCtaClick: logClosePopupCtaClick,
|
|
282
|
+
closeButtonClick: logCloseButtonClick,
|
|
283
|
+
homeButtonClick: logHomeButtonClick
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
288
|
+
var import_native_modules6 = require("@apps-in-toss/native-modules");
|
|
289
|
+
var import_react_native11 = require("@granite-js/react-native");
|
|
290
|
+
var import_react_native12 = require("@toss-design-system/react-native");
|
|
291
|
+
var import_private = require("@toss-design-system/react-native/private");
|
|
292
|
+
var import_react6 = require("react");
|
|
293
|
+
|
|
294
|
+
// src/core/hooks/useMoreButtonBottomSheet/useMoreButtonBottomSheetLogging.tsx
|
|
295
|
+
var import_native_modules4 = require("@apps-in-toss/native-modules");
|
|
296
|
+
var import_react_native7 = require("@granite-js/react-native");
|
|
297
|
+
var BOTTOM_SHEET_SCHEMA_ID = 1596825;
|
|
298
|
+
var BOTTOM_SHEET_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__more";
|
|
299
|
+
var BOTTOM_SHEET_OPEN_SCHEMA_ID = 1596829;
|
|
300
|
+
var BOTTOM_SHEET_OPEN_LOG_NAME = "appsintoss_app_visit__common_module::click__icon_more";
|
|
301
|
+
var BOTTOM_SHEET_CLOSE_CLICK_SCHEMA_ID = 1596843;
|
|
302
|
+
var BOTTOM_SHEET_CLOSE_CLICK_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__more::click__close";
|
|
303
|
+
var BOTTOM_SHEET_MENU_CLICK_SCHEMA_ID = 1596841;
|
|
304
|
+
var BOTTOM_SHEET_MENU_CLICK_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__more::click__menu";
|
|
305
|
+
function useMoreButtonBottomSheetLogging() {
|
|
306
|
+
const referrer = useReferrer();
|
|
307
|
+
const baseParams = {
|
|
308
|
+
referrer,
|
|
309
|
+
app_name: import_react_native7.Granite.appName
|
|
310
|
+
};
|
|
311
|
+
const logBottomSheetShow = () => {
|
|
312
|
+
import_native_modules4.INTERNAL__module.tossCoreEventLog({
|
|
313
|
+
log_name: BOTTOM_SHEET_LOG_NAME,
|
|
314
|
+
log_type: "popup",
|
|
315
|
+
params: {
|
|
316
|
+
...baseParams,
|
|
317
|
+
schema_id: BOTTOM_SHEET_SCHEMA_ID
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
const logBottomSheetOpen = () => {
|
|
322
|
+
import_native_modules4.INTERNAL__module.tossCoreEventLog({
|
|
323
|
+
log_name: BOTTOM_SHEET_OPEN_LOG_NAME,
|
|
324
|
+
log_type: "event",
|
|
325
|
+
params: {
|
|
326
|
+
...baseParams,
|
|
327
|
+
schema_id: BOTTOM_SHEET_OPEN_SCHEMA_ID,
|
|
328
|
+
event_type: "click"
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
const logBottomSheetCloseClick = () => {
|
|
333
|
+
import_native_modules4.INTERNAL__module.tossCoreEventLog({
|
|
334
|
+
log_name: BOTTOM_SHEET_CLOSE_CLICK_LOG_NAME,
|
|
335
|
+
log_type: "event",
|
|
336
|
+
params: {
|
|
337
|
+
...baseParams,
|
|
338
|
+
schema_id: BOTTOM_SHEET_CLOSE_CLICK_SCHEMA_ID,
|
|
339
|
+
event_type: "click"
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
const logBottomSheetMenuClick = ({ title }) => {
|
|
344
|
+
import_native_modules4.INTERNAL__module.tossCoreEventLog({
|
|
345
|
+
log_name: BOTTOM_SHEET_MENU_CLICK_LOG_NAME,
|
|
346
|
+
log_type: "event",
|
|
347
|
+
params: {
|
|
348
|
+
...baseParams,
|
|
349
|
+
schema_id: BOTTOM_SHEET_MENU_CLICK_SCHEMA_ID,
|
|
350
|
+
event_type: "click",
|
|
351
|
+
item_title: title
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
};
|
|
355
|
+
return {
|
|
356
|
+
show: logBottomSheetShow,
|
|
357
|
+
open: logBottomSheetOpen,
|
|
358
|
+
close: logBottomSheetCloseClick,
|
|
359
|
+
menuClick: logBottomSheetMenuClick
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// src/hooks/useAppUpdateDialog.tsx
|
|
364
|
+
var import_native_modules5 = require("@apps-in-toss/native-modules");
|
|
365
|
+
var import_react_native9 = require("@granite-js/react-native");
|
|
366
|
+
var import_react_native10 = require("@toss-design-system/react-native");
|
|
195
367
|
var import_react5 = require("react");
|
|
196
368
|
|
|
369
|
+
// src/utils/market.ts
|
|
370
|
+
var import_react_native8 = require("react-native");
|
|
371
|
+
var PLAYSTORE_LINK = "https://play.google.com/store/apps/details?id=viva.republica.toss";
|
|
372
|
+
var APPSTORE_LINK = "https://itunes.apple.com/app/id839333328";
|
|
373
|
+
var getMarketLink = () => {
|
|
374
|
+
return import_react_native8.Platform.OS === "android" ? PLAYSTORE_LINK : APPSTORE_LINK;
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
// src/hooks/useAppUpdateDialog.tsx
|
|
378
|
+
function useAppUpdateDialog() {
|
|
379
|
+
const { openConfirm } = (0, import_react_native10.useDialog)();
|
|
380
|
+
const logging = useAppUpdateDialogLogging();
|
|
381
|
+
const openAppUpdateDialog = (0, import_react5.useCallback)(
|
|
382
|
+
async ({
|
|
383
|
+
title,
|
|
384
|
+
description,
|
|
385
|
+
leftButton = "\uB2EB\uAE30",
|
|
386
|
+
rightButton = "\uC5C5\uB370\uC774\uD2B8\uD558\uAE30"
|
|
387
|
+
}) => {
|
|
388
|
+
logging.show();
|
|
389
|
+
const isConfirmed = await openConfirm({
|
|
390
|
+
title,
|
|
391
|
+
description,
|
|
392
|
+
leftButton,
|
|
393
|
+
rightButton,
|
|
394
|
+
closeOnDimmerClick: true
|
|
395
|
+
});
|
|
396
|
+
if (!isConfirmed) {
|
|
397
|
+
logging.close();
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
logging.update();
|
|
401
|
+
const STORE_SCHEME = getMarketLink();
|
|
402
|
+
(0, import_react_native9.openURL)(`supertoss://web?url=${STORE_SCHEME}&external=browser`);
|
|
403
|
+
},
|
|
404
|
+
[logging, openConfirm]
|
|
405
|
+
);
|
|
406
|
+
return {
|
|
407
|
+
open: openAppUpdateDialog
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
var UPDATE_DIALOG_SCHEMA_ID = 1634992;
|
|
411
|
+
var UPDATE_DIALOG_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__app_update";
|
|
412
|
+
var UPDATE_DIALOG_CTA_CLICK_SCHEMA_ID = 1634996;
|
|
413
|
+
var UPDATE_DIALOG_CTA_CLICK_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__app_update::click__cta";
|
|
414
|
+
function useAppUpdateDialogLogging() {
|
|
415
|
+
const referrer = useReferrer();
|
|
416
|
+
const baseParams = {
|
|
417
|
+
referrer,
|
|
418
|
+
app_name: import_react_native9.Granite.appName
|
|
419
|
+
};
|
|
420
|
+
const logUpdateClick = () => {
|
|
421
|
+
import_native_modules5.INTERNAL__module.tossCoreEventLog({
|
|
422
|
+
log_name: UPDATE_DIALOG_CTA_CLICK_LOG_NAME,
|
|
423
|
+
log_type: "event",
|
|
424
|
+
params: {
|
|
425
|
+
...baseParams,
|
|
426
|
+
schema_id: UPDATE_DIALOG_CTA_CLICK_SCHEMA_ID,
|
|
427
|
+
event_type: "click",
|
|
428
|
+
button_type: "update"
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
const logCloseClick = () => {
|
|
433
|
+
import_native_modules5.INTERNAL__module.tossCoreEventLog({
|
|
434
|
+
log_name: UPDATE_DIALOG_CTA_CLICK_LOG_NAME,
|
|
435
|
+
log_type: "event",
|
|
436
|
+
params: {
|
|
437
|
+
...baseParams,
|
|
438
|
+
schema_id: UPDATE_DIALOG_CTA_CLICK_SCHEMA_ID,
|
|
439
|
+
event_type: "click",
|
|
440
|
+
button_type: "close"
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
};
|
|
444
|
+
const logDialogShow = () => {
|
|
445
|
+
import_native_modules5.INTERNAL__module.tossCoreEventLog({
|
|
446
|
+
log_name: UPDATE_DIALOG_LOG_NAME,
|
|
447
|
+
log_type: "popup",
|
|
448
|
+
params: {
|
|
449
|
+
...baseParams,
|
|
450
|
+
schema_id: UPDATE_DIALOG_SCHEMA_ID
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
};
|
|
454
|
+
return { update: logUpdateClick, close: logCloseClick, show: logDialogShow };
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// src/core/utils/ensureValue.ts
|
|
458
|
+
function ensureValue(value, name) {
|
|
459
|
+
if (value === void 0) {
|
|
460
|
+
throw new Error(`${name} is required`);
|
|
461
|
+
}
|
|
462
|
+
return value;
|
|
463
|
+
}
|
|
464
|
+
|
|
197
465
|
// src/core/utils/getAppsInTossGlobals.ts
|
|
198
466
|
function getAppsInTossGlobals() {
|
|
199
467
|
if (global.__appsInToss == null) {
|
|
@@ -202,73 +470,312 @@ function getAppsInTossGlobals() {
|
|
|
202
470
|
return global.__appsInToss;
|
|
203
471
|
}
|
|
204
472
|
|
|
473
|
+
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
474
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
475
|
+
var APP_BRIDGE_METHOD_NAME = "getMiniAppsSupportContact";
|
|
476
|
+
function useMoreButtonBottomSheet() {
|
|
477
|
+
const globals = getAppsInTossGlobals();
|
|
478
|
+
const adaptive = (0, import_private.useAdaptive)();
|
|
479
|
+
const [itemList, setItemList] = (0, import_react6.useState)([]);
|
|
480
|
+
const appUpdateDialog = useAppUpdateDialog();
|
|
481
|
+
const logging = useMoreButtonBottomSheetLogging();
|
|
482
|
+
const overlay = (0, import_private.useOverlay)();
|
|
483
|
+
const title = ensureValue(globals.brandDisplayName, "displayName");
|
|
484
|
+
const isSupported = (0, import_native_modules6.isMinVersionSupported)({
|
|
485
|
+
android: "5.226.0",
|
|
486
|
+
ios: "5.226.0"
|
|
487
|
+
});
|
|
488
|
+
(0, import_react6.useEffect)(() => {
|
|
489
|
+
if (!isSupported) {
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
import_native_modules6.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
493
|
+
APP_BRIDGE_METHOD_NAME,
|
|
494
|
+
{},
|
|
495
|
+
{
|
|
496
|
+
onSuccess: ({ items }) => setItemList(items),
|
|
497
|
+
onError: (error) => console.error("\uBA54\uB274 \uBAA9\uB85D\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:", error)
|
|
498
|
+
}
|
|
499
|
+
);
|
|
500
|
+
}, [isSupported]);
|
|
501
|
+
const onClickHandler = async () => {
|
|
502
|
+
logging.open();
|
|
503
|
+
if (!isSupported) {
|
|
504
|
+
await appUpdateDialog.open({
|
|
505
|
+
title: `\uC774 \uAE30\uB2A5\uC744 \uC4F0\uB824\uBA74 \uC571 \uC5C5\uB370\uC774\uD2B8\uAC00 \uD544\uC694\uD574\uC694`,
|
|
506
|
+
description: `\uBB38\uC758, \uAD8C\uD55C \uC124\uC815, \uC2E0\uACE0 \uB4F1 \uAE30\uB2A5\uC744 \uC4F8 \uC218 \uC788\uC5B4\uC694`
|
|
507
|
+
});
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
overlay.open(({ isOpen, exit, close }) => {
|
|
511
|
+
const handleClose = () => {
|
|
512
|
+
logging.close();
|
|
513
|
+
close();
|
|
514
|
+
};
|
|
515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BottomSheetImpressionArea, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
516
|
+
import_react_native12.BottomSheet.Root,
|
|
517
|
+
{
|
|
518
|
+
header: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
519
|
+
import_react_native12.ListHeader,
|
|
520
|
+
{
|
|
521
|
+
title: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_native12.ListHeader.TitleParagraph, { color: adaptive.grey800, fontWeight: "bold", typography: "t5", children: title })
|
|
522
|
+
}
|
|
523
|
+
),
|
|
524
|
+
open: isOpen,
|
|
525
|
+
cta: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
526
|
+
import_react_native12.BottomSheet.CTA,
|
|
527
|
+
{
|
|
528
|
+
size: "large",
|
|
529
|
+
type: "dark",
|
|
530
|
+
style: "weak",
|
|
531
|
+
onPress: () => {
|
|
532
|
+
handleClose();
|
|
533
|
+
},
|
|
534
|
+
children: "\uB2EB\uAE30"
|
|
535
|
+
}
|
|
536
|
+
),
|
|
537
|
+
onClose: handleClose,
|
|
538
|
+
onExited: exit,
|
|
539
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_native12.List, { rowSeparator: "none", children: itemList.map((item) => {
|
|
540
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
541
|
+
import_react_native12.ListRow,
|
|
542
|
+
{
|
|
543
|
+
left: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
544
|
+
import_react_native12.ListRow.Icon,
|
|
545
|
+
{
|
|
546
|
+
color: globals.brandPrimaryColor,
|
|
547
|
+
source: { uri: item.contactIconUrl },
|
|
548
|
+
type: "background"
|
|
549
|
+
}
|
|
550
|
+
),
|
|
551
|
+
contents: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
552
|
+
import_react_native12.ListRow.Texts,
|
|
553
|
+
{
|
|
554
|
+
type: "1RowTypeA",
|
|
555
|
+
top: item.contactItemName,
|
|
556
|
+
topProps: { color: adaptive.grey700 }
|
|
557
|
+
}
|
|
558
|
+
),
|
|
559
|
+
verticalPadding: "extraSmall",
|
|
560
|
+
onPress: () => {
|
|
561
|
+
logging.menuClick({ title: item.contactItemName });
|
|
562
|
+
(0, import_react_native11.openURL)(item.contactUri);
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
item.contactItemName
|
|
566
|
+
);
|
|
567
|
+
}) })
|
|
568
|
+
}
|
|
569
|
+
) });
|
|
570
|
+
});
|
|
571
|
+
};
|
|
572
|
+
return { open: onClickHandler };
|
|
573
|
+
}
|
|
574
|
+
function BottomSheetImpressionArea({ children }) {
|
|
575
|
+
const logging = useMoreButtonBottomSheetLogging();
|
|
576
|
+
(0, import_react6.useEffect)(() => {
|
|
577
|
+
logging.show();
|
|
578
|
+
}, [logging]);
|
|
579
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children });
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
// src/core/utils/safeParseNavigationBar.ts
|
|
583
|
+
function safeParseNavigationBar(navigationBar) {
|
|
584
|
+
if (typeof navigationBar === "object") {
|
|
585
|
+
return navigationBar;
|
|
586
|
+
}
|
|
587
|
+
try {
|
|
588
|
+
return JSON.parse(navigationBar);
|
|
589
|
+
} catch {
|
|
590
|
+
return null;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
205
594
|
// src/core/utils/toIcon.ts
|
|
206
595
|
function toIcon(source) {
|
|
207
596
|
return source.startsWith("http") ? { source: { uri: source } } : { name: source };
|
|
208
597
|
}
|
|
209
598
|
|
|
599
|
+
// src/core/components/BuiltinNavigationBar/index.tsx
|
|
600
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
601
|
+
function BuiltinNavigationBar() {
|
|
602
|
+
const globals = getAppsInTossGlobals();
|
|
603
|
+
const { captureExitLog } = useCaptureExitLog();
|
|
604
|
+
const logging = useBuiltinNavigationBarLogging();
|
|
605
|
+
const { openConfirm } = (0, import_react_native14.useDialog)();
|
|
606
|
+
const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
|
|
607
|
+
const parsedNavigationBar = globals.navigationBar != null ? safeParseNavigationBar(globals.navigationBar) : null;
|
|
608
|
+
const withHomeButton = parsedNavigationBar?.withHomeButton ?? false;
|
|
609
|
+
const withBackButton = parsedNavigationBar?.withBackButton ?? true;
|
|
610
|
+
const initialAccessoryButton = parsedNavigationBar?.initialAccessoryButton;
|
|
611
|
+
const isExternalWebView = globals.webViewType === "external";
|
|
612
|
+
const isGameWebView = globals.webViewType === "game";
|
|
613
|
+
const backEventContext = (0, import_react_native13.useBackEventContext)();
|
|
614
|
+
const overrideCanGoBack = !backEventContext.hasBackEvent;
|
|
615
|
+
const handleBackOrClose = useBackOrCloseNavigation();
|
|
616
|
+
const navigation = (0, import_react_native13.useNavigation)();
|
|
617
|
+
const handlePressTitle = (0, import_react7.useCallback)(() => {
|
|
618
|
+
logging.homeButtonClick();
|
|
619
|
+
if (globals.webViewType != null) {
|
|
620
|
+
import_native_modules7.appsInTossEvent.emit("homeIconButtonClickEvent", void 0);
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
navigation.navigate("/");
|
|
624
|
+
}, [logging, globals.webViewType, navigation]);
|
|
625
|
+
const handleBack = (0, import_react7.useCallback)(() => {
|
|
626
|
+
if (!overrideCanGoBack) {
|
|
627
|
+
backEventContext.onBack();
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
handleBackOrClose();
|
|
631
|
+
}, [overrideCanGoBack, handleBackOrClose, backEventContext]);
|
|
632
|
+
const handleClose = (0, import_react7.useCallback)(async () => {
|
|
633
|
+
logging.closeButtonClick();
|
|
634
|
+
const isConfirmed = await openConfirm({
|
|
635
|
+
title: `${(0, import_es_hangul.josa)(globals.brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
|
|
636
|
+
leftButton: "\uCDE8\uC18C",
|
|
637
|
+
rightButton: "\uC885\uB8CC\uD558\uAE30",
|
|
638
|
+
closeOnDimmerClick: true,
|
|
639
|
+
onEntered: logging.closePopupShow
|
|
640
|
+
});
|
|
641
|
+
logging.closePopupCtaClick(isConfirmed);
|
|
642
|
+
if (isConfirmed) {
|
|
643
|
+
captureExitLog(Date.now());
|
|
644
|
+
(0, import_react_native13.closeView)();
|
|
645
|
+
}
|
|
646
|
+
}, [captureExitLog, globals.brandDisplayName, logging, openConfirm]);
|
|
647
|
+
(0, import_react7.useEffect)(() => {
|
|
648
|
+
const backHandler = () => {
|
|
649
|
+
handleClose();
|
|
650
|
+
return true;
|
|
651
|
+
};
|
|
652
|
+
import_react_native15.BackHandler.addEventListener("hardwareBackPress", backHandler);
|
|
653
|
+
return () => {
|
|
654
|
+
import_react_native15.BackHandler.removeEventListener("hardwareBackPress", backHandler);
|
|
655
|
+
};
|
|
656
|
+
}, [handleClose]);
|
|
657
|
+
if (isExternalWebView) {
|
|
658
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {});
|
|
659
|
+
}
|
|
660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(BuiltinNavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
661
|
+
import_private2.TopNavigation,
|
|
662
|
+
{
|
|
663
|
+
title: globals.brandDisplayName,
|
|
664
|
+
icon: toIcon(globals.brandIcon),
|
|
665
|
+
onPressDots: openMoreButtonBottomSheet,
|
|
666
|
+
contentVisible: isGameWebView ? false : true,
|
|
667
|
+
onPressTitle: withHomeButton ? handlePressTitle : void 0,
|
|
668
|
+
onPressClose: handleClose,
|
|
669
|
+
withHome: withHomeButton,
|
|
670
|
+
fixedRightButton: initialAccessoryButton ? {
|
|
671
|
+
title: initialAccessoryButton.title,
|
|
672
|
+
icon: initialAccessoryButton.icon,
|
|
673
|
+
id: initialAccessoryButton.id
|
|
674
|
+
} : void 0,
|
|
675
|
+
children: isGameWebView === false ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_private2.NavigationLeft, { visible: withBackButton, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_private2.NavigationBackButton, { onPress: handleBack, canGoBack: false }) }) : null
|
|
676
|
+
}
|
|
677
|
+
) });
|
|
678
|
+
}
|
|
679
|
+
function useBackOrCloseNavigation() {
|
|
680
|
+
const navigation = (0, import_react_native13.useNavigation)();
|
|
681
|
+
return (0, import_react7.useCallback)(() => {
|
|
682
|
+
if (navigation.canGoBack()) {
|
|
683
|
+
navigation.goBack();
|
|
684
|
+
} else {
|
|
685
|
+
(0, import_react_native13.closeView)();
|
|
686
|
+
}
|
|
687
|
+
}, [navigation]);
|
|
688
|
+
}
|
|
689
|
+
function BuiltinNavigationBarImpressionArea({
|
|
690
|
+
children,
|
|
691
|
+
withHomeButton
|
|
692
|
+
}) {
|
|
693
|
+
const hasLogged = (0, import_react7.useRef)(false);
|
|
694
|
+
const logging = useBuiltinNavigationBarLogging();
|
|
695
|
+
(0, import_react7.useEffect)(() => {
|
|
696
|
+
if (hasLogged.current === false) {
|
|
697
|
+
logging.navBarImpression({ home_icon_yn: withHomeButton ? "Y" : "N" });
|
|
698
|
+
hasLogged.current = true;
|
|
699
|
+
}
|
|
700
|
+
}, []);
|
|
701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children });
|
|
702
|
+
}
|
|
703
|
+
|
|
210
704
|
// src/core/hooks/useAppsInTossBridge.ts
|
|
705
|
+
var import_native_modules8 = require("@apps-in-toss/native-modules");
|
|
706
|
+
var import_react_native16 = require("@toss-design-system/react-native");
|
|
707
|
+
var import_react8 = require("react");
|
|
211
708
|
function useAppsInTossBridge() {
|
|
212
|
-
const controller = (0,
|
|
213
|
-
const
|
|
214
|
-
(0,
|
|
709
|
+
const controller = (0, import_react_native16.useBridge)();
|
|
710
|
+
const appsInTossGlobals = getAppsInTossGlobals();
|
|
711
|
+
(0, import_react8.useEffect)(() => {
|
|
215
712
|
const commonProps = {
|
|
216
|
-
serviceName:
|
|
217
|
-
icon: toIcon(
|
|
218
|
-
color:
|
|
219
|
-
colorMode:
|
|
713
|
+
serviceName: appsInTossGlobals.brandDisplayName,
|
|
714
|
+
icon: toIcon(appsInTossGlobals.brandIcon),
|
|
715
|
+
color: appsInTossGlobals.brandPrimaryColor,
|
|
716
|
+
colorMode: appsInTossGlobals.brandBridgeColorMode
|
|
220
717
|
};
|
|
221
718
|
controller.open({
|
|
222
719
|
...commonProps,
|
|
223
720
|
onExited: () => {
|
|
224
|
-
|
|
721
|
+
import_native_modules8.appsInTossEvent.emit("entryMessageExited", void 0);
|
|
225
722
|
}
|
|
226
723
|
});
|
|
227
724
|
}, []);
|
|
228
725
|
}
|
|
229
726
|
|
|
230
727
|
// src/core/registerApp.tsx
|
|
231
|
-
var
|
|
728
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
232
729
|
function AppsInTossContainer(Container, { children, ...initialProps }) {
|
|
233
|
-
if (!(0,
|
|
730
|
+
if (!(0, import_native_modules9.isMinVersionSupported)({
|
|
234
731
|
android: "5.220.0",
|
|
235
732
|
ios: "5.221.0"
|
|
236
733
|
})) {
|
|
237
|
-
return /* @__PURE__ */ (0,
|
|
238
|
-
/* @__PURE__ */ (0,
|
|
239
|
-
/* @__PURE__ */ (0,
|
|
240
|
-
/* @__PURE__ */ (0,
|
|
734
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
735
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AppEvent.Entry, {}),
|
|
736
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AppEvent.System, { ...initialProps }),
|
|
737
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AppUpdate, {})
|
|
241
738
|
] });
|
|
242
739
|
}
|
|
243
|
-
return /* @__PURE__ */ (0,
|
|
244
|
-
/* @__PURE__ */ (0,
|
|
245
|
-
/* @__PURE__ */ (0,
|
|
246
|
-
/* @__PURE__ */ (0,
|
|
247
|
-
/* @__PURE__ */ (0,
|
|
740
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
741
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AppEvent.StayTime, {}),
|
|
742
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AppEvent.Entry, {}),
|
|
743
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AppEvent.System, { ...initialProps }),
|
|
744
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native18.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TDSContainer, { ...initialProps, children }) }) })
|
|
248
745
|
] });
|
|
249
746
|
}
|
|
250
747
|
function TDSContainer({ children }) {
|
|
251
748
|
useAppsInTossBridge();
|
|
252
|
-
return /* @__PURE__ */ (0,
|
|
749
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });
|
|
253
750
|
}
|
|
254
751
|
function registerApp(container, { context, analytics }) {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
752
|
+
const appName = getAppName();
|
|
753
|
+
const isRegistered = import_react_native19.AppRegistry.getAppKeys().includes(appName);
|
|
754
|
+
if (!isRegistered) {
|
|
755
|
+
import_analytics.Analytics.init({
|
|
756
|
+
logger: (params) => void (0, import_native_modules9.eventLog)(params),
|
|
757
|
+
debug: analytics?.debug ?? __DEV__
|
|
758
|
+
});
|
|
759
|
+
const App = import_react_native17.Granite.registerApp(AppsInTossContainer.bind(null, container), {
|
|
760
|
+
appName,
|
|
761
|
+
context,
|
|
762
|
+
setIosSwipeGestureEnabled: import_native_modules9.setIosSwipeGestureEnabled,
|
|
763
|
+
router: {
|
|
764
|
+
screenContainer: AppsInTossScreenContainer,
|
|
765
|
+
defaultScreenOption: {
|
|
766
|
+
statusBarStyle: "dark"
|
|
767
|
+
}
|
|
267
768
|
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
return
|
|
769
|
+
});
|
|
770
|
+
global.Page = App;
|
|
771
|
+
}
|
|
772
|
+
return global.Page;
|
|
773
|
+
}
|
|
774
|
+
function AppsInTossScreenContainer({ children }) {
|
|
775
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_analytics.Analytics.Screen, { children: [
|
|
776
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(BuiltinNavigationBar, {}),
|
|
777
|
+
children
|
|
778
|
+
] });
|
|
272
779
|
}
|
|
273
780
|
function getAppName() {
|
|
274
781
|
try {
|
|
@@ -285,32 +792,29 @@ var AppsInToss = {
|
|
|
285
792
|
};
|
|
286
793
|
|
|
287
794
|
// src/components/WebView.tsx
|
|
288
|
-
var
|
|
795
|
+
var import_native_modules17 = require("@apps-in-toss/native-modules");
|
|
289
796
|
var appsInTossAsyncBridges = __toESM(require("@apps-in-toss/native-modules/async-bridges"), 1);
|
|
290
797
|
var appsInTossConstantBridges = __toESM(require("@apps-in-toss/native-modules/constant-bridges"), 1);
|
|
291
798
|
var appsInTossEventBridges = __toESM(require("@apps-in-toss/native-modules/event-bridges"), 1);
|
|
292
|
-
var
|
|
799
|
+
var import_react_native30 = require("@granite-js/react-native");
|
|
293
800
|
var graniteAsyncBridges = __toESM(require("@granite-js/react-native/async-bridges"), 1);
|
|
294
801
|
var graniteConstantBridges = __toESM(require("@granite-js/react-native/constant-bridges"), 1);
|
|
295
|
-
var
|
|
296
|
-
var
|
|
297
|
-
var
|
|
298
|
-
var
|
|
802
|
+
var import_react_native31 = require("@toss-design-system/react-native");
|
|
803
|
+
var import_private5 = require("@toss-design-system/react-native/private");
|
|
804
|
+
var import_react15 = require("react");
|
|
805
|
+
var import_react_native32 = require("react-native");
|
|
299
806
|
|
|
300
807
|
// src/components/GameWebView.tsx
|
|
301
|
-
var
|
|
808
|
+
var import_native_modules13 = require("@apps-in-toss/native-modules");
|
|
302
809
|
var import_react_native_webview = require("@granite-js/native/react-native-webview");
|
|
303
|
-
var
|
|
304
|
-
var
|
|
305
|
-
var import_es_hangul2 = require("es-hangul");
|
|
306
|
-
var import_react8 = require("react");
|
|
307
|
-
var import_react_native23 = require("react-native");
|
|
810
|
+
var import_react11 = require("react");
|
|
811
|
+
var import_react_native26 = require("react-native");
|
|
308
812
|
|
|
309
813
|
// src/components/GameProfile.tsx
|
|
310
|
-
var
|
|
311
|
-
var
|
|
312
|
-
var
|
|
313
|
-
var
|
|
814
|
+
var import_native_modules12 = require("@apps-in-toss/native-modules");
|
|
815
|
+
var import_react_native24 = require("@toss-design-system/react-native");
|
|
816
|
+
var import_react10 = require("react");
|
|
817
|
+
var import_react_native25 = require("react-native");
|
|
314
818
|
|
|
315
819
|
// src/constant/game-center.ts
|
|
316
820
|
var GAME_PROFILE_WEBVIEW_URL = "https://service.toss.im/game-center/profile";
|
|
@@ -320,23 +824,23 @@ var GAME_CENTER_MIN_VERSION = {
|
|
|
320
824
|
};
|
|
321
825
|
|
|
322
826
|
// src/hooks/useGameCenterProfile.ts
|
|
323
|
-
var
|
|
324
|
-
var
|
|
325
|
-
var
|
|
326
|
-
var
|
|
327
|
-
var
|
|
827
|
+
var import_native_modules11 = require("@apps-in-toss/native-modules");
|
|
828
|
+
var import_react_native22 = require("@granite-js/react-native");
|
|
829
|
+
var import_react_native23 = require("@toss-design-system/react-native");
|
|
830
|
+
var import_es_hangul2 = require("es-hangul");
|
|
831
|
+
var import_react9 = require("react");
|
|
328
832
|
|
|
329
833
|
// src/components/GameProfileToast.tsx
|
|
330
|
-
var
|
|
331
|
-
var
|
|
332
|
-
var
|
|
834
|
+
var import_react_native20 = require("@toss-design-system/react-native");
|
|
835
|
+
var import_private3 = require("@toss-design-system/react-native/private");
|
|
836
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
333
837
|
var useGameProfileToast = () => {
|
|
334
|
-
const overlay = (0,
|
|
838
|
+
const overlay = (0, import_private3.useOverlay)();
|
|
335
839
|
const openGameProfileToast = (nickname, profileImageUri) => {
|
|
336
840
|
return new Promise((resolve) => {
|
|
337
841
|
overlay.open(({ isOpen, close, exit }) => {
|
|
338
|
-
return /* @__PURE__ */ (0,
|
|
339
|
-
|
|
842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_private3.ColorPreferenceProvider, { colorPreference: "dark", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_private3.AdaptiveColorProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
843
|
+
import_react_native20.Toast,
|
|
340
844
|
{
|
|
341
845
|
open: isOpen,
|
|
342
846
|
onClose: () => {
|
|
@@ -346,11 +850,11 @@ var useGameProfileToast = () => {
|
|
|
346
850
|
onExited: exit,
|
|
347
851
|
position: "top",
|
|
348
852
|
text: `${nickname}\uB2D8 \uBC18\uAC00\uC6CC\uC694!`,
|
|
349
|
-
icon: /* @__PURE__ */ (0,
|
|
350
|
-
|
|
853
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
854
|
+
import_react_native20.Asset.Image,
|
|
351
855
|
{
|
|
352
856
|
style: { borderRadius: 64, overflow: "hidden" },
|
|
353
|
-
frameShape:
|
|
857
|
+
frameShape: import_react_native20.Asset.frameShape.CleanW32,
|
|
354
858
|
source: { uri: profileImageUri }
|
|
355
859
|
}
|
|
356
860
|
)
|
|
@@ -368,20 +872,12 @@ var DEFAULT_ERROR = {
|
|
|
368
872
|
description: "\uBB38\uC81C\uAC00 \uACC4\uC18D\uB418\uBA74 \uD1A0\uC2A4 \uACE0\uAC1D\uC13C\uD130(1599-4905)\uB85C \uBB38\uC758\uD574\uC8FC\uC138\uC694."
|
|
369
873
|
};
|
|
370
874
|
|
|
371
|
-
// src/utils/market.ts
|
|
372
|
-
var import_react_native10 = require("react-native");
|
|
373
|
-
var PLAYSTORE_LINK = "https://play.google.com/store/apps/details?id=viva.republica.toss";
|
|
374
|
-
var APPSTORE_LINK = "https://itunes.apple.com/app/id839333328";
|
|
375
|
-
var getMarketLink = () => {
|
|
376
|
-
return import_react_native10.Platform.OS === "android" ? PLAYSTORE_LINK : APPSTORE_LINK;
|
|
377
|
-
};
|
|
378
|
-
|
|
379
875
|
// src/utils/openTransparentWebView.ts
|
|
380
|
-
var
|
|
876
|
+
var import_react_native21 = require("@granite-js/react-native");
|
|
381
877
|
|
|
382
878
|
// src/private.ts
|
|
383
|
-
var
|
|
384
|
-
var INTERNAL__onVisibilityChangedByTransparentServiceWeb =
|
|
879
|
+
var import_native_modules10 = require("@apps-in-toss/native-modules");
|
|
880
|
+
var INTERNAL__onVisibilityChangedByTransparentServiceWeb = import_native_modules10.onVisibilityChangedByTransparentServiceWeb;
|
|
385
881
|
|
|
386
882
|
// src/utils/openTransparentWebView.ts
|
|
387
883
|
var openTransparentWebView = ({
|
|
@@ -411,29 +907,29 @@ var openTransparentWebView = ({
|
|
|
411
907
|
}
|
|
412
908
|
}
|
|
413
909
|
});
|
|
414
|
-
(0,
|
|
910
|
+
(0, import_react_native21.openURL)(url.toString());
|
|
415
911
|
};
|
|
416
912
|
|
|
417
913
|
// src/hooks/useGameCenterProfile.ts
|
|
418
914
|
var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
419
|
-
const [profileData, setProfileData] = (0,
|
|
420
|
-
const [isProfileDataLoading, setIsProfileDataLoading] = (0,
|
|
421
|
-
const [isProfileDataRefetching, setIsProfileDataRefetching] = (0,
|
|
915
|
+
const [profileData, setProfileData] = (0, import_react9.useState)(void 0);
|
|
916
|
+
const [isProfileDataLoading, setIsProfileDataLoading] = (0, import_react9.useState)(true);
|
|
917
|
+
const [isProfileDataRefetching, setIsProfileDataRefetching] = (0, import_react9.useState)(false);
|
|
422
918
|
const shouldShowLoadingOverlay = isProfileDataLoading && isReadyForProfileUI;
|
|
423
919
|
const shouldShowProfileNotFoundOverlay = profileData?.statusCode === "PROFILE_NOT_FOUND" && isReadyForProfileUI && !isProfileDataRefetching;
|
|
424
920
|
const canShowBottomSheetOrToast = !isProfileDataLoading && isReadyForProfileUI;
|
|
425
|
-
const [isWebviewLoading, setIsWebviewLoading] = (0,
|
|
426
|
-
const isCompletedProfileFlow = (0,
|
|
427
|
-
const { openAlert, openConfirm } = (0,
|
|
921
|
+
const [isWebviewLoading, setIsWebviewLoading] = (0, import_react9.useState)(false);
|
|
922
|
+
const isCompletedProfileFlow = (0, import_react9.useRef)(false);
|
|
923
|
+
const { openAlert, openConfirm } = (0, import_react_native23.useDialog)();
|
|
428
924
|
const { openGameProfileToast } = useGameProfileToast();
|
|
429
|
-
const openErrorAlert = (0,
|
|
925
|
+
const openErrorAlert = (0, import_react9.useCallback)(async () => {
|
|
430
926
|
await openAlert({
|
|
431
927
|
title: DEFAULT_ERROR.title,
|
|
432
928
|
description: DEFAULT_ERROR.description
|
|
433
929
|
});
|
|
434
|
-
(0,
|
|
930
|
+
(0, import_react_native22.closeView)();
|
|
435
931
|
}, [openAlert]);
|
|
436
|
-
const openProfileWebview = (0,
|
|
932
|
+
const openProfileWebview = (0, import_react9.useCallback)(() => {
|
|
437
933
|
if (isWebviewLoading) {
|
|
438
934
|
return;
|
|
439
935
|
}
|
|
@@ -445,7 +941,7 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
|
445
941
|
try {
|
|
446
942
|
setIsWebviewLoading(false);
|
|
447
943
|
setIsProfileDataRefetching(true);
|
|
448
|
-
const data = await (0,
|
|
944
|
+
const data = await (0, import_native_modules11.getGameCenterGameProfile)();
|
|
449
945
|
setProfileData(data);
|
|
450
946
|
setIsProfileDataRefetching(false);
|
|
451
947
|
if (data?.statusCode === "SUCCESS") {
|
|
@@ -462,9 +958,9 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
|
462
958
|
}
|
|
463
959
|
});
|
|
464
960
|
}, [isWebviewLoading, openGameProfileToast, openErrorAlert]);
|
|
465
|
-
const updateAppToSupportedMinVersion = (0,
|
|
961
|
+
const updateAppToSupportedMinVersion = (0, import_react9.useCallback)(async () => {
|
|
466
962
|
const upddateConfirmDialogLabel = {
|
|
467
|
-
title: `${(0,
|
|
963
|
+
title: `${(0, import_es_hangul2.josa)(getAppsInTossGlobals().brandDisplayName, "\uC744/\uB97C")} \uD558\uB824\uBA74
|
|
468
964
|
\uC571\uC744 \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694`,
|
|
469
965
|
leftButton: "\uB2EB\uAE30",
|
|
470
966
|
rightButton: "\uC5C5\uB370\uC774\uD2B8\uD558\uAE30"
|
|
@@ -476,11 +972,11 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
|
476
972
|
closeOnDimmerClick: true
|
|
477
973
|
});
|
|
478
974
|
if (!isConfirmed) {
|
|
479
|
-
(0,
|
|
975
|
+
(0, import_react_native22.closeView)();
|
|
480
976
|
return;
|
|
481
977
|
}
|
|
482
978
|
const STORE_SCHEME = getMarketLink();
|
|
483
|
-
(0,
|
|
979
|
+
(0, import_react_native22.openURL)(`supertoss://web?url=${STORE_SCHEME}&external=browser`);
|
|
484
980
|
}, [openConfirm]);
|
|
485
981
|
return {
|
|
486
982
|
profileData,
|
|
@@ -509,7 +1005,7 @@ var Z_INDEX = {
|
|
|
509
1005
|
};
|
|
510
1006
|
|
|
511
1007
|
// src/components/GameProfile.tsx
|
|
512
|
-
var
|
|
1008
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
513
1009
|
var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
514
1010
|
const {
|
|
515
1011
|
profileData,
|
|
@@ -525,10 +1021,10 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
525
1021
|
openErrorAlert,
|
|
526
1022
|
openGameProfileToast
|
|
527
1023
|
} = useGameCenterProfile(isReadyForProfileUI);
|
|
528
|
-
(0,
|
|
1024
|
+
(0, import_react10.useEffect)(() => {
|
|
529
1025
|
try {
|
|
530
1026
|
const getProfileData = async () => {
|
|
531
|
-
const data = await (0,
|
|
1027
|
+
const data = await (0, import_native_modules12.getGameCenterGameProfile)();
|
|
532
1028
|
setProfileData(data);
|
|
533
1029
|
setIsProfileDataLoading(false);
|
|
534
1030
|
};
|
|
@@ -538,7 +1034,7 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
538
1034
|
setIsProfileDataLoading(false);
|
|
539
1035
|
}
|
|
540
1036
|
}, []);
|
|
541
|
-
(0,
|
|
1037
|
+
(0, import_react10.useEffect)(() => {
|
|
542
1038
|
const handleGameProfileFlow = async () => {
|
|
543
1039
|
if (!canShowBottomSheetOrToast) {
|
|
544
1040
|
return;
|
|
@@ -547,7 +1043,7 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
547
1043
|
return;
|
|
548
1044
|
}
|
|
549
1045
|
isCompletedProfileFlow.current = true;
|
|
550
|
-
if (!(0,
|
|
1046
|
+
if (!(0, import_native_modules12.isMinVersionSupported)(GAME_CENTER_MIN_VERSION)) {
|
|
551
1047
|
updateAppToSupportedMinVersion();
|
|
552
1048
|
return;
|
|
553
1049
|
}
|
|
@@ -568,11 +1064,11 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
568
1064
|
profileData,
|
|
569
1065
|
updateAppToSupportedMinVersion
|
|
570
1066
|
]);
|
|
571
|
-
if (!(0,
|
|
572
|
-
return /* @__PURE__ */ (0,
|
|
573
|
-
/* @__PURE__ */ (0,
|
|
574
|
-
/* @__PURE__ */ (0,
|
|
575
|
-
|
|
1067
|
+
if (!(0, import_native_modules12.isMinVersionSupported)(GAME_CENTER_MIN_VERSION)) {
|
|
1068
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
1069
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native25.View, { style: { flex: 1, position: "relative" }, children }),
|
|
1070
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1071
|
+
import_react_native25.Pressable,
|
|
576
1072
|
{
|
|
577
1073
|
style: {
|
|
578
1074
|
...overlayStyle
|
|
@@ -585,10 +1081,10 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
585
1081
|
] });
|
|
586
1082
|
}
|
|
587
1083
|
if (shouldShowLoadingOverlay || isProfileDataRefetching) {
|
|
588
|
-
return /* @__PURE__ */ (0,
|
|
589
|
-
/* @__PURE__ */ (0,
|
|
590
|
-
/* @__PURE__ */ (0,
|
|
591
|
-
|
|
1084
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
1085
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native25.View, { style: { flex: 1, position: "relative" }, children }),
|
|
1086
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1087
|
+
import_react_native25.View,
|
|
592
1088
|
{
|
|
593
1089
|
style: {
|
|
594
1090
|
...overlayStyle,
|
|
@@ -596,16 +1092,16 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
596
1092
|
alignItems: "center",
|
|
597
1093
|
backgroundColor: "rgba(0, 0, 0, 0.2)"
|
|
598
1094
|
},
|
|
599
|
-
children: /* @__PURE__ */ (0,
|
|
1095
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native24.Loader, { size: "large", type: "light" })
|
|
600
1096
|
}
|
|
601
1097
|
)
|
|
602
1098
|
] });
|
|
603
1099
|
}
|
|
604
1100
|
if (shouldShowProfileNotFoundOverlay) {
|
|
605
|
-
return /* @__PURE__ */ (0,
|
|
606
|
-
/* @__PURE__ */ (0,
|
|
607
|
-
shouldShowProfileNotFoundOverlay && /* @__PURE__ */ (0,
|
|
608
|
-
|
|
1101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
1102
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native25.View, { style: { flex: 1, position: "relative" }, children }),
|
|
1103
|
+
shouldShowProfileNotFoundOverlay && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1104
|
+
import_react_native25.Pressable,
|
|
609
1105
|
{
|
|
610
1106
|
style: {
|
|
611
1107
|
...overlayStyle
|
|
@@ -617,7 +1113,7 @@ var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
|
617
1113
|
)
|
|
618
1114
|
] });
|
|
619
1115
|
}
|
|
620
|
-
return /* @__PURE__ */ (0,
|
|
1116
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native25.View, { style: { flex: 1, position: "relative" }, children }) });
|
|
621
1117
|
};
|
|
622
1118
|
var overlayStyle = {
|
|
623
1119
|
position: "absolute",
|
|
@@ -628,155 +1124,58 @@ var overlayStyle = {
|
|
|
628
1124
|
zIndex: Z_INDEX.PROFILE_OVERLAY
|
|
629
1125
|
};
|
|
630
1126
|
|
|
631
|
-
// src/components/GameWebViewNavigationBar/GameNavigationBar.tsx
|
|
632
|
-
var import_react_native_svg = require("@granite-js/native/react-native-svg");
|
|
633
|
-
var import_react_native19 = require("@toss-design-system/react-native");
|
|
634
|
-
var import_react_native20 = require("react-native");
|
|
635
|
-
|
|
636
|
-
// src/components/GameWebViewNavigationBar/HeaderRight.tsx
|
|
637
|
-
var import_react_native17 = require("react-native");
|
|
638
|
-
|
|
639
|
-
// src/components/GameWebViewNavigationBar/byPlatform.ts
|
|
640
|
-
var import_react_native16 = require("react-native");
|
|
641
|
-
function byPlatform({
|
|
642
|
-
...props
|
|
643
|
-
}) {
|
|
644
|
-
return (props[import_react_native16.Platform.OS] ?? props.fallback)();
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
// src/components/GameWebViewNavigationBar/constants.ts
|
|
648
|
-
var RIGHT_MARGIN = 24;
|
|
649
|
-
var IOS_DEFAULT_MARGIN = 20;
|
|
650
|
-
|
|
651
|
-
// src/components/GameWebViewNavigationBar/HeaderRight.tsx
|
|
652
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
653
|
-
function IOSHeaderRight(props) {
|
|
654
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_native17.View, { style: styles.ios, ...props });
|
|
655
|
-
}
|
|
656
|
-
function AndroidHeaderRight(props) {
|
|
657
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_native17.View, { style: styles.android, ...props });
|
|
658
|
-
}
|
|
659
|
-
function HeaderRight(props) {
|
|
660
|
-
return byPlatform({
|
|
661
|
-
ios: () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(IOSHeaderRight, { ...props }),
|
|
662
|
-
android: () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(AndroidHeaderRight, { ...props }),
|
|
663
|
-
fallback: () => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(IOSHeaderRight, { ...props })
|
|
664
|
-
});
|
|
665
|
-
}
|
|
666
|
-
var styles = import_react_native17.StyleSheet.create({
|
|
667
|
-
ios: {
|
|
668
|
-
marginRight: -IOS_DEFAULT_MARGIN + RIGHT_MARGIN,
|
|
669
|
-
flexDirection: "row"
|
|
670
|
-
},
|
|
671
|
-
android: {
|
|
672
|
-
flexDirection: "row"
|
|
673
|
-
}
|
|
674
|
-
});
|
|
675
|
-
|
|
676
|
-
// src/components/GameWebViewNavigationBar/useSafeAreaTop.ts
|
|
677
|
-
var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
|
|
678
|
-
var import_react_native18 = require("react-native");
|
|
679
|
-
function useSafeAreaTop() {
|
|
680
|
-
const safeAreaInsets = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
|
|
681
|
-
const hasDynamicIsland = import_react_native18.Platform.OS === "ios" && safeAreaInsets.top > 50;
|
|
682
|
-
const safeAreaTop = hasDynamicIsland ? safeAreaInsets.top - 5 : safeAreaInsets.top;
|
|
683
|
-
return safeAreaTop;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
// src/components/GameWebViewNavigationBar/GameNavigationBar.tsx
|
|
687
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
688
|
-
var originXML = '<svg fill="none" height="30" viewBox="0 0 30 30" width="30" xmlns="https://www.w3.org/2000/svg"><rect fill="#031832" fill-opacity=".46" height="30" rx="15" width="30"/><rect height="29.5" rx="14.75" stroke="#d9d9ff" stroke-opacity=".11" stroke-width=".5" width="29.5" x=".25" y=".25"/><path clip-rule="evenodd" d="m16.5119 15.0014 4.7092-4.7092c.0929-.0928.1666-.2031.2169-.32441.0503-.12134.0762-.25141.0762-.38276.0001-.13136-.0258-.26144-.076-.38281s-.1239-.23166-.2167-.32457c-.0929-.09291-.2031-.16662-.3245-.21692-.1213-.05031-.2514-.07622-.3827-.07626-.1314-.00004-.2615.0258-.3828.07603-.1214.05023-.2317.12388-.3246.21673l-4.7092 4.70997-4.71-4.70997c-.1897-.17718-.4408-.27373-.70034-.26927s-.5072.10959-.69069.2932c-.1835.1836-.28848.43132-.29279.69087-.00432.25954.09238.51057.26968.70017l4.71004 4.7092-4.71004 4.7092c-.1392.1401-.23385.3183-.27204.5121-.0382.1939-.01823.3946.05739.5771s.20351.3386.36759.4486.35702.169.55456.1697c.25583 0 .51164-.0975.70664-.2925l4.71-4.71 4.7092 4.71c.0927.093.2029.1668.3243.2172.1213.0504.2514.0763.3828.0763s.2614-.0259.3828-.0763c.1213-.0504.2315-.1242.3243-.2172.0929-.0929.1667-.2032.217-.3246s.0762-.2515.0762-.3829-.0259-.2616-.0762-.383-.1241-.2317-.217-.3245z" fill="#fdfdfe" fill-opacity=".89" fill-rule="evenodd"/></svg>';
|
|
689
|
-
function GameNavigationBar({ onClose }) {
|
|
690
|
-
const safeAreaTop = useSafeAreaTop();
|
|
691
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
692
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native19.PageNavbar, { preference: { type: "none" } }),
|
|
693
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
694
|
-
import_react_native20.View,
|
|
695
|
-
{
|
|
696
|
-
style: {
|
|
697
|
-
width: "100%",
|
|
698
|
-
height: import_react_native20.Platform.OS === "ios" ? 44 : 54,
|
|
699
|
-
flexDirection: "row",
|
|
700
|
-
alignItems: "center",
|
|
701
|
-
justifyContent: "flex-end",
|
|
702
|
-
position: "absolute",
|
|
703
|
-
zIndex: Z_INDEX.CLOSE_BUTTON,
|
|
704
|
-
marginTop: safeAreaTop,
|
|
705
|
-
paddingRight: import_react_native20.Platform.OS === "ios" ? 10 : 8
|
|
706
|
-
},
|
|
707
|
-
pointerEvents: "box-none",
|
|
708
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(HeaderRight, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
709
|
-
import_react_native20.TouchableOpacity,
|
|
710
|
-
{
|
|
711
|
-
hitSlop: { left: 8, right: 8 },
|
|
712
|
-
accessibilityRole: "button",
|
|
713
|
-
accessible: true,
|
|
714
|
-
accessibilityLabel: "\uAC8C\uC784\uC885\uB8CC",
|
|
715
|
-
style: {
|
|
716
|
-
padding: import_react_native20.Platform.OS === "ios" ? 7 : 9
|
|
717
|
-
},
|
|
718
|
-
onPress: onClose,
|
|
719
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native_svg.SvgXml, { xml: originXML, width: 30, height: 30 })
|
|
720
|
-
}
|
|
721
|
-
) })
|
|
722
|
-
}
|
|
723
|
-
)
|
|
724
|
-
] });
|
|
725
|
-
}
|
|
726
|
-
|
|
727
1127
|
// src/components/GameWebView.tsx
|
|
728
1128
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
729
|
-
var GameWebView = (0,
|
|
730
|
-
const
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
const handleClose = (0, import_react8.useCallback)(async () => {
|
|
735
|
-
const isConfirmed = await openConfirm({
|
|
736
|
-
title: `${(0, import_es_hangul2.josa)(brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
|
|
737
|
-
leftButton: "\uCDE8\uC18C",
|
|
738
|
-
rightButton: "\uC885\uB8CC\uD558\uAE30",
|
|
739
|
-
closeOnDimmerClick: true
|
|
740
|
-
});
|
|
741
|
-
if (isConfirmed) {
|
|
742
|
-
captureExitLog(Date.now());
|
|
743
|
-
(0, import_react_native21.closeView)();
|
|
744
|
-
}
|
|
745
|
-
}, [brandDisplayName, captureExitLog, openConfirm]);
|
|
746
|
-
(0, import_react8.useEffect)(() => {
|
|
747
|
-
if (import_react_native23.Platform.OS === "ios") {
|
|
748
|
-
(0, import_native_modules8.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1129
|
+
var GameWebView = (0, import_react11.forwardRef)(function GameWebView2(props, ref) {
|
|
1130
|
+
const [isEntryMessageExited, setIsEntryMessageExited] = (0, import_react11.useState)(false);
|
|
1131
|
+
(0, import_react11.useEffect)(() => {
|
|
1132
|
+
if (import_react_native26.Platform.OS === "ios") {
|
|
1133
|
+
(0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
749
1134
|
return () => {
|
|
750
|
-
(0,
|
|
1135
|
+
(0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
751
1136
|
};
|
|
752
1137
|
}
|
|
753
1138
|
return;
|
|
754
1139
|
}, []);
|
|
755
|
-
(0,
|
|
756
|
-
|
|
757
|
-
handleClose();
|
|
758
|
-
return true;
|
|
759
|
-
};
|
|
760
|
-
import_react_native23.BackHandler.addEventListener("hardwareBackPress", backHandler);
|
|
761
|
-
return () => {
|
|
762
|
-
import_react_native23.BackHandler.removeEventListener("hardwareBackPress", backHandler);
|
|
763
|
-
};
|
|
764
|
-
}, [handleClose]);
|
|
765
|
-
(0, import_react8.useEffect)(() => {
|
|
766
|
-
import_native_modules8.appsInTossEvent.addEventListener("entryMessageExited", {
|
|
1140
|
+
(0, import_react11.useEffect)(() => {
|
|
1141
|
+
import_native_modules13.appsInTossEvent.addEventListener("entryMessageExited", {
|
|
767
1142
|
onEvent: () => {
|
|
768
1143
|
setIsEntryMessageExited(true);
|
|
769
1144
|
}
|
|
770
1145
|
});
|
|
771
1146
|
}, []);
|
|
772
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.
|
|
773
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(GameNavigationBar, { onClose: handleClose }),
|
|
774
|
-
(0, import_native_modules8.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(GameProfile, { isReadyForProfileUI: isEntryMessageExited, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_native_webview.WebView, { ref, ...props })
|
|
775
|
-
] });
|
|
1147
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment, { children: (0, import_native_modules13.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(GameProfile, { isReadyForProfileUI: isEntryMessageExited, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_native_webview.WebView, { ref, ...props }) });
|
|
776
1148
|
});
|
|
777
1149
|
|
|
1150
|
+
// src/components/PartnerWebView.tsx
|
|
1151
|
+
var import_react_native_webview2 = require("@granite-js/native/react-native-webview");
|
|
1152
|
+
var import_react12 = require("react");
|
|
1153
|
+
|
|
1154
|
+
// src/core/utils/mergeRefs.ts
|
|
1155
|
+
function mergeRefs(...refs) {
|
|
1156
|
+
return (value) => {
|
|
1157
|
+
refs.forEach((ref) => {
|
|
1158
|
+
if (typeof ref === "function") {
|
|
1159
|
+
ref(value);
|
|
1160
|
+
} else if (ref != null) {
|
|
1161
|
+
ref.current = value;
|
|
1162
|
+
}
|
|
1163
|
+
});
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
// src/components/PartnerWebView.tsx
|
|
1168
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1169
|
+
var PartnerWebView = (0, import_react12.forwardRef)(
|
|
1170
|
+
function PartnerWebViewScreen(webViewProps, ref) {
|
|
1171
|
+
const webViewRef = (0, import_react12.useRef)(null);
|
|
1172
|
+
const refs = mergeRefs(ref, webViewRef);
|
|
1173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_native_webview2.WebView, { ref: refs, ...webViewProps, style: { flex: 1 } });
|
|
1174
|
+
}
|
|
1175
|
+
);
|
|
1176
|
+
|
|
778
1177
|
// src/bridge-handler/useBridgeHandler.tsx
|
|
779
|
-
var
|
|
1178
|
+
var import_react13 = require("react");
|
|
780
1179
|
function serializeError(error) {
|
|
781
1180
|
return JSON.stringify(error, (_, value) => {
|
|
782
1181
|
if (value instanceof Error) {
|
|
@@ -825,8 +1224,8 @@ function useBridgeHandler({
|
|
|
825
1224
|
eventListenerMap,
|
|
826
1225
|
injectedJavaScript: originalInjectedJavaScript
|
|
827
1226
|
}) {
|
|
828
|
-
const ref = (0,
|
|
829
|
-
const injectedJavaScript = (0,
|
|
1227
|
+
const ref = (0, import_react13.useRef)(null);
|
|
1228
|
+
const injectedJavaScript = (0, import_react13.useMemo)(
|
|
830
1229
|
() => [
|
|
831
1230
|
`window.__CONSTANT_HANDLER_MAP = ${JSON.stringify(
|
|
832
1231
|
Object.entries(constantHandlerMap).reduce(
|
|
@@ -848,11 +1247,12 @@ function useBridgeHandler({
|
|
|
848
1247
|
`);
|
|
849
1248
|
};
|
|
850
1249
|
const createHandleOnError = (functionName, eventId) => (error) => {
|
|
1250
|
+
const serializedError = serializeError(error);
|
|
851
1251
|
ref.current?.injectJavaScript(`
|
|
852
|
-
window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${
|
|
1252
|
+
window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${serializedError});
|
|
853
1253
|
`);
|
|
854
1254
|
};
|
|
855
|
-
const $onMessage = (0,
|
|
1255
|
+
const $onMessage = (0, import_react13.useCallback)(
|
|
856
1256
|
async (e) => {
|
|
857
1257
|
onMessage?.(e);
|
|
858
1258
|
const data = JSON.parse(e.nativeEvent.data);
|
|
@@ -903,8 +1303,8 @@ function useBridgeHandler({
|
|
|
903
1303
|
}
|
|
904
1304
|
|
|
905
1305
|
// src/hooks/useCreateUserAgent.ts
|
|
906
|
-
var
|
|
907
|
-
var
|
|
1306
|
+
var import_native_modules14 = require("@apps-in-toss/native-modules");
|
|
1307
|
+
var import_react_native27 = require("react-native");
|
|
908
1308
|
var FontA11yCategory = {
|
|
909
1309
|
Large: "Large",
|
|
910
1310
|
xLarge: "xLarge",
|
|
@@ -1037,9 +1437,9 @@ function useCreateUserAgent({
|
|
|
1037
1437
|
safeArea,
|
|
1038
1438
|
safeAreaBottomTransparency
|
|
1039
1439
|
}) {
|
|
1040
|
-
const platform = (0,
|
|
1041
|
-
const appVersion = (0,
|
|
1042
|
-
const { fontScale } = (0,
|
|
1440
|
+
const platform = (0, import_native_modules14.getPlatformOS)();
|
|
1441
|
+
const appVersion = (0, import_native_modules14.getTossAppVersion)();
|
|
1442
|
+
const { fontScale } = (0, import_react_native27.useWindowDimensions)();
|
|
1043
1443
|
const platformString = platform === "ios" ? "iPhone" : "Android";
|
|
1044
1444
|
const fontA11y = mapFontScaleToCategory(fontScale, platform);
|
|
1045
1445
|
const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
|
|
@@ -1059,17 +1459,17 @@ function useCreateUserAgent({
|
|
|
1059
1459
|
}
|
|
1060
1460
|
|
|
1061
1461
|
// src/hooks/useGeolocation.ts
|
|
1062
|
-
var
|
|
1063
|
-
var
|
|
1064
|
-
var
|
|
1462
|
+
var import_native_modules15 = require("@apps-in-toss/native-modules");
|
|
1463
|
+
var import_react_native28 = require("@granite-js/react-native");
|
|
1464
|
+
var import_react14 = require("react");
|
|
1065
1465
|
function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
1066
|
-
const isVisible = (0,
|
|
1067
|
-
const [location, setLocation] = (0,
|
|
1068
|
-
(0,
|
|
1466
|
+
const isVisible = (0, import_react_native28.useVisibility)();
|
|
1467
|
+
const [location, setLocation] = (0, import_react14.useState)(null);
|
|
1468
|
+
(0, import_react14.useEffect)(() => {
|
|
1069
1469
|
if (!isVisible) {
|
|
1070
1470
|
return;
|
|
1071
1471
|
}
|
|
1072
|
-
return (0,
|
|
1472
|
+
return (0, import_native_modules15.startUpdateLocation)({
|
|
1073
1473
|
options: {
|
|
1074
1474
|
accuracy,
|
|
1075
1475
|
distanceInterval,
|
|
@@ -1083,8 +1483,8 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
|
1083
1483
|
}
|
|
1084
1484
|
|
|
1085
1485
|
// src/utils/log.ts
|
|
1086
|
-
var
|
|
1087
|
-
var
|
|
1486
|
+
var import_native_modules16 = require("@apps-in-toss/native-modules");
|
|
1487
|
+
var import_react_native29 = require("@granite-js/react-native");
|
|
1088
1488
|
|
|
1089
1489
|
// src/utils/extractDateFromUUIDv7.ts
|
|
1090
1490
|
var extractDateFromUUIDv7 = (uuid) => {
|
|
@@ -1110,7 +1510,7 @@ var getGroupId = (url) => {
|
|
|
1110
1510
|
};
|
|
1111
1511
|
var getReferrer = () => {
|
|
1112
1512
|
try {
|
|
1113
|
-
const referrer = new URL((0,
|
|
1513
|
+
const referrer = new URL((0, import_react_native29.getSchemeUri)());
|
|
1114
1514
|
return referrer.searchParams.get("referrer");
|
|
1115
1515
|
} catch {
|
|
1116
1516
|
return "";
|
|
@@ -1128,22 +1528,21 @@ var trackScreen = (url) => {
|
|
|
1128
1528
|
deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
|
|
1129
1529
|
}
|
|
1130
1530
|
};
|
|
1131
|
-
return (0,
|
|
1531
|
+
return (0, import_native_modules16.eventLog)(log);
|
|
1132
1532
|
};
|
|
1133
1533
|
|
|
1134
1534
|
// src/components/WebView.tsx
|
|
1135
|
-
var
|
|
1136
|
-
var appsInTossGlobals = getAppsInTossGlobals();
|
|
1535
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1137
1536
|
var operationalEnvironment = appsInTossConstantBridges.getOperationalEnvironment();
|
|
1138
1537
|
var TYPES = ["partner", "external", "game"];
|
|
1139
1538
|
var WEBVIEW_TYPES = {
|
|
1140
|
-
partner:
|
|
1141
|
-
external:
|
|
1539
|
+
partner: PartnerWebView,
|
|
1540
|
+
external: import_react_native31.ExternalWebViewScreen,
|
|
1142
1541
|
game: GameWebView
|
|
1143
1542
|
};
|
|
1144
1543
|
function mergeSchemeQueryParamsInto(url) {
|
|
1145
1544
|
const baseUrl = new URL(url);
|
|
1146
|
-
const schemeUrl = new URL((0,
|
|
1545
|
+
const schemeUrl = new URL((0, import_react_native30.getSchemeUri)());
|
|
1147
1546
|
baseUrl.pathname = schemeUrl.pathname;
|
|
1148
1547
|
for (const [key, value] of schemeUrl.searchParams.entries()) {
|
|
1149
1548
|
baseUrl.searchParams.set(key, value);
|
|
@@ -1155,7 +1554,7 @@ function getWebViewUri(local) {
|
|
|
1155
1554
|
const devUrl = `http://${local.host}:${local.port}`;
|
|
1156
1555
|
return mergeSchemeQueryParamsInto(devUrl).toString();
|
|
1157
1556
|
}
|
|
1158
|
-
const { url: rawUrl } =
|
|
1557
|
+
const { url: rawUrl } = import_native_modules17.AppsInTossModule.getWebBundleURL({});
|
|
1159
1558
|
const url = mergeSchemeQueryParamsInto(rawUrl);
|
|
1160
1559
|
const deploymentId = env.getDeploymentId();
|
|
1161
1560
|
if (deploymentId) {
|
|
@@ -1167,12 +1566,12 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1167
1566
|
if (!TYPES.includes(type)) {
|
|
1168
1567
|
throw new Error(`Invalid WebView type: '${type}'`);
|
|
1169
1568
|
}
|
|
1170
|
-
const graniteEvent = (0,
|
|
1171
|
-
const uri = (0,
|
|
1172
|
-
const top = (0,
|
|
1173
|
-
const bottom = (0,
|
|
1569
|
+
const graniteEvent = (0, import_react_native30.useGraniteEvent)();
|
|
1570
|
+
const uri = (0, import_react15.useMemo)(() => getWebViewUri(local), [local]);
|
|
1571
|
+
const top = (0, import_private5.useSafeAreaTop)();
|
|
1572
|
+
const bottom = (0, import_private5.useSafeAreaBottom)();
|
|
1174
1573
|
const global2 = getAppsInTossGlobals();
|
|
1175
|
-
const
|
|
1574
|
+
const topNavigation = (0, import_private5.useTopNavigation)();
|
|
1176
1575
|
const disableTextSelectionCSS = `
|
|
1177
1576
|
(function() {
|
|
1178
1577
|
const style = document.createElement('style');
|
|
@@ -1180,7 +1579,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1180
1579
|
document.head.appendChild(style);
|
|
1181
1580
|
})();
|
|
1182
1581
|
`;
|
|
1183
|
-
const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0,
|
|
1582
|
+
const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0, import_react15.useState)(
|
|
1184
1583
|
props.allowsBackForwardNavigationGestures
|
|
1185
1584
|
);
|
|
1186
1585
|
const handler = useBridgeHandler({
|
|
@@ -1189,23 +1588,20 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1189
1588
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
1190
1589
|
eventListenerMap: {
|
|
1191
1590
|
...appsInTossEventBridges,
|
|
1192
|
-
navigationAccessoryEvent: ({ onEvent, onError }) =>
|
|
1193
|
-
onEvent,
|
|
1194
|
-
onError
|
|
1195
|
-
}),
|
|
1591
|
+
navigationAccessoryEvent: ({ onEvent, onError }) => import_react_native31.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
|
|
1196
1592
|
backEvent: ({ onEvent, onError, options }) => graniteEvent.addEventListener("backEvent", { onEvent, onError, options }),
|
|
1197
|
-
entryMessageExited: ({ onEvent, onError }) =>
|
|
1198
|
-
updateLocationEvent: ({ onEvent, onError, options }) =>
|
|
1593
|
+
entryMessageExited: ({ onEvent, onError }) => import_native_modules17.appsInTossEvent.addEventListener("entryMessageExited", { onEvent, onError }),
|
|
1594
|
+
updateLocationEvent: ({ onEvent, onError, options }) => import_native_modules17.appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
|
|
1199
1595
|
/** @internal */
|
|
1200
|
-
appBridgeCallbackEvent: ({ onEvent, onError, options }) =>
|
|
1596
|
+
appBridgeCallbackEvent: ({ onEvent, onError, options }) => import_native_modules17.appsInTossEvent.addEventListener("appBridgeCallbackEvent", { onEvent, onError, options }),
|
|
1201
1597
|
/** AdMob */
|
|
1202
|
-
loadAdMobInterstitialAd:
|
|
1203
|
-
showAdMobInterstitialAd:
|
|
1204
|
-
loadAdMobRewardedAd:
|
|
1205
|
-
showAdMobRewardedAd:
|
|
1598
|
+
loadAdMobInterstitialAd: import_native_modules17.GoogleAdMob.loadAdMobInterstitialAd,
|
|
1599
|
+
showAdMobInterstitialAd: import_native_modules17.GoogleAdMob.showAdMobInterstitialAd,
|
|
1600
|
+
loadAdMobRewardedAd: import_native_modules17.GoogleAdMob.loadAdMobRewardedAd,
|
|
1601
|
+
showAdMobRewardedAd: import_native_modules17.GoogleAdMob.showAdMobRewardedAd,
|
|
1206
1602
|
/** AdMobV2 */
|
|
1207
|
-
loadAppsInTossAdMob:
|
|
1208
|
-
showAppsInTossAdMob:
|
|
1603
|
+
loadAppsInTossAdMob: import_native_modules17.GoogleAdMob.loadAppsInTossAdMob,
|
|
1604
|
+
showAppsInTossAdMob: import_native_modules17.GoogleAdMob.showAppsInTossAdMob
|
|
1209
1605
|
},
|
|
1210
1606
|
constantHandlerMap: {
|
|
1211
1607
|
...graniteConstantBridges,
|
|
@@ -1214,13 +1610,13 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1214
1610
|
getSafeAreaBottom: () => bottom,
|
|
1215
1611
|
...Object.fromEntries(Object.entries(global2).map(([key, value]) => [key, () => value])),
|
|
1216
1612
|
/** AdMob */
|
|
1217
|
-
loadAdMobInterstitialAd_isSupported:
|
|
1218
|
-
showAdMobInterstitialAd_isSupported:
|
|
1219
|
-
loadAdMobRewardedAd_isSupported:
|
|
1220
|
-
showAdMobRewardedAd_isSupported:
|
|
1613
|
+
loadAdMobInterstitialAd_isSupported: import_native_modules17.GoogleAdMob.loadAdMobInterstitialAd.isSupported,
|
|
1614
|
+
showAdMobInterstitialAd_isSupported: import_native_modules17.GoogleAdMob.showAdMobInterstitialAd.isSupported,
|
|
1615
|
+
loadAdMobRewardedAd_isSupported: import_native_modules17.GoogleAdMob.loadAdMobRewardedAd.isSupported,
|
|
1616
|
+
showAdMobRewardedAd_isSupported: import_native_modules17.GoogleAdMob.showAdMobRewardedAd.isSupported,
|
|
1221
1617
|
/** AdMobV2 */
|
|
1222
|
-
loadAppsInTossAdMob_isSupported:
|
|
1223
|
-
showAppsInTossAdMob_isSupported:
|
|
1618
|
+
loadAppsInTossAdMob_isSupported: import_native_modules17.GoogleAdMob.loadAppsInTossAdMob.isSupported,
|
|
1619
|
+
showAppsInTossAdMob_isSupported: import_native_modules17.GoogleAdMob.showAppsInTossAdMob.isSupported,
|
|
1224
1620
|
/** env */
|
|
1225
1621
|
getDeploymentId: env.getDeploymentId
|
|
1226
1622
|
},
|
|
@@ -1231,51 +1627,47 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1231
1627
|
setAllowsBackForwardNavigationGestures(options.isEnabled);
|
|
1232
1628
|
return appsInTossAsyncBridges.setIosSwipeGestureEnabled(options);
|
|
1233
1629
|
},
|
|
1234
|
-
addAccessoryButton: async (params) =>
|
|
1235
|
-
removeAccessoryButton: async () =>
|
|
1236
|
-
/**
|
|
1237
|
-
|
|
1630
|
+
addAccessoryButton: async (params) => topNavigation.addAccessoryButton(params),
|
|
1631
|
+
removeAccessoryButton: async () => topNavigation.removeAccessoryButton(),
|
|
1632
|
+
/** permissions */
|
|
1633
|
+
requestPermission: appsInTossAsyncBridges.requestPermission,
|
|
1634
|
+
openPermissionDialog: appsInTossAsyncBridges.openPermissionDialog,
|
|
1635
|
+
getPermission: appsInTossAsyncBridges.getPermission,
|
|
1636
|
+
getClipboardText: appsInTossAsyncBridges.getClipboardText,
|
|
1637
|
+
setClipboardText: appsInTossAsyncBridges.setClipboardText,
|
|
1638
|
+
fetchAlbumPhotos: appsInTossAsyncBridges.fetchAlbumPhotos,
|
|
1639
|
+
fetchContacts: appsInTossAsyncBridges.fetchContacts,
|
|
1640
|
+
getCurrentLocation: appsInTossAsyncBridges.getCurrentLocation,
|
|
1641
|
+
openCamera: appsInTossAsyncBridges.openCamera,
|
|
1238
1642
|
/** Storage */
|
|
1239
|
-
getStorageItem:
|
|
1240
|
-
setStorageItem:
|
|
1241
|
-
removeStorageItem:
|
|
1242
|
-
clearItems:
|
|
1643
|
+
getStorageItem: import_native_modules17.Storage.getItem,
|
|
1644
|
+
setStorageItem: import_native_modules17.Storage.setItem,
|
|
1645
|
+
removeStorageItem: import_native_modules17.Storage.removeItem,
|
|
1646
|
+
clearItems: import_native_modules17.Storage.clearItems,
|
|
1243
1647
|
/** IAP */
|
|
1244
|
-
iapCreateOneTimePurchaseOrder:
|
|
1245
|
-
iapGetProductItemList:
|
|
1648
|
+
iapCreateOneTimePurchaseOrder: import_native_modules17.IAP.createOneTimePurchaseOrder,
|
|
1649
|
+
iapGetProductItemList: import_native_modules17.IAP.getProductItemList
|
|
1246
1650
|
}
|
|
1247
1651
|
});
|
|
1248
|
-
const
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
}
|
|
1260
|
-
case "external": {
|
|
1261
|
-
const headerOnlyProp = {
|
|
1262
|
-
header: {
|
|
1263
|
-
..."header" in props ? props.header : {},
|
|
1264
|
-
icon: toIcon(ensureValue(appsInTossGlobals.brandIcon, "icon")),
|
|
1265
|
-
title: ensureValue(appsInTossGlobals.brandDisplayName, "displayName")
|
|
1266
|
-
}
|
|
1267
|
-
};
|
|
1268
|
-
return headerOnlyProp;
|
|
1269
|
-
}
|
|
1270
|
-
default: {
|
|
1271
|
-
return {};
|
|
1272
|
-
}
|
|
1652
|
+
const headerPropForExternalWebView = (0, import_react15.useMemo)(() => {
|
|
1653
|
+
const parsedNavigationBar = global2.navigationBar != null ? safeParseNavigationBar(global2.navigationBar) : null;
|
|
1654
|
+
const initialAccessoryButton = parsedNavigationBar?.initialAccessoryButton;
|
|
1655
|
+
const withBackButton = parsedNavigationBar?.withBackButton ?? true;
|
|
1656
|
+
if (type === "external" && initialAccessoryButton != null) {
|
|
1657
|
+
return {
|
|
1658
|
+
header: {
|
|
1659
|
+
withBackButton,
|
|
1660
|
+
title: initialAccessoryButton.title,
|
|
1661
|
+
icon: initialAccessoryButton.icon
|
|
1662
|
+
}
|
|
1663
|
+
};
|
|
1273
1664
|
}
|
|
1274
|
-
|
|
1665
|
+
return {};
|
|
1666
|
+
}, [global2.navigationBar, type]);
|
|
1275
1667
|
const BaseWebView = WEBVIEW_TYPES[type];
|
|
1276
1668
|
const webViewDebuggingEnabled = operationalEnvironment === "sandbox";
|
|
1277
|
-
const [canHistoryGoBack, setCanHistoryGoBack] = (0,
|
|
1278
|
-
const handleNavigationStateChange = (0,
|
|
1669
|
+
const [canHistoryGoBack, setCanHistoryGoBack] = (0, import_react15.useState)(false);
|
|
1670
|
+
const handleNavigationStateChange = (0, import_react15.useCallback)(
|
|
1279
1671
|
(event) => {
|
|
1280
1672
|
if (event.url) {
|
|
1281
1673
|
trackScreen(event.url);
|
|
@@ -1287,7 +1679,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1287
1679
|
const userAgent = useCreateUserAgent({
|
|
1288
1680
|
colorPreference: "light"
|
|
1289
1681
|
});
|
|
1290
|
-
const handleBackEvent = (0,
|
|
1682
|
+
const handleBackEvent = (0, import_react15.useCallback)(() => {
|
|
1291
1683
|
if (canHistoryGoBack) {
|
|
1292
1684
|
handler.ref.current?.goBack();
|
|
1293
1685
|
return true;
|
|
@@ -1295,16 +1687,28 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1295
1687
|
return false;
|
|
1296
1688
|
}
|
|
1297
1689
|
}, [canHistoryGoBack, handler]);
|
|
1298
|
-
(0,
|
|
1299
|
-
|
|
1300
|
-
return () =>
|
|
1690
|
+
(0, import_react15.useEffect)(() => {
|
|
1691
|
+
import_react_native32.BackHandler.addEventListener("hardwareBackPress", handleBackEvent);
|
|
1692
|
+
return () => import_react_native32.BackHandler.removeEventListener("hardwareBackPress", handleBackEvent);
|
|
1301
1693
|
}, [handleBackEvent]);
|
|
1302
|
-
|
|
1694
|
+
(0, import_react15.useEffect)(() => {
|
|
1695
|
+
return import_native_modules17.appsInTossEvent.addEventListener("homeIconButtonClickEvent", {
|
|
1696
|
+
onEvent: () => {
|
|
1697
|
+
handler.ref?.current?.injectJavaScript(`
|
|
1698
|
+
(function() {
|
|
1699
|
+
window.history.replaceState(null, '', '/');
|
|
1700
|
+
true;
|
|
1701
|
+
})();
|
|
1702
|
+
`);
|
|
1703
|
+
}
|
|
1704
|
+
});
|
|
1705
|
+
}, [handler.ref]);
|
|
1706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1303
1707
|
BaseWebView,
|
|
1304
1708
|
{
|
|
1305
1709
|
ref: handler.ref,
|
|
1306
1710
|
...props,
|
|
1307
|
-
...
|
|
1711
|
+
...headerPropForExternalWebView,
|
|
1308
1712
|
source: {
|
|
1309
1713
|
uri,
|
|
1310
1714
|
// NOTE: https://github.com/react-native-webview/react-native-webview/pull/3133
|
|
@@ -1312,7 +1716,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1312
1716
|
"User-Agent": userAgent
|
|
1313
1717
|
}
|
|
1314
1718
|
},
|
|
1315
|
-
userAgent:
|
|
1719
|
+
userAgent: import_react_native32.Platform.OS === "ios" ? userAgent : void 0,
|
|
1316
1720
|
sharedCookiesEnabled: true,
|
|
1317
1721
|
webviewDebuggingEnabled: webViewDebuggingEnabled,
|
|
1318
1722
|
thirdPartyCookiesEnabled: true,
|
|
@@ -1320,21 +1724,17 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1320
1724
|
onNavigationStateChange: handleNavigationStateChange,
|
|
1321
1725
|
injectedJavaScript: handler.injectedJavaScript,
|
|
1322
1726
|
injectedJavaScriptBeforeContentLoaded: handler.injectedJavaScript,
|
|
1323
|
-
decelerationRate:
|
|
1727
|
+
decelerationRate: import_react_native32.Platform.OS === "ios" ? 1 : void 0,
|
|
1324
1728
|
allowsBackForwardNavigationGestures
|
|
1325
1729
|
}
|
|
1326
1730
|
);
|
|
1327
1731
|
}
|
|
1328
|
-
function ensureValue(value, name) {
|
|
1329
|
-
if (value === void 0) {
|
|
1330
|
-
throw new Error(`${name} is required`);
|
|
1331
|
-
}
|
|
1332
|
-
return value;
|
|
1333
|
-
}
|
|
1334
1732
|
|
|
1335
1733
|
// src/index.ts
|
|
1336
1734
|
__reExport(src_exports, require("@apps-in-toss/analytics"), module.exports);
|
|
1735
|
+
var import_private6 = require("@toss-design-system/react-native/private");
|
|
1337
1736
|
__reExport(src_exports, require("@apps-in-toss/native-modules"), module.exports);
|
|
1737
|
+
__reExport(src_exports, require("@apps-in-toss/types"), module.exports);
|
|
1338
1738
|
var Analytics2 = {
|
|
1339
1739
|
init: import_analytics2.Analytics.init,
|
|
1340
1740
|
Impression: import_analytics2.Analytics.Impression,
|
|
@@ -1350,6 +1750,8 @@ var Analytics2 = {
|
|
|
1350
1750
|
env,
|
|
1351
1751
|
useCreateUserAgent,
|
|
1352
1752
|
useGeolocation,
|
|
1753
|
+
useTopNavigation,
|
|
1353
1754
|
...require("@apps-in-toss/analytics"),
|
|
1354
|
-
...require("@apps-in-toss/native-modules")
|
|
1755
|
+
...require("@apps-in-toss/native-modules"),
|
|
1756
|
+
...require("@apps-in-toss/types")
|
|
1355
1757
|
});
|