@apps-in-toss/framework 2.0.4 → 2.0.6
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 +125 -119
- package/dist/index.js +30 -22
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -55,9 +55,9 @@ var import_analytics2 = require("@apps-in-toss/analytics");
|
|
|
55
55
|
// src/core/registerApp.tsx
|
|
56
56
|
var import_analytics = require("@apps-in-toss/analytics");
|
|
57
57
|
var import_native_modules14 = require("@apps-in-toss/native-modules");
|
|
58
|
-
var
|
|
58
|
+
var import_react_native22 = require("@granite-js/react-native");
|
|
59
59
|
var import_tds_react_native10 = require("@toss/tds-react-native");
|
|
60
|
-
var
|
|
60
|
+
var import_react_native23 = require("react-native");
|
|
61
61
|
|
|
62
62
|
// src/core/components/AppEvent.tsx
|
|
63
63
|
var import_native_modules2 = require("@apps-in-toss/native-modules");
|
|
@@ -259,7 +259,7 @@ function useNavigationBarContext() {
|
|
|
259
259
|
// src/components/RNAppContainer.tsx
|
|
260
260
|
var import_native_modules13 = require("@apps-in-toss/native-modules");
|
|
261
261
|
var import_react17 = require("react");
|
|
262
|
-
var
|
|
262
|
+
var import_react_native21 = require("react-native");
|
|
263
263
|
|
|
264
264
|
// src/components/GameInitializer.tsx
|
|
265
265
|
var import_native_modules6 = require("@apps-in-toss/native-modules");
|
|
@@ -914,7 +914,7 @@ function useNavigationEvent() {
|
|
|
914
914
|
|
|
915
915
|
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
916
916
|
var import_native_modules12 = require("@apps-in-toss/native-modules");
|
|
917
|
-
var
|
|
917
|
+
var import_react_native19 = require("@granite-js/react-native");
|
|
918
918
|
var import_tds_react_native8 = require("@toss/tds-react-native");
|
|
919
919
|
var import_private4 = require("@toss/tds-react-native/private");
|
|
920
920
|
var import_react15 = require("react");
|
|
@@ -1100,7 +1100,6 @@ function AppShareListMenu() {
|
|
|
1100
1100
|
|
|
1101
1101
|
// src/core/hooks/useMoreButtonBottomSheet/HomeShortcutMenu.tsx
|
|
1102
1102
|
var import_native_modules10 = require("@apps-in-toss/native-modules");
|
|
1103
|
-
var import_react_native18 = require("react-native");
|
|
1104
1103
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1105
1104
|
function HomeShortcutMenu() {
|
|
1106
1105
|
const isSandbox = (0, import_native_modules10.getOperationalEnvironment)() === "sandbox";
|
|
@@ -1114,12 +1113,18 @@ function HomeShortcutMenu() {
|
|
|
1114
1113
|
title: "\uD648 \uD654\uBA74\uC5D0 \uCD94\uAC00",
|
|
1115
1114
|
iconURL: "https://static.toss.im/icons/png/4x/icon-plus-circle-mono.png",
|
|
1116
1115
|
onPress: () => {
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1116
|
+
import_native_modules10.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1117
|
+
"addMiniAppShortcut",
|
|
1118
|
+
{
|
|
1119
|
+
title: globals.brandDisplayName,
|
|
1120
|
+
appName: global.__granite.app.name,
|
|
1121
|
+
iconUrl: globals.brandIcon,
|
|
1122
|
+
guideUrl: "https://service.toss.im/app-mini-home/shortcut"
|
|
1123
|
+
},
|
|
1124
|
+
{ onSuccess: () => {
|
|
1125
|
+
}, onError: () => {
|
|
1126
|
+
} }
|
|
1127
|
+
);
|
|
1123
1128
|
}
|
|
1124
1129
|
}
|
|
1125
1130
|
);
|
|
@@ -1127,7 +1132,7 @@ function HomeShortcutMenu() {
|
|
|
1127
1132
|
|
|
1128
1133
|
// src/core/hooks/useMoreButtonBottomSheet/SettingsMenu.tsx
|
|
1129
1134
|
var import_native_modules11 = require("@apps-in-toss/native-modules");
|
|
1130
|
-
var
|
|
1135
|
+
var import_react_native18 = require("@granite-js/react-native");
|
|
1131
1136
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1132
1137
|
function SettingsMenu() {
|
|
1133
1138
|
const globals = getAppsInTossGlobals();
|
|
@@ -1139,8 +1144,8 @@ function SettingsMenu() {
|
|
|
1139
1144
|
{
|
|
1140
1145
|
title: "\uC124\uC815",
|
|
1141
1146
|
iconURL: "https://static.toss.im/icons/png/4x/icon-setting-mono.png",
|
|
1142
|
-
onPress: () => (0,
|
|
1143
|
-
`servicetoss://apps-in-toss-menu/settings?appName=${
|
|
1147
|
+
onPress: () => (0, import_react_native18.openURL)(
|
|
1148
|
+
`servicetoss://apps-in-toss-menu/settings?appName=${import_react_native18.Granite.appName}&displayAppName=${globals.brandDisplayName}`
|
|
1144
1149
|
)
|
|
1145
1150
|
}
|
|
1146
1151
|
);
|
|
@@ -1244,7 +1249,7 @@ function useMoreButtonBottomSheet() {
|
|
|
1244
1249
|
{
|
|
1245
1250
|
title: item.contactItemName,
|
|
1246
1251
|
iconURL: item.contactIconUrl,
|
|
1247
|
-
onPress: () => (0,
|
|
1252
|
+
onPress: () => (0, import_react_native19.openURL)(item.contactUri)
|
|
1248
1253
|
},
|
|
1249
1254
|
item.contactItemName
|
|
1250
1255
|
)),
|
|
@@ -1321,7 +1326,7 @@ function DefaultNavigationBar() {
|
|
|
1321
1326
|
var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
|
|
1322
1327
|
var import_tds_react_native9 = require("@toss/tds-react-native");
|
|
1323
1328
|
var import_private6 = require("@toss/tds-react-native/private");
|
|
1324
|
-
var
|
|
1329
|
+
var import_react_native20 = require("react-native");
|
|
1325
1330
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1326
1331
|
function GameNavigationBar() {
|
|
1327
1332
|
const safeAreaTop = (0, import_private6.useSafeAreaTop)();
|
|
@@ -1333,12 +1338,12 @@ function GameNavigationBar() {
|
|
|
1333
1338
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
1334
1339
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_tds_react_native9.PageNavbar, { preference: { type: "none" } }),
|
|
1335
1340
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1336
|
-
|
|
1341
|
+
import_react_native20.View,
|
|
1337
1342
|
{
|
|
1338
1343
|
style: {
|
|
1339
1344
|
width: "100%",
|
|
1340
1345
|
// TODO: UI관련 스타일 설정은 TDS로 이관
|
|
1341
|
-
height:
|
|
1346
|
+
height: import_react_native20.Platform.OS === "ios" ? 44 : 54,
|
|
1342
1347
|
flexDirection: "row",
|
|
1343
1348
|
alignItems: "center",
|
|
1344
1349
|
justifyContent: "flex-end",
|
|
@@ -1388,7 +1393,7 @@ function RNAppContainer({ children }) {
|
|
|
1388
1393
|
}
|
|
1389
1394
|
function GameAppContainer({ children }) {
|
|
1390
1395
|
(0, import_react17.useEffect)(() => {
|
|
1391
|
-
if (
|
|
1396
|
+
if (import_react_native21.Platform.OS === "ios") {
|
|
1392
1397
|
(0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1393
1398
|
return () => {
|
|
1394
1399
|
(0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
@@ -1430,13 +1435,13 @@ function AppsInTossContainer(Container, { children, ...initialProps }) {
|
|
|
1430
1435
|
}
|
|
1431
1436
|
function registerApp(container, { context, analytics }) {
|
|
1432
1437
|
const appName = getAppName();
|
|
1433
|
-
const isRegistered =
|
|
1438
|
+
const isRegistered = import_react_native23.AppRegistry.getAppKeys().includes(appName);
|
|
1434
1439
|
if (!isRegistered) {
|
|
1435
1440
|
import_analytics.Analytics.init({
|
|
1436
1441
|
logger: (params) => void (0, import_native_modules14.eventLog)(params),
|
|
1437
1442
|
debug: analytics?.debug ?? __DEV__
|
|
1438
1443
|
});
|
|
1439
|
-
const App =
|
|
1444
|
+
const App = import_react_native22.Granite.registerApp(AppsInTossContainer.bind(null, container), {
|
|
1440
1445
|
appName,
|
|
1441
1446
|
context,
|
|
1442
1447
|
initialScheme: (0, import_native_modules14.getSchemeUri)(),
|
|
@@ -1454,7 +1459,7 @@ function registerApp(container, { context, analytics }) {
|
|
|
1454
1459
|
}
|
|
1455
1460
|
function AppsInTossScreenContainer({ children }) {
|
|
1456
1461
|
const isRNApp = getAppsInTossGlobals().webViewType == null;
|
|
1457
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(NavigationBarContextProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_analytics.Analytics.Screen, { children:
|
|
1462
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(NavigationBarContextProvider, { children: isRNApp ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_analytics.Analytics.Screen, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RNAppContainer, { children }) }) : children });
|
|
1458
1463
|
}
|
|
1459
1464
|
function getAppName() {
|
|
1460
1465
|
try {
|
|
@@ -1477,26 +1482,26 @@ var appsInTossConstantBridges = __toESM(require("@apps-in-toss/native-modules/co
|
|
|
1477
1482
|
var appsInTossEventBridges = __toESM(require("@apps-in-toss/native-modules/event-bridges"), 1);
|
|
1478
1483
|
var import_user_scripts = require("@apps-in-toss/user-scripts");
|
|
1479
1484
|
var import_react_native_safe_area_context4 = require("@granite-js/native/react-native-safe-area-context");
|
|
1480
|
-
var
|
|
1485
|
+
var import_react_native37 = require("@granite-js/react-native");
|
|
1481
1486
|
var import_tds_react_native15 = require("@toss/tds-react-native");
|
|
1482
1487
|
var import_private9 = require("@toss/tds-react-native/private");
|
|
1483
1488
|
var import_react28 = require("react");
|
|
1484
|
-
var
|
|
1489
|
+
var import_react_native38 = require("react-native");
|
|
1485
1490
|
|
|
1486
1491
|
// src/components/GameWebView.tsx
|
|
1487
1492
|
var import_native_modules15 = require("@apps-in-toss/native-modules");
|
|
1488
1493
|
var import_react_native_webview = require("@granite-js/native/react-native-webview");
|
|
1489
1494
|
var import_react19 = require("react");
|
|
1490
|
-
var
|
|
1495
|
+
var import_react_native26 = require("react-native");
|
|
1491
1496
|
|
|
1492
1497
|
// src/components/NavigationBar/GameWebviewNavigationBar.tsx
|
|
1493
1498
|
var import_react_native_safe_area_context2 = require("@granite-js/native/react-native-safe-area-context");
|
|
1494
|
-
var
|
|
1499
|
+
var import_react_native24 = require("@granite-js/react-native");
|
|
1495
1500
|
var import_tds_react_native11 = require("@toss/tds-react-native");
|
|
1496
1501
|
var import_private7 = require("@toss/tds-react-native/private");
|
|
1497
1502
|
var import_es_hangul3 = require("es-hangul");
|
|
1498
1503
|
var import_react18 = require("react");
|
|
1499
|
-
var
|
|
1504
|
+
var import_react_native25 = require("react-native");
|
|
1500
1505
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1501
1506
|
function GameWebviewNavigationBar() {
|
|
1502
1507
|
const safeAreaTop = (0, import_private7.useSafeAreaTop)();
|
|
@@ -1519,18 +1524,18 @@ function GameWebviewNavigationBar() {
|
|
|
1519
1524
|
logging.closePopupCtaClick(isConfirmed);
|
|
1520
1525
|
if (isConfirmed) {
|
|
1521
1526
|
captureExitLog(Date.now());
|
|
1522
|
-
(0,
|
|
1527
|
+
(0, import_react_native24.closeView)();
|
|
1523
1528
|
}
|
|
1524
1529
|
}, [captureExitLog, global2.brandDisplayName, logging, openConfirm]);
|
|
1525
1530
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1526
1531
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tds_react_native11.PageNavbar, { preference: { type: "none" } }),
|
|
1527
1532
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1528
|
-
|
|
1533
|
+
import_react_native25.View,
|
|
1529
1534
|
{
|
|
1530
1535
|
style: {
|
|
1531
1536
|
width: "100%",
|
|
1532
1537
|
// TODO: UI관련 스타일 설정은 TDS로 이관
|
|
1533
|
-
height:
|
|
1538
|
+
height: import_react_native25.Platform.OS === "ios" ? 44 : 54,
|
|
1534
1539
|
flexDirection: "row",
|
|
1535
1540
|
alignItems: "center",
|
|
1536
1541
|
justifyContent: "flex-end",
|
|
@@ -1560,7 +1565,7 @@ function GameWebviewNavigationBar() {
|
|
|
1560
1565
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1561
1566
|
var GameWebView = (0, import_react19.forwardRef)(function GameWebView2(props, ref) {
|
|
1562
1567
|
(0, import_react19.useEffect)(() => {
|
|
1563
|
-
if (
|
|
1568
|
+
if (import_react_native26.Platform.OS === "ios") {
|
|
1564
1569
|
(0, import_native_modules15.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1565
1570
|
return () => {
|
|
1566
1571
|
(0, import_native_modules15.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
@@ -1579,7 +1584,7 @@ var import_react_native_webview2 = require("@granite-js/native/react-native-webv
|
|
|
1579
1584
|
var import_react21 = require("react");
|
|
1580
1585
|
|
|
1581
1586
|
// src/components/NavigationBar/PartnerWebviewNavigationBar.tsx
|
|
1582
|
-
var
|
|
1587
|
+
var import_react_native27 = require("@granite-js/react-native");
|
|
1583
1588
|
var import_tds_react_native12 = require("@toss/tds-react-native");
|
|
1584
1589
|
var import_private8 = require("@toss/tds-react-native/private");
|
|
1585
1590
|
var import_es_hangul4 = require("es-hangul");
|
|
@@ -1607,7 +1612,7 @@ function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
|
|
|
1607
1612
|
logging.closePopupCtaClick(isConfirmed);
|
|
1608
1613
|
if (isConfirmed) {
|
|
1609
1614
|
captureExitLog(Date.now());
|
|
1610
|
-
(0,
|
|
1615
|
+
(0, import_react_native27.closeView)();
|
|
1611
1616
|
}
|
|
1612
1617
|
}, [captureExitLog, globals.brandDisplayName, logging, openConfirm]);
|
|
1613
1618
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
@@ -1715,10 +1720,10 @@ function generateRequestId() {
|
|
|
1715
1720
|
}
|
|
1716
1721
|
|
|
1717
1722
|
// src/ads/getReferrer.ts
|
|
1718
|
-
var
|
|
1723
|
+
var import_react_native28 = require("@granite-js/react-native");
|
|
1719
1724
|
function getReferrer() {
|
|
1720
1725
|
try {
|
|
1721
|
-
return new URL((0,
|
|
1726
|
+
return new URL((0, import_react_native28.getSchemeUri)()).searchParams.get("referrer");
|
|
1722
1727
|
} catch {
|
|
1723
1728
|
return null;
|
|
1724
1729
|
}
|
|
@@ -1728,10 +1733,10 @@ function getReferrer() {
|
|
|
1728
1733
|
var import_native_modules17 = require("@apps-in-toss/native-modules");
|
|
1729
1734
|
|
|
1730
1735
|
// src/ads/getIsDev.ts
|
|
1731
|
-
var
|
|
1736
|
+
var import_react_native29 = require("@granite-js/react-native");
|
|
1732
1737
|
function getIsDev() {
|
|
1733
1738
|
try {
|
|
1734
|
-
return new URL((0,
|
|
1739
|
+
return new URL((0, import_react_native29.getSchemeUri)()).searchParams.get("isDev") === "true";
|
|
1735
1740
|
} catch {
|
|
1736
1741
|
return false;
|
|
1737
1742
|
}
|
|
@@ -1985,10 +1990,10 @@ showFullScreenAd.isSupported = import_native_modules18.GoogleAdMob.showAppsInTos
|
|
|
1985
1990
|
|
|
1986
1991
|
// src/ads/tossAdEventLog.ts
|
|
1987
1992
|
var import_native_modules19 = require("@apps-in-toss/native-modules");
|
|
1988
|
-
var
|
|
1993
|
+
var import_react_native30 = require("@granite-js/react-native");
|
|
1989
1994
|
async function tossAdEventLog(params) {
|
|
1990
1995
|
const referrer = getReferrer();
|
|
1991
|
-
const appName =
|
|
1996
|
+
const appName = import_react_native30.Granite.appName;
|
|
1992
1997
|
const eventLogParams = {
|
|
1993
1998
|
...params,
|
|
1994
1999
|
params: {
|
|
@@ -2153,7 +2158,7 @@ function useSafeAreaInsetsEvent() {
|
|
|
2153
2158
|
}
|
|
2154
2159
|
|
|
2155
2160
|
// src/core/hooks/useWebBackHandler.tsx
|
|
2156
|
-
var
|
|
2161
|
+
var import_react_native31 = require("@granite-js/react-native");
|
|
2157
2162
|
var import_tds_react_native13 = require("@toss/tds-react-native");
|
|
2158
2163
|
var import_es_hangul5 = require("es-hangul");
|
|
2159
2164
|
var import_react25 = require("react");
|
|
@@ -2211,7 +2216,7 @@ function useWebBackHandler(webViewInitialURL, webViewRef) {
|
|
|
2211
2216
|
hasBackEvent: hasWebBackEvent,
|
|
2212
2217
|
addEventListener: addWebBackEventListener,
|
|
2213
2218
|
removeEventListener: removeWebBackEventListener
|
|
2214
|
-
} = (0,
|
|
2219
|
+
} = (0, import_react_native31.useBackEventState)();
|
|
2215
2220
|
const logging = useNavigationBarLogging();
|
|
2216
2221
|
const { openConfirm } = (0, import_tds_react_native13.useDialog)();
|
|
2217
2222
|
const global2 = getAppsInTossGlobals();
|
|
@@ -2247,7 +2252,7 @@ function useWebBackHandler(webViewInitialURL, webViewRef) {
|
|
|
2247
2252
|
logging.closePopupCtaClick(isConfirmed);
|
|
2248
2253
|
if (isConfirmed) {
|
|
2249
2254
|
captureExitLog(Date.now());
|
|
2250
|
-
(0,
|
|
2255
|
+
(0, import_react_native31.closeView)();
|
|
2251
2256
|
}
|
|
2252
2257
|
}
|
|
2253
2258
|
}, [
|
|
@@ -2294,7 +2299,7 @@ function mergeRefs(...refs) {
|
|
|
2294
2299
|
|
|
2295
2300
|
// src/hooks/useCreateUserAgent.ts
|
|
2296
2301
|
var import_native_modules20 = require("@apps-in-toss/native-modules");
|
|
2297
|
-
var
|
|
2302
|
+
var import_react_native32 = require("react-native");
|
|
2298
2303
|
var FontA11yCategory = {
|
|
2299
2304
|
Large: "Large",
|
|
2300
2305
|
xLarge: "xLarge",
|
|
@@ -2429,7 +2434,7 @@ function useCreateUserAgent({
|
|
|
2429
2434
|
}) {
|
|
2430
2435
|
const platform = (0, import_native_modules20.getPlatformOS)();
|
|
2431
2436
|
const appVersion = (0, import_native_modules20.getTossAppVersion)();
|
|
2432
|
-
const { fontScale } = (0,
|
|
2437
|
+
const { fontScale } = (0, import_react_native32.useWindowDimensions)();
|
|
2433
2438
|
const platformString = platform === "ios" ? "iPhone" : "Android phone";
|
|
2434
2439
|
const fontA11y = mapFontScaleToCategory(fontScale, platform);
|
|
2435
2440
|
const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
|
|
@@ -2451,10 +2456,10 @@ function useCreateUserAgent({
|
|
|
2451
2456
|
|
|
2452
2457
|
// src/hooks/useGeolocation.ts
|
|
2453
2458
|
var import_native_modules21 = require("@apps-in-toss/native-modules");
|
|
2454
|
-
var
|
|
2459
|
+
var import_react_native33 = require("@granite-js/react-native");
|
|
2455
2460
|
var import_react26 = require("react");
|
|
2456
2461
|
function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
2457
|
-
const isVisible = (0,
|
|
2462
|
+
const isVisible = (0, import_react_native33.useVisibility)();
|
|
2458
2463
|
const [location, setLocation] = (0, import_react26.useState)(null);
|
|
2459
2464
|
(0, import_react26.useEffect)(() => {
|
|
2460
2465
|
if (!isVisible) {
|
|
@@ -2474,11 +2479,11 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
|
2474
2479
|
}
|
|
2475
2480
|
|
|
2476
2481
|
// src/hooks/useWaitForReturnNavigator.tsx
|
|
2477
|
-
var
|
|
2482
|
+
var import_react_native34 = require("@granite-js/react-native");
|
|
2478
2483
|
var import_react27 = require("react");
|
|
2479
2484
|
function useWaitForReturnNavigator() {
|
|
2480
2485
|
const callbacks = (0, import_react27.useRef)([]).current;
|
|
2481
|
-
const navigation = (0,
|
|
2486
|
+
const navigation = (0, import_react_native34.useNavigation)();
|
|
2482
2487
|
const startNavigating = (0, import_react27.useCallback)(
|
|
2483
2488
|
(route, params) => {
|
|
2484
2489
|
return new Promise((resolve) => {
|
|
@@ -2499,7 +2504,7 @@ function useWaitForReturnNavigator() {
|
|
|
2499
2504
|
},
|
|
2500
2505
|
[callbacks]
|
|
2501
2506
|
);
|
|
2502
|
-
(0,
|
|
2507
|
+
(0, import_react_native34.useVisibilityChange)(handleVisibilityChange);
|
|
2503
2508
|
return startNavigating;
|
|
2504
2509
|
}
|
|
2505
2510
|
|
|
@@ -2514,7 +2519,7 @@ function useTopNavigation() {
|
|
|
2514
2519
|
|
|
2515
2520
|
// src/hooks/useWebViewMemoryDebug.tsx
|
|
2516
2521
|
var import_native_modules22 = require("@apps-in-toss/native-modules");
|
|
2517
|
-
var
|
|
2522
|
+
var import_react_native35 = require("@granite-js/react-native");
|
|
2518
2523
|
var import_tds_react_native14 = require("@toss/tds-react-native");
|
|
2519
2524
|
function useHandleWebViewProcessDidTerminate(webViewRef) {
|
|
2520
2525
|
const toast = (0, import_tds_react_native14.useToast)();
|
|
@@ -2537,7 +2542,7 @@ function webViewDebugLog(logName, params) {
|
|
|
2537
2542
|
log_type: "debug",
|
|
2538
2543
|
params: {
|
|
2539
2544
|
...params,
|
|
2540
|
-
app_name:
|
|
2545
|
+
app_name: import_react_native35.Granite.appName,
|
|
2541
2546
|
deployment_id: global2.deploymentId
|
|
2542
2547
|
}
|
|
2543
2548
|
};
|
|
@@ -2550,7 +2555,7 @@ function webViewDebugLog(logName, params) {
|
|
|
2550
2555
|
|
|
2551
2556
|
// src/utils/log.ts
|
|
2552
2557
|
var import_native_modules23 = require("@apps-in-toss/native-modules");
|
|
2553
|
-
var
|
|
2558
|
+
var import_react_native36 = require("@granite-js/react-native");
|
|
2554
2559
|
|
|
2555
2560
|
// src/utils/extractDateFromUUIDv7.ts
|
|
2556
2561
|
var extractDateFromUUIDv7 = (uuid) => {
|
|
@@ -2576,13 +2581,13 @@ var getGroupId = (url) => {
|
|
|
2576
2581
|
};
|
|
2577
2582
|
var getReferrer2 = () => {
|
|
2578
2583
|
try {
|
|
2579
|
-
const referrer = new URL((0,
|
|
2584
|
+
const referrer = new URL((0, import_react_native36.getSchemeUri)());
|
|
2580
2585
|
return referrer.searchParams.get("referrer");
|
|
2581
2586
|
} catch {
|
|
2582
2587
|
return "";
|
|
2583
2588
|
}
|
|
2584
2589
|
};
|
|
2585
|
-
var trackScreen = (url) => {
|
|
2590
|
+
var trackScreen = (url, title) => {
|
|
2586
2591
|
const { groupId, search } = getGroupId(url);
|
|
2587
2592
|
const log = {
|
|
2588
2593
|
log_type: "screen",
|
|
@@ -2590,6 +2595,7 @@ var trackScreen = (url) => {
|
|
|
2590
2595
|
params: {
|
|
2591
2596
|
search,
|
|
2592
2597
|
referrer: getReferrer2(),
|
|
2598
|
+
document_title: title,
|
|
2593
2599
|
deployment_id: env.getDeploymentId(),
|
|
2594
2600
|
deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
|
|
2595
2601
|
}
|
|
@@ -2608,7 +2614,7 @@ var WEBVIEW_TYPES = {
|
|
|
2608
2614
|
};
|
|
2609
2615
|
function mergeSchemeQueryParamsInto(url) {
|
|
2610
2616
|
const baseUrl = new URL(url);
|
|
2611
|
-
const schemeUrl = new URL((0,
|
|
2617
|
+
const schemeUrl = new URL((0, import_react_native37.getSchemeUri)());
|
|
2612
2618
|
const resultUrl = new URL(schemeUrl.pathname, baseUrl.origin);
|
|
2613
2619
|
for (const [key, value] of baseUrl.searchParams.entries()) {
|
|
2614
2620
|
resultUrl.searchParams.set(key, value);
|
|
@@ -2738,8 +2744,8 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2738
2744
|
/** Private */
|
|
2739
2745
|
memoryDebugLog: webViewMemoryDebugLog,
|
|
2740
2746
|
debugLog: async (event) => {
|
|
2741
|
-
|
|
2742
|
-
|
|
2747
|
+
(0, import_native_modules24.eventLog)(event);
|
|
2748
|
+
import_native_modules24.INTERNAL__module.tossCoreEventLog(event);
|
|
2743
2749
|
}
|
|
2744
2750
|
}
|
|
2745
2751
|
});
|
|
@@ -2769,7 +2775,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2769
2775
|
webBackHandler.handleWebBack();
|
|
2770
2776
|
return true;
|
|
2771
2777
|
};
|
|
2772
|
-
const subscription =
|
|
2778
|
+
const subscription = import_react_native38.BackHandler.addEventListener("hardwareBackPress", callback);
|
|
2773
2779
|
return () => subscription.remove();
|
|
2774
2780
|
}, [webBackHandler]);
|
|
2775
2781
|
const handleWebViewProcessDidTerminate = useHandleWebViewProcessDidTerminate(webViewRef);
|
|
@@ -2790,19 +2796,19 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2790
2796
|
onBackButtonClick: webBackHandler.handleWebBack,
|
|
2791
2797
|
onNavigationStateChange: (event) => {
|
|
2792
2798
|
if (event.url) {
|
|
2793
|
-
trackScreen(event.url);
|
|
2799
|
+
trackScreen(event.url, event.title);
|
|
2794
2800
|
}
|
|
2795
2801
|
props.onNavigationStateChange?.(event);
|
|
2796
2802
|
webBackHandler.onNavigationStateChange(event);
|
|
2797
2803
|
},
|
|
2798
|
-
userAgent:
|
|
2804
|
+
userAgent: import_react_native38.Platform.OS === "ios" ? userAgent : void 0,
|
|
2799
2805
|
sharedCookiesEnabled: true,
|
|
2800
2806
|
webviewDebuggingEnabled: webViewDebuggingEnabled,
|
|
2801
2807
|
thirdPartyCookiesEnabled: true,
|
|
2802
2808
|
onMessage: handler.onMessage,
|
|
2803
2809
|
injectedJavaScript: import_user_scripts.afterDocumentLoad,
|
|
2804
2810
|
injectedJavaScriptBeforeContentLoaded: [handler.injectedJavaScript, import_user_scripts.beforeDocumentLoad].join("\n"),
|
|
2805
|
-
decelerationRate:
|
|
2811
|
+
decelerationRate: import_react_native38.Platform.OS === "ios" ? 1 : void 0,
|
|
2806
2812
|
allowsBackForwardNavigationGestures,
|
|
2807
2813
|
onShouldStartLoadWithRequest: (event) => {
|
|
2808
2814
|
try {
|
|
@@ -2810,7 +2816,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2810
2816
|
if (["https:", "http:"].includes(url2.protocol) || url2.href === "about:blank") {
|
|
2811
2817
|
return true;
|
|
2812
2818
|
} else {
|
|
2813
|
-
|
|
2819
|
+
import_react_native38.Linking.openURL(convertIntentURL(url2) ?? url2.href);
|
|
2814
2820
|
return false;
|
|
2815
2821
|
}
|
|
2816
2822
|
} catch (error) {
|
|
@@ -2841,9 +2847,9 @@ __reExport(src_exports, require("@apps-in-toss/types"), module.exports);
|
|
|
2841
2847
|
var import_types = require("@apps-in-toss/types");
|
|
2842
2848
|
|
|
2843
2849
|
// src/ads/inlineAd/InlineAd.tsx
|
|
2844
|
-
var
|
|
2850
|
+
var import_react_native42 = require("@granite-js/react-native");
|
|
2845
2851
|
var import_react31 = require("react");
|
|
2846
|
-
var
|
|
2852
|
+
var import_react_native43 = require("react-native");
|
|
2847
2853
|
|
|
2848
2854
|
// src/ads/inlineAd/constants.ts
|
|
2849
2855
|
var SDK_ID = "106";
|
|
@@ -3104,7 +3110,7 @@ async function loadAd(adGroupId) {
|
|
|
3104
3110
|
}
|
|
3105
3111
|
|
|
3106
3112
|
// src/ads/inlineAd/opener.ts
|
|
3107
|
-
var
|
|
3113
|
+
var import_react_native39 = require("@granite-js/react-native");
|
|
3108
3114
|
function isSafeUrl(url) {
|
|
3109
3115
|
try {
|
|
3110
3116
|
const parsed = new URL(url);
|
|
@@ -3136,7 +3142,7 @@ function openLandingUrl(url) {
|
|
|
3136
3142
|
return;
|
|
3137
3143
|
}
|
|
3138
3144
|
try {
|
|
3139
|
-
(0,
|
|
3145
|
+
(0, import_react_native39.openURL)(getWebSchemeOrUri(url));
|
|
3140
3146
|
} catch (error) {
|
|
3141
3147
|
console.error("[InlineAd] Failed to open landing URL:", error);
|
|
3142
3148
|
}
|
|
@@ -3224,7 +3230,7 @@ var EventTracker = class {
|
|
|
3224
3230
|
// src/ads/inlineAd/ui/FeedBannerAdView.tsx
|
|
3225
3231
|
var import_react_native_svg = require("@granite-js/native/react-native-svg");
|
|
3226
3232
|
var import_react29 = require("react");
|
|
3227
|
-
var
|
|
3233
|
+
var import_react_native40 = require("react-native");
|
|
3228
3234
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
3229
3235
|
var ARROW_PATH = "m7.5 20.4c-.5-.5-.5-1.2 0-1.7l6.7-6.7-6.8-6.7c-.5-.5-.5-1.2 0-1.7s1.2-.5 1.7 0l7.5 7.5c.5.5.5 1.2 0 1.7l-7.5 7.5c-.2.3-.5.4-.8.4s-.6-.1-.8-.3z";
|
|
3230
3236
|
function FeedBannerAdView({
|
|
@@ -3242,12 +3248,12 @@ function FeedBannerAdView({
|
|
|
3242
3248
|
paddingStyle,
|
|
3243
3249
|
onPress
|
|
3244
3250
|
}) {
|
|
3245
|
-
const scale = (0, import_react29.useRef)(new
|
|
3251
|
+
const scale = (0, import_react29.useRef)(new import_react_native40.Animated.Value(1)).current;
|
|
3246
3252
|
const animateScale = (toValue) => {
|
|
3247
|
-
|
|
3253
|
+
import_react_native40.Animated.timing(scale, {
|
|
3248
3254
|
toValue,
|
|
3249
3255
|
duration: 100,
|
|
3250
|
-
easing:
|
|
3256
|
+
easing: import_react_native40.Easing.inOut(import_react_native40.Easing.ease),
|
|
3251
3257
|
useNativeDriver: true
|
|
3252
3258
|
}).start();
|
|
3253
3259
|
};
|
|
@@ -3260,81 +3266,81 @@ function FeedBannerAdView({
|
|
|
3260
3266
|
const resolvedCtaBackground = ctaBackgroundColor ?? "#3081F9";
|
|
3261
3267
|
const resolvedCtaTextColor = ctaTextColor ?? "#ffffff";
|
|
3262
3268
|
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3263
|
-
|
|
3269
|
+
import_react_native40.Pressable,
|
|
3264
3270
|
{
|
|
3265
3271
|
accessibilityRole: "button",
|
|
3266
3272
|
onPress: () => onPress(null),
|
|
3267
3273
|
onPressIn: handlePressIn,
|
|
3268
3274
|
onPressOut: handlePressOut,
|
|
3269
3275
|
style: styles.pressable,
|
|
3270
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3271
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3272
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3276
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.Animated.View, { style: [styles.container, paddingStyle, { transform: [{ scale }] }], children: [
|
|
3277
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.View, { style: styles.profileContainer, children: [
|
|
3278
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.View, { style: styles.brandArea, children: [
|
|
3273
3279
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3274
|
-
|
|
3280
|
+
import_react_native40.Pressable,
|
|
3275
3281
|
{
|
|
3276
3282
|
accessibilityRole: "button",
|
|
3277
3283
|
onPress: () => onPress("202"),
|
|
3278
3284
|
onPressIn: handlePressIn,
|
|
3279
3285
|
onPressOut: handlePressOut,
|
|
3280
3286
|
style: styles.logoContainer,
|
|
3281
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3282
|
-
brandLogoUri ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3283
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3287
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.View, { style: [styles.logoWrapper, { backgroundColor: colors.brandLogoBg }], children: [
|
|
3288
|
+
brandLogoUri ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Image, { source: { uri: brandLogoUri }, style: styles.logoImage, resizeMode: "cover" }) : null,
|
|
3289
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.View, { style: [styles.logoOverlay, { borderColor: colors.brandLogoBorder }] })
|
|
3284
3290
|
] })
|
|
3285
3291
|
}
|
|
3286
3292
|
),
|
|
3287
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3293
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.View, { style: styles.brandTextContainer, children: [
|
|
3288
3294
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3289
|
-
|
|
3295
|
+
import_react_native40.Pressable,
|
|
3290
3296
|
{
|
|
3291
3297
|
accessibilityRole: "button",
|
|
3292
3298
|
onPress: () => onPress("103"),
|
|
3293
3299
|
onPressIn: handlePressIn,
|
|
3294
3300
|
onPressOut: handlePressOut,
|
|
3295
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3301
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Text, { numberOfLines: 1, style: [styles.brandName, { color: colors.brandName }], children: brandName })
|
|
3296
3302
|
}
|
|
3297
3303
|
),
|
|
3298
|
-
isAdBadgeEnabled ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3304
|
+
isAdBadgeEnabled ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Text, { numberOfLines: 1, style: [styles.adBadge, { color: colors.adBadge }], children: "\uAD11\uACE0" }) : null
|
|
3299
3305
|
] })
|
|
3300
3306
|
] }),
|
|
3301
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3307
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.View, { style: styles.textArea, children: [
|
|
3302
3308
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3303
|
-
|
|
3309
|
+
import_react_native40.Pressable,
|
|
3304
3310
|
{
|
|
3305
3311
|
accessibilityRole: "button",
|
|
3306
3312
|
onPress: () => onPress("101"),
|
|
3307
3313
|
onPressIn: handlePressIn,
|
|
3308
3314
|
onPressOut: handlePressOut,
|
|
3309
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3315
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Text, { style: [styles.title, { color: colors.title }], children: title })
|
|
3310
3316
|
}
|
|
3311
3317
|
),
|
|
3312
3318
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3313
|
-
|
|
3319
|
+
import_react_native40.Pressable,
|
|
3314
3320
|
{
|
|
3315
3321
|
accessibilityRole: "button",
|
|
3316
3322
|
onPress: () => onPress("102"),
|
|
3317
3323
|
onPressIn: handlePressIn,
|
|
3318
3324
|
onPressOut: handlePressOut,
|
|
3319
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3325
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Text, { style: [styles.subtitle, { color: colors.subtitle }], children: subtitle })
|
|
3320
3326
|
}
|
|
3321
3327
|
)
|
|
3322
3328
|
] })
|
|
3323
3329
|
] }),
|
|
3324
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3330
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native40.View, { style: styles.card, children: [
|
|
3325
3331
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3326
|
-
|
|
3332
|
+
import_react_native40.Pressable,
|
|
3327
3333
|
{
|
|
3328
3334
|
accessibilityRole: "button",
|
|
3329
3335
|
onPress: () => onPress("201"),
|
|
3330
3336
|
onPressIn: handlePressIn,
|
|
3331
3337
|
onPressOut: handlePressOut,
|
|
3332
3338
|
style: styles.imageButton,
|
|
3333
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3339
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.View, { style: styles.imageContainer, children: mainImageUri ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Image, { source: { uri: mainImageUri }, style: styles.mainImage, resizeMode: "cover" }) : null })
|
|
3334
3340
|
}
|
|
3335
3341
|
),
|
|
3336
3342
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3337
|
-
|
|
3343
|
+
import_react_native40.Pressable,
|
|
3338
3344
|
{
|
|
3339
3345
|
accessibilityRole: "button",
|
|
3340
3346
|
onPress: () => onPress("0"),
|
|
@@ -3342,19 +3348,19 @@ function FeedBannerAdView({
|
|
|
3342
3348
|
onPressOut: handlePressOut,
|
|
3343
3349
|
style: [styles.cta, { backgroundColor: resolvedCtaBackground }],
|
|
3344
3350
|
children: [
|
|
3345
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3351
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Text, { style: [styles.ctaText, { color: resolvedCtaTextColor }], children: ctaText }),
|
|
3346
3352
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native_svg.Svg, { width: 20, height: 20, viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native_svg.Path, { d: ARROW_PATH, fill: resolvedCtaTextColor }) })
|
|
3347
3353
|
]
|
|
3348
3354
|
}
|
|
3349
3355
|
),
|
|
3350
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3356
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.View, { style: [styles.cardOverlay, { borderColor: colors.imageOverlayBorder }] })
|
|
3351
3357
|
] }),
|
|
3352
|
-
adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3358
|
+
adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native40.Text, { style: [styles.adClearance, { color: colors.adClearance }], children: adClearanceText }) : null
|
|
3353
3359
|
] })
|
|
3354
3360
|
}
|
|
3355
3361
|
);
|
|
3356
3362
|
}
|
|
3357
|
-
var styles =
|
|
3363
|
+
var styles = import_react_native40.StyleSheet.create({
|
|
3358
3364
|
pressable: {
|
|
3359
3365
|
width: "100%"
|
|
3360
3366
|
},
|
|
@@ -3393,7 +3399,7 @@ var styles = import_react_native41.StyleSheet.create({
|
|
|
3393
3399
|
borderRadius: 18
|
|
3394
3400
|
},
|
|
3395
3401
|
logoOverlay: {
|
|
3396
|
-
...
|
|
3402
|
+
...import_react_native40.StyleSheet.absoluteFillObject,
|
|
3397
3403
|
borderWidth: 1,
|
|
3398
3404
|
borderRadius: 18
|
|
3399
3405
|
},
|
|
@@ -3456,7 +3462,7 @@ var styles = import_react_native41.StyleSheet.create({
|
|
|
3456
3462
|
lineHeight: 22.5
|
|
3457
3463
|
},
|
|
3458
3464
|
cardOverlay: {
|
|
3459
|
-
...
|
|
3465
|
+
...import_react_native40.StyleSheet.absoluteFillObject,
|
|
3460
3466
|
borderWidth: 2,
|
|
3461
3467
|
borderRadius: 12,
|
|
3462
3468
|
pointerEvents: "none"
|
|
@@ -3471,7 +3477,7 @@ var styles = import_react_native41.StyleSheet.create({
|
|
|
3471
3477
|
// src/ads/inlineAd/ui/ListBannerAdView.tsx
|
|
3472
3478
|
var import_react_native_svg2 = require("@granite-js/native/react-native-svg");
|
|
3473
3479
|
var import_react30 = require("react");
|
|
3474
|
-
var
|
|
3480
|
+
var import_react_native41 = require("react-native");
|
|
3475
3481
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
3476
3482
|
var SQUIRCLE_PATH = "M0 17.352C0 3.564 3.564 0 17.352 0H18.648C32.436 0 36 3.564 36 17.352V18.648C36 32.436 32.436 36 18.648 36H17.352C3.564 36 0 32.436 0 18.648V17.352Z";
|
|
3477
3483
|
function ListBannerAdView({
|
|
@@ -3484,13 +3490,13 @@ function ListBannerAdView({
|
|
|
3484
3490
|
colors,
|
|
3485
3491
|
onPress
|
|
3486
3492
|
}) {
|
|
3487
|
-
const scale = (0, import_react30.useRef)(new
|
|
3493
|
+
const scale = (0, import_react30.useRef)(new import_react_native41.Animated.Value(1)).current;
|
|
3488
3494
|
const clipIdRef = (0, import_react30.useRef)(`clip-${Math.random().toString(36).slice(2)}`);
|
|
3489
3495
|
const animateScale = (toValue) => {
|
|
3490
|
-
|
|
3496
|
+
import_react_native41.Animated.timing(scale, {
|
|
3491
3497
|
toValue,
|
|
3492
3498
|
duration: 100,
|
|
3493
|
-
easing:
|
|
3499
|
+
easing: import_react_native41.Easing.inOut(import_react_native41.Easing.ease),
|
|
3494
3500
|
useNativeDriver: true
|
|
3495
3501
|
}).start();
|
|
3496
3502
|
};
|
|
@@ -3501,17 +3507,17 @@ function ListBannerAdView({
|
|
|
3501
3507
|
animateScale(1);
|
|
3502
3508
|
};
|
|
3503
3509
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3504
|
-
|
|
3510
|
+
import_react_native41.Pressable,
|
|
3505
3511
|
{
|
|
3506
3512
|
accessibilityRole: "button",
|
|
3507
3513
|
onPress: () => onPress(null),
|
|
3508
3514
|
onPressIn: handlePressIn,
|
|
3509
3515
|
onPressOut: handlePressOut,
|
|
3510
3516
|
style: styles2.pressable,
|
|
3511
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
3512
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
3517
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native41.Animated.View, { style: [styles2.container, paddingStyle, { transform: [{ scale }] }], children: [
|
|
3518
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native41.View, { style: styles2.titleRow, children: [
|
|
3513
3519
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3514
|
-
|
|
3520
|
+
import_react_native41.Pressable,
|
|
3515
3521
|
{
|
|
3516
3522
|
accessibilityRole: "button",
|
|
3517
3523
|
onPress: () => onPress("202"),
|
|
@@ -3544,31 +3550,31 @@ function ListBannerAdView({
|
|
|
3544
3550
|
] })
|
|
3545
3551
|
}
|
|
3546
3552
|
),
|
|
3547
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
3553
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native41.View, { style: styles2.textWrapper, children: [
|
|
3548
3554
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3549
|
-
|
|
3555
|
+
import_react_native41.Pressable,
|
|
3550
3556
|
{
|
|
3551
3557
|
accessibilityRole: "button",
|
|
3552
3558
|
onPress: () => onPress("101"),
|
|
3553
3559
|
onPressIn: handlePressIn,
|
|
3554
3560
|
onPressOut: handlePressOut,
|
|
3555
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3561
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native41.Text, { style: [styles2.title, { color: colors.title }], children: title })
|
|
3556
3562
|
}
|
|
3557
3563
|
),
|
|
3558
3564
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3559
|
-
|
|
3565
|
+
import_react_native41.Pressable,
|
|
3560
3566
|
{
|
|
3561
3567
|
accessibilityRole: "button",
|
|
3562
3568
|
onPress: () => onPress("102"),
|
|
3563
3569
|
onPressIn: handlePressIn,
|
|
3564
3570
|
onPressOut: handlePressOut,
|
|
3565
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3571
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native41.Text, { style: [styles2.subtitle, { color: colors.subtitle }], children: subtitle })
|
|
3566
3572
|
}
|
|
3567
3573
|
)
|
|
3568
3574
|
] })
|
|
3569
3575
|
] }),
|
|
3570
3576
|
adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3571
|
-
|
|
3577
|
+
import_react_native41.Text,
|
|
3572
3578
|
{
|
|
3573
3579
|
style: [
|
|
3574
3580
|
styles2.adClearance,
|
|
@@ -3585,7 +3591,7 @@ function ListBannerAdView({
|
|
|
3585
3591
|
}
|
|
3586
3592
|
);
|
|
3587
3593
|
}
|
|
3588
|
-
var styles2 =
|
|
3594
|
+
var styles2 = import_react_native41.StyleSheet.create({
|
|
3589
3595
|
pressable: {
|
|
3590
3596
|
width: "100%"
|
|
3591
3597
|
},
|
|
@@ -3815,7 +3821,7 @@ function InlineAd(props) {
|
|
|
3815
3821
|
onNoFill
|
|
3816
3822
|
});
|
|
3817
3823
|
const isMountedRef = (0, import_react31.useRef)(false);
|
|
3818
|
-
const colorScheme = (0,
|
|
3824
|
+
const colorScheme = (0, import_react_native43.useColorScheme)();
|
|
3819
3825
|
const selectedTheme = theme ?? DEFAULT_INLINE_AD_THEME;
|
|
3820
3826
|
const resolvedTheme = selectedTheme === "auto" ? colorScheme === "dark" ? "dark" : "light" : selectedTheme;
|
|
3821
3827
|
const resolvedTone = tone ?? DEFAULT_INLINE_AD_TONE;
|
|
@@ -3911,7 +3917,7 @@ function InlineAd(props) {
|
|
|
3911
3917
|
loadRef.current = null;
|
|
3912
3918
|
};
|
|
3913
3919
|
}, [adGroupId]);
|
|
3914
|
-
(0,
|
|
3920
|
+
(0, import_react_native42.useVisibilityChange)((documentVisibility) => {
|
|
3915
3921
|
if (documentVisibility !== "visible") {
|
|
3916
3922
|
return;
|
|
3917
3923
|
}
|
|
@@ -4010,26 +4016,26 @@ function InlineAd(props) {
|
|
|
4010
4016
|
}
|
|
4011
4017
|
};
|
|
4012
4018
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4013
|
-
|
|
4019
|
+
import_react_native42.ImpressionArea,
|
|
4014
4020
|
{
|
|
4015
4021
|
style: styles3.impressionArea,
|
|
4016
4022
|
onImpressionStart: handleImpression1px,
|
|
4017
4023
|
areaThreshold: 0,
|
|
4018
4024
|
UNSAFE__impressFallbackOnMount: Boolean(impressFallbackOnMount),
|
|
4019
4025
|
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4020
|
-
|
|
4026
|
+
import_react_native42.ImpressionArea,
|
|
4021
4027
|
{
|
|
4022
4028
|
onImpressionStart: handleImpression100p,
|
|
4023
4029
|
areaThreshold: 1,
|
|
4024
4030
|
UNSAFE__impressFallbackOnMount: Boolean(impressFallbackOnMount),
|
|
4025
4031
|
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4026
|
-
|
|
4032
|
+
import_react_native42.ImpressionArea,
|
|
4027
4033
|
{
|
|
4028
4034
|
onImpressionStart: handleViewableStart,
|
|
4029
4035
|
onImpressionEnd: handleViewableEnd,
|
|
4030
4036
|
areaThreshold: 0.5,
|
|
4031
4037
|
UNSAFE__impressFallbackOnMount: Boolean(impressFallbackOnMount),
|
|
4032
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4038
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_native43.View, { style: [styles3.wrapper, resolvedVariant === "card" && styles3.cardWrapper], children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react_native43.View, { style: [styles3.surface, { backgroundColor }, resolvedVariant === "card" && styles3.cardSurface], children: [
|
|
4033
4039
|
isListBanner && listCreative ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4034
4040
|
ListBannerAdView,
|
|
4035
4041
|
{
|
|
@@ -4070,7 +4076,7 @@ function InlineAd(props) {
|
|
|
4070
4076
|
impressionKey
|
|
4071
4077
|
);
|
|
4072
4078
|
}
|
|
4073
|
-
var styles3 =
|
|
4079
|
+
var styles3 = import_react_native43.StyleSheet.create({
|
|
4074
4080
|
impressionArea: {
|
|
4075
4081
|
width: "100%"
|
|
4076
4082
|
},
|
package/dist/index.js
CHANGED
|
@@ -876,7 +876,7 @@ function useNavigationEvent() {
|
|
|
876
876
|
}
|
|
877
877
|
|
|
878
878
|
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
879
|
-
import { INTERNAL__appBridgeHandler, isMinVersionSupported as isMinVersionSupported2 } from "@apps-in-toss/native-modules";
|
|
879
|
+
import { INTERNAL__appBridgeHandler as INTERNAL__appBridgeHandler2, isMinVersionSupported as isMinVersionSupported2 } from "@apps-in-toss/native-modules";
|
|
880
880
|
import { openURL as openURL5 } from "@granite-js/react-native";
|
|
881
881
|
import { BottomSheet, List, ListHeader } from "@toss/tds-react-native";
|
|
882
882
|
import { useAdaptive as useAdaptive2, useOverlay as useOverlay2 } from "@toss/tds-react-native/private";
|
|
@@ -1062,8 +1062,7 @@ function AppShareListMenu() {
|
|
|
1062
1062
|
}
|
|
1063
1063
|
|
|
1064
1064
|
// src/core/hooks/useMoreButtonBottomSheet/HomeShortcutMenu.tsx
|
|
1065
|
-
import { getOperationalEnvironment as getOperationalEnvironment2 } from "@apps-in-toss/native-modules";
|
|
1066
|
-
import { NativeModules } from "react-native";
|
|
1065
|
+
import { getOperationalEnvironment as getOperationalEnvironment2, INTERNAL__appBridgeHandler } from "@apps-in-toss/native-modules";
|
|
1067
1066
|
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
1068
1067
|
function HomeShortcutMenu() {
|
|
1069
1068
|
const isSandbox = getOperationalEnvironment2() === "sandbox";
|
|
@@ -1077,12 +1076,18 @@ function HomeShortcutMenu() {
|
|
|
1077
1076
|
title: "\uD648 \uD654\uBA74\uC5D0 \uCD94\uAC00",
|
|
1078
1077
|
iconURL: "https://static.toss.im/icons/png/4x/icon-plus-circle-mono.png",
|
|
1079
1078
|
onPress: () => {
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1079
|
+
INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1080
|
+
"addMiniAppShortcut",
|
|
1081
|
+
{
|
|
1082
|
+
title: globals.brandDisplayName,
|
|
1083
|
+
appName: global.__granite.app.name,
|
|
1084
|
+
iconUrl: globals.brandIcon,
|
|
1085
|
+
guideUrl: "https://service.toss.im/app-mini-home/shortcut"
|
|
1086
|
+
},
|
|
1087
|
+
{ onSuccess: () => {
|
|
1088
|
+
}, onError: () => {
|
|
1089
|
+
} }
|
|
1090
|
+
);
|
|
1086
1091
|
}
|
|
1087
1092
|
}
|
|
1088
1093
|
);
|
|
@@ -1154,7 +1159,7 @@ function useMoreButtonBottomSheet() {
|
|
|
1154
1159
|
if (!isBottomSheetSupported) {
|
|
1155
1160
|
return;
|
|
1156
1161
|
}
|
|
1157
|
-
|
|
1162
|
+
INTERNAL__appBridgeHandler2.invokeAppBridgeMethod(
|
|
1158
1163
|
APP_BRIDGE_METHOD_NAME,
|
|
1159
1164
|
{},
|
|
1160
1165
|
{
|
|
@@ -1420,7 +1425,7 @@ function registerApp(container, { context, analytics }) {
|
|
|
1420
1425
|
}
|
|
1421
1426
|
function AppsInTossScreenContainer({ children }) {
|
|
1422
1427
|
const isRNApp = getAppsInTossGlobals().webViewType == null;
|
|
1423
|
-
return /* @__PURE__ */ jsx14(NavigationBarContextProvider, { children: /* @__PURE__ */ jsx14(Analytics.Screen, { children:
|
|
1428
|
+
return /* @__PURE__ */ jsx14(NavigationBarContextProvider, { children: isRNApp ? /* @__PURE__ */ jsx14(Analytics.Screen, { children: /* @__PURE__ */ jsx14(RNAppContainer, { children }) }) : children });
|
|
1424
1429
|
}
|
|
1425
1430
|
function getAppName() {
|
|
1426
1431
|
try {
|
|
@@ -1446,7 +1451,9 @@ import {
|
|
|
1446
1451
|
iapCreateOneTimePurchaseOrder,
|
|
1447
1452
|
processProductGrant,
|
|
1448
1453
|
requestOneTimePurchase,
|
|
1449
|
-
safeSyncPostMessage
|
|
1454
|
+
safeSyncPostMessage,
|
|
1455
|
+
eventLog as eventLog2,
|
|
1456
|
+
INTERNAL__module as INTERNAL__module8
|
|
1450
1457
|
} from "@apps-in-toss/native-modules";
|
|
1451
1458
|
import * as appsInTossAsyncBridges from "@apps-in-toss/native-modules/async-bridges";
|
|
1452
1459
|
import * as appsInTossConstantBridges from "@apps-in-toss/native-modules/constant-bridges";
|
|
@@ -1457,7 +1464,7 @@ import { getSchemeUri as getSchemeUri9 } from "@granite-js/react-native";
|
|
|
1457
1464
|
import { ExternalWebViewScreen, tdsEvent } from "@toss/tds-react-native";
|
|
1458
1465
|
import { useSafeAreaBottom, useSafeAreaTop as useSafeAreaTop3 } from "@toss/tds-react-native/private";
|
|
1459
1466
|
import { useEffect as useEffect13, useMemo as useMemo6, useRef as useRef6, useState as useState6 } from "react";
|
|
1460
|
-
import { BackHandler as BackHandler2, Linking,
|
|
1467
|
+
import { BackHandler as BackHandler2, Linking, Platform as Platform6 } from "react-native";
|
|
1461
1468
|
|
|
1462
1469
|
// src/components/GameWebView.tsx
|
|
1463
1470
|
import { setIosSwipeGestureEnabled as setIosSwipeGestureEnabled3, getOperationalEnvironment as getOperationalEnvironment5 } from "@apps-in-toss/native-modules";
|
|
@@ -1632,7 +1639,7 @@ function convertIntentURL(url) {
|
|
|
1632
1639
|
// src/ads/fetchTossAd.ts
|
|
1633
1640
|
import {
|
|
1634
1641
|
getOperationalEnvironment as getOperationalEnvironment6,
|
|
1635
|
-
INTERNAL__appBridgeHandler as
|
|
1642
|
+
INTERNAL__appBridgeHandler as INTERNAL__appBridgeHandler3,
|
|
1636
1643
|
isMinVersionSupported as isMinVersionSupported4
|
|
1637
1644
|
} from "@apps-in-toss/native-modules";
|
|
1638
1645
|
|
|
@@ -1664,7 +1671,7 @@ function fetchTossAd(params) {
|
|
|
1664
1671
|
}
|
|
1665
1672
|
const { onEvent, onError, options } = params;
|
|
1666
1673
|
const { adGroupId } = options;
|
|
1667
|
-
const unregisterCallbacks =
|
|
1674
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler3.invokeAppBridgeMethod(
|
|
1668
1675
|
"fetchTossAd",
|
|
1669
1676
|
{ spaceUnitId: adGroupId, sessionId, sdkId: options.sdkId, availableStyleIds: options.availableStyleIds },
|
|
1670
1677
|
{
|
|
@@ -1689,7 +1696,7 @@ fetchTossAd.isSupported = () => {
|
|
|
1689
1696
|
};
|
|
1690
1697
|
|
|
1691
1698
|
// src/ads/integratedAd.ts
|
|
1692
|
-
import { GoogleAdMob, INTERNAL__appBridgeHandler as
|
|
1699
|
+
import { GoogleAdMob, INTERNAL__appBridgeHandler as INTERNAL__appBridgeHandler4, isMinVersionSupported as isMinVersionSupported5 } from "@apps-in-toss/native-modules";
|
|
1693
1700
|
|
|
1694
1701
|
// src/ads/generateRequestId.ts
|
|
1695
1702
|
function generateRequestId() {
|
|
@@ -1809,7 +1816,7 @@ function generateLoadFullScreenAd(sdkId) {
|
|
|
1809
1816
|
const { onEvent, onError, options } = params;
|
|
1810
1817
|
const { adGroupId } = options;
|
|
1811
1818
|
const referrer = getReferrer();
|
|
1812
|
-
const unregisterCallbacks =
|
|
1819
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler4.invokeAppBridgeMethod(
|
|
1813
1820
|
"loadTossAdOrAdmob",
|
|
1814
1821
|
{ spaceUnitId: adGroupId, referrer, sessionId, sdkId },
|
|
1815
1822
|
{
|
|
@@ -1933,7 +1940,7 @@ function showFullScreenAd(params) {
|
|
|
1933
1940
|
const { onEvent, onError, options } = params;
|
|
1934
1941
|
const { adGroupId } = options;
|
|
1935
1942
|
const referrer = getReferrer();
|
|
1936
|
-
const unregisterCallbacks =
|
|
1943
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler4.invokeAppBridgeMethod(
|
|
1937
1944
|
"showTossAdOrAdmob",
|
|
1938
1945
|
{ spaceUnitId: adGroupId, referrer, sessionId },
|
|
1939
1946
|
{
|
|
@@ -2566,7 +2573,7 @@ var getReferrer2 = () => {
|
|
|
2566
2573
|
return "";
|
|
2567
2574
|
}
|
|
2568
2575
|
};
|
|
2569
|
-
var trackScreen = (url) => {
|
|
2576
|
+
var trackScreen = (url, title) => {
|
|
2570
2577
|
const { groupId, search } = getGroupId(url);
|
|
2571
2578
|
const log = {
|
|
2572
2579
|
log_type: "screen",
|
|
@@ -2574,6 +2581,7 @@ var trackScreen = (url) => {
|
|
|
2574
2581
|
params: {
|
|
2575
2582
|
search,
|
|
2576
2583
|
referrer: getReferrer2(),
|
|
2584
|
+
document_title: title,
|
|
2577
2585
|
deployment_id: env.getDeploymentId(),
|
|
2578
2586
|
deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
|
|
2579
2587
|
}
|
|
@@ -2722,8 +2730,8 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2722
2730
|
/** Private */
|
|
2723
2731
|
memoryDebugLog: webViewMemoryDebugLog,
|
|
2724
2732
|
debugLog: async (event) => {
|
|
2725
|
-
|
|
2726
|
-
|
|
2733
|
+
eventLog2(event);
|
|
2734
|
+
INTERNAL__module8.tossCoreEventLog(event);
|
|
2727
2735
|
}
|
|
2728
2736
|
}
|
|
2729
2737
|
});
|
|
@@ -2774,7 +2782,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2774
2782
|
onBackButtonClick: webBackHandler.handleWebBack,
|
|
2775
2783
|
onNavigationStateChange: (event) => {
|
|
2776
2784
|
if (event.url) {
|
|
2777
|
-
trackScreen(event.url);
|
|
2785
|
+
trackScreen(event.url, event.title);
|
|
2778
2786
|
}
|
|
2779
2787
|
props.onNavigationStateChange?.(event);
|
|
2780
2788
|
webBackHandler.onNavigationStateChange(event);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apps-in-toss/framework",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.6",
|
|
5
5
|
"description": "The framework for Apps In Toss",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"typecheck": "tsc --noEmit",
|
|
@@ -55,12 +55,12 @@
|
|
|
55
55
|
"ait": "./bin/ait.js"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@apps-in-toss/analytics": "2.0.
|
|
59
|
-
"@apps-in-toss/cli": "2.0.
|
|
60
|
-
"@apps-in-toss/native-modules": "2.0.
|
|
61
|
-
"@apps-in-toss/plugins": "2.0.
|
|
62
|
-
"@apps-in-toss/types": "2.0.
|
|
63
|
-
"@apps-in-toss/user-scripts": "^2.0.
|
|
58
|
+
"@apps-in-toss/analytics": "2.0.6",
|
|
59
|
+
"@apps-in-toss/cli": "2.0.6",
|
|
60
|
+
"@apps-in-toss/native-modules": "2.0.6",
|
|
61
|
+
"@apps-in-toss/plugins": "2.0.6",
|
|
62
|
+
"@apps-in-toss/types": "2.0.6",
|
|
63
|
+
"@apps-in-toss/user-scripts": "^2.0.6",
|
|
64
64
|
"es-hangul": "^2.3.2"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|