@apps-in-toss/framework 1.4.9 → 1.5.1
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 +326 -218
- package/dist/index.js +219 -111
- package/package.json +14 -14
package/dist/index.cjs
CHANGED
|
@@ -48,10 +48,10 @@ var import_analytics2 = require("@apps-in-toss/analytics");
|
|
|
48
48
|
|
|
49
49
|
// src/core/registerApp.tsx
|
|
50
50
|
var import_analytics = require("@apps-in-toss/analytics");
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
var
|
|
51
|
+
var import_native_modules14 = require("@apps-in-toss/native-modules");
|
|
52
|
+
var import_react_native23 = require("@granite-js/react-native");
|
|
53
|
+
var import_tds_react_native11 = require("@toss/tds-react-native");
|
|
54
|
+
var import_react_native24 = require("react-native");
|
|
55
55
|
|
|
56
56
|
// src/core/components/AppEvent.tsx
|
|
57
57
|
var import_native_modules2 = require("@apps-in-toss/native-modules");
|
|
@@ -277,9 +277,9 @@ function useAppsInTossBridge() {
|
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
// src/components/RNAppContainer.tsx
|
|
280
|
-
var
|
|
280
|
+
var import_native_modules13 = require("@apps-in-toss/native-modules");
|
|
281
281
|
var import_react18 = require("react");
|
|
282
|
-
var
|
|
282
|
+
var import_react_native22 = require("react-native");
|
|
283
283
|
|
|
284
284
|
// src/components/GameInitializer.tsx
|
|
285
285
|
var import_native_modules7 = require("@apps-in-toss/native-modules");
|
|
@@ -886,18 +886,22 @@ function useNavigationEvent() {
|
|
|
886
886
|
}
|
|
887
887
|
|
|
888
888
|
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
889
|
-
var
|
|
890
|
-
var
|
|
891
|
-
var
|
|
889
|
+
var import_native_modules12 = require("@apps-in-toss/native-modules");
|
|
890
|
+
var import_react_native20 = require("@granite-js/react-native");
|
|
891
|
+
var import_tds_react_native9 = require("@toss/tds-react-native");
|
|
892
892
|
var import_private4 = require("@toss/tds-react-native/private");
|
|
893
893
|
var import_react16 = require("react");
|
|
894
894
|
|
|
895
895
|
// src/core/hooks/useMoreButtonBottomSheet/AppShareListMenu.tsx
|
|
896
896
|
var import_native_modules10 = require("@apps-in-toss/native-modules");
|
|
897
|
-
var
|
|
897
|
+
var import_react_native17 = require("@granite-js/react-native");
|
|
898
|
+
var import_tds_react_native8 = require("@toss/tds-react-native");
|
|
899
|
+
var import_react_native18 = require("react-native");
|
|
900
|
+
|
|
901
|
+
// src/core/hooks/useMoreButtonBottomSheet/Menu.tsx
|
|
898
902
|
var import_tds_react_native7 = require("@toss/tds-react-native");
|
|
899
903
|
var import_private3 = require("@toss/tds-react-native/private");
|
|
900
|
-
var
|
|
904
|
+
var import_react_native16 = require("react-native");
|
|
901
905
|
|
|
902
906
|
// src/core/hooks/useMoreButtonBottomSheet/useMoreButtonBottomSheetLogging.tsx
|
|
903
907
|
var import_native_modules9 = require("@apps-in-toss/native-modules");
|
|
@@ -968,6 +972,82 @@ function useMoreButtonBottomSheetLogging() {
|
|
|
968
972
|
};
|
|
969
973
|
}
|
|
970
974
|
|
|
975
|
+
// src/core/hooks/useMoreButtonBottomSheet/Menu.tsx
|
|
976
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
977
|
+
function Menu({ title, iconURL, onPress }) {
|
|
978
|
+
const globals = getAppsInTossGlobals();
|
|
979
|
+
const adaptive = (0, import_private3.useAdaptive)();
|
|
980
|
+
const iconName = getIconName(iconURL);
|
|
981
|
+
const logging = useMoreButtonBottomSheetLogging();
|
|
982
|
+
const brandPrimaryColorRGB = hexToRGB(globals.brandPrimaryColor);
|
|
983
|
+
const iconBackgroundColor = brandPrimaryColorRGB ? `rgba(${brandPrimaryColorRGB.join(",")},0.1)` : adaptive.grey100;
|
|
984
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
985
|
+
import_tds_react_native7.ListRow,
|
|
986
|
+
{
|
|
987
|
+
left: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
988
|
+
import_react_native16.View,
|
|
989
|
+
{
|
|
990
|
+
style: {
|
|
991
|
+
width: 30,
|
|
992
|
+
height: 30,
|
|
993
|
+
borderRadius: 10,
|
|
994
|
+
flexDirection: "row",
|
|
995
|
+
alignItems: "center",
|
|
996
|
+
justifyContent: "center",
|
|
997
|
+
marginRight: 16,
|
|
998
|
+
backgroundColor: iconBackgroundColor
|
|
999
|
+
},
|
|
1000
|
+
children: iconName ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1001
|
+
import_tds_react_native7.Asset.Icon,
|
|
1002
|
+
{
|
|
1003
|
+
frameShape: { width: 20, height: 20 },
|
|
1004
|
+
color: globals.brandPrimaryColor,
|
|
1005
|
+
name: iconName
|
|
1006
|
+
}
|
|
1007
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1008
|
+
import_tds_react_native7.Asset.Image,
|
|
1009
|
+
{
|
|
1010
|
+
frameShape: { width: 20, height: 20 },
|
|
1011
|
+
source: { uri: iconURL }
|
|
1012
|
+
}
|
|
1013
|
+
)
|
|
1014
|
+
}
|
|
1015
|
+
),
|
|
1016
|
+
contents: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1017
|
+
import_tds_react_native7.ListRow.Texts,
|
|
1018
|
+
{
|
|
1019
|
+
type: "1RowTypeA",
|
|
1020
|
+
top: title,
|
|
1021
|
+
topProps: { color: adaptive.grey700 }
|
|
1022
|
+
}
|
|
1023
|
+
),
|
|
1024
|
+
verticalPadding: "extraSmall",
|
|
1025
|
+
onPress: () => {
|
|
1026
|
+
logging.menuClick({ title });
|
|
1027
|
+
onPress?.();
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
);
|
|
1031
|
+
}
|
|
1032
|
+
var iconNameRegExp = /^(icon-|icn-(?!(car|sec|bank-(fill|square|horizontal))-))(.+)/i;
|
|
1033
|
+
var iconURLRegExp = /^https:\/\/static\.toss\.im\/icons\/(png\/\dx|svg|pdf)\/((icon-|icn-(?!(car|sec|bank-(fill|square|horizontal))-))(.+))\.(png|svg|pdf)$/i;
|
|
1034
|
+
function isIconUrl(url) {
|
|
1035
|
+
return iconNameRegExp.test(url) || iconURLRegExp.test(url);
|
|
1036
|
+
}
|
|
1037
|
+
function getIconName(url) {
|
|
1038
|
+
if (!isIconUrl(url)) {
|
|
1039
|
+
return null;
|
|
1040
|
+
}
|
|
1041
|
+
if (iconNameRegExp.test(url)) {
|
|
1042
|
+
return url;
|
|
1043
|
+
}
|
|
1044
|
+
return url.match(iconURLRegExp)?.[2];
|
|
1045
|
+
}
|
|
1046
|
+
function hexToRGB(hex) {
|
|
1047
|
+
const rgb = hex.toLowerCase().match(/[0-9,a-f]{2}/g)?.map((str) => parseInt(str, 16));
|
|
1048
|
+
return rgb?.length === 3 ? rgb : void 0;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
971
1051
|
// src/core/utils/url.ts
|
|
972
1052
|
function addParamsToUrl(url, params) {
|
|
973
1053
|
const urlObj = new URL(url);
|
|
@@ -978,42 +1058,24 @@ function addParamsToUrl(url, params) {
|
|
|
978
1058
|
}
|
|
979
1059
|
|
|
980
1060
|
// src/core/hooks/useMoreButtonBottomSheet/AppShareListMenu.tsx
|
|
981
|
-
var
|
|
1061
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
982
1062
|
var SHARE_SCHEME_REFERRER = "appsintoss.common_module_share";
|
|
983
1063
|
var APP_SHARE_MENU_INFO = {
|
|
984
1064
|
contactItemName: "\uACF5\uC720\uD558\uAE30",
|
|
985
1065
|
contactIconUrl: "https://static.toss.im/icons/png/4x/icon-share-dots-mono.png"
|
|
986
1066
|
};
|
|
987
1067
|
function AppShareListMenu() {
|
|
988
|
-
const
|
|
989
|
-
const adaptive = (0, import_private3.useAdaptive)();
|
|
990
|
-
const logging = useMoreButtonBottomSheetLogging();
|
|
991
|
-
const initialScheme = (0, import_react_native16.getSchemeUri)();
|
|
1068
|
+
const initialScheme = (0, import_react_native17.getSchemeUri)();
|
|
992
1069
|
const isSandbox = (0, import_native_modules10.getOperationalEnvironment)() === "sandbox";
|
|
993
|
-
const { openConfirm } = (0,
|
|
1070
|
+
const { openConfirm } = (0, import_tds_react_native8.useDialog)();
|
|
994
1071
|
const schemeForShare = addParamsToUrl(initialScheme, {
|
|
995
1072
|
referrer: SHARE_SCHEME_REFERRER
|
|
996
1073
|
});
|
|
997
|
-
return /* @__PURE__ */ (0,
|
|
998
|
-
|
|
1074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1075
|
+
Menu,
|
|
999
1076
|
{
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
{
|
|
1003
|
-
color: globals.brandPrimaryColor,
|
|
1004
|
-
source: { uri: APP_SHARE_MENU_INFO.contactIconUrl },
|
|
1005
|
-
type: "background"
|
|
1006
|
-
}
|
|
1007
|
-
),
|
|
1008
|
-
contents: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1009
|
-
import_tds_react_native7.ListRow.Texts,
|
|
1010
|
-
{
|
|
1011
|
-
type: "1RowTypeA",
|
|
1012
|
-
top: APP_SHARE_MENU_INFO.contactItemName,
|
|
1013
|
-
topProps: { color: adaptive.grey700 }
|
|
1014
|
-
}
|
|
1015
|
-
),
|
|
1016
|
-
verticalPadding: "extraSmall",
|
|
1077
|
+
title: APP_SHARE_MENU_INFO.contactItemName,
|
|
1078
|
+
iconURL: APP_SHARE_MENU_INFO.contactIconUrl,
|
|
1017
1079
|
onPress: () => {
|
|
1018
1080
|
if (isSandbox) {
|
|
1019
1081
|
openConfirm({
|
|
@@ -1024,8 +1086,7 @@ function AppShareListMenu() {
|
|
|
1024
1086
|
});
|
|
1025
1087
|
return;
|
|
1026
1088
|
}
|
|
1027
|
-
|
|
1028
|
-
import_react_native17.NativeModules.AppsInTossModule.shareWithScheme({
|
|
1089
|
+
import_react_native18.NativeModules.AppsInTossModule.shareWithScheme({
|
|
1029
1090
|
params: {
|
|
1030
1091
|
schemeURL: schemeForShare
|
|
1031
1092
|
}
|
|
@@ -1035,6 +1096,25 @@ function AppShareListMenu() {
|
|
|
1035
1096
|
);
|
|
1036
1097
|
}
|
|
1037
1098
|
|
|
1099
|
+
// src/core/hooks/useMoreButtonBottomSheet/PermissionsMenu.tsx
|
|
1100
|
+
var import_native_modules11 = require("@apps-in-toss/native-modules");
|
|
1101
|
+
var import_react_native19 = require("@granite-js/react-native");
|
|
1102
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1103
|
+
function PermissionsMenu() {
|
|
1104
|
+
const globals = getAppsInTossGlobals();
|
|
1105
|
+
if ((0, import_native_modules11.getOperationalEnvironment)() === "sandbox") {
|
|
1106
|
+
return null;
|
|
1107
|
+
}
|
|
1108
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1109
|
+
Menu,
|
|
1110
|
+
{
|
|
1111
|
+
title: "\uAD8C\uD55C \uC124\uC815",
|
|
1112
|
+
iconURL: "https://static.toss.im/icons/png/4x/icon-setting-mono.png",
|
|
1113
|
+
onPress: () => (0, import_react_native19.openURL)(`servicetoss://apps-in-toss-menu/permissions?appName=${import_react_native19.Granite.appName}&displayAppName=${globals.brandDisplayName}`)
|
|
1114
|
+
}
|
|
1115
|
+
);
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1038
1118
|
// src/core/utils/ensureValue.ts
|
|
1039
1119
|
function ensureValue(value, name) {
|
|
1040
1120
|
if (value === void 0) {
|
|
@@ -1044,7 +1124,7 @@ function ensureValue(value, name) {
|
|
|
1044
1124
|
}
|
|
1045
1125
|
|
|
1046
1126
|
// src/core/hooks/useMoreButtonBottomSheet/index.tsx
|
|
1047
|
-
var
|
|
1127
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1048
1128
|
var APP_BRIDGE_METHOD_NAME = "getMiniAppsSupportContact";
|
|
1049
1129
|
var MIN_VERSION = {
|
|
1050
1130
|
BOTTOM_SHEET: {
|
|
@@ -1054,6 +1134,10 @@ var MIN_VERSION = {
|
|
|
1054
1134
|
SHARE_LIST_MENU: {
|
|
1055
1135
|
android: "5.230.0",
|
|
1056
1136
|
ios: "5.230.0"
|
|
1137
|
+
},
|
|
1138
|
+
PERMISSIONS_MENU: {
|
|
1139
|
+
android: "5.238.0",
|
|
1140
|
+
ios: "5.237.0"
|
|
1057
1141
|
}
|
|
1058
1142
|
};
|
|
1059
1143
|
function useMoreButtonBottomSheet() {
|
|
@@ -1064,13 +1148,14 @@ function useMoreButtonBottomSheet() {
|
|
|
1064
1148
|
const logging = useMoreButtonBottomSheetLogging();
|
|
1065
1149
|
const overlay = (0, import_private4.useOverlay)();
|
|
1066
1150
|
const title = ensureValue(globals.brandDisplayName, "displayName");
|
|
1067
|
-
const isBottomSheetSupported = (0,
|
|
1068
|
-
const isShareListMenuSupported = (0,
|
|
1151
|
+
const isBottomSheetSupported = (0, import_native_modules12.isMinVersionSupported)(MIN_VERSION.BOTTOM_SHEET);
|
|
1152
|
+
const isShareListMenuSupported = (0, import_native_modules12.isMinVersionSupported)(MIN_VERSION.SHARE_LIST_MENU);
|
|
1153
|
+
const [isPermissionsMenuSupported, setIsPermissionsMenuSupported] = (0, import_react16.useState)(false);
|
|
1069
1154
|
(0, import_react16.useEffect)(() => {
|
|
1070
1155
|
if (!isBottomSheetSupported) {
|
|
1071
1156
|
return;
|
|
1072
1157
|
}
|
|
1073
|
-
|
|
1158
|
+
import_native_modules12.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1074
1159
|
APP_BRIDGE_METHOD_NAME,
|
|
1075
1160
|
{},
|
|
1076
1161
|
{
|
|
@@ -1078,6 +1163,16 @@ function useMoreButtonBottomSheet() {
|
|
|
1078
1163
|
onError: (error) => console.error("\uBA54\uB274 \uBAA9\uB85D\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:", error)
|
|
1079
1164
|
}
|
|
1080
1165
|
);
|
|
1166
|
+
if ((0, import_native_modules12.isMinVersionSupported)(MIN_VERSION.PERMISSIONS_MENU)) {
|
|
1167
|
+
import_native_modules12.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
|
|
1168
|
+
"getAllPermission",
|
|
1169
|
+
{},
|
|
1170
|
+
{
|
|
1171
|
+
onSuccess: (permissions) => setIsPermissionsMenuSupported(permissions.length > 0),
|
|
1172
|
+
onError: (error) => console.error("\uAD8C\uD55C \uBAA9\uB85D\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:", error)
|
|
1173
|
+
}
|
|
1174
|
+
);
|
|
1175
|
+
}
|
|
1081
1176
|
}, [isBottomSheetSupported]);
|
|
1082
1177
|
const onClickHandler = async () => {
|
|
1083
1178
|
logging.open();
|
|
@@ -1093,18 +1188,18 @@ function useMoreButtonBottomSheet() {
|
|
|
1093
1188
|
logging.close();
|
|
1094
1189
|
close();
|
|
1095
1190
|
};
|
|
1096
|
-
return /* @__PURE__ */ (0,
|
|
1097
|
-
|
|
1191
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BottomSheetImpressionArea, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1192
|
+
import_tds_react_native9.BottomSheet.Root,
|
|
1098
1193
|
{
|
|
1099
|
-
header: /* @__PURE__ */ (0,
|
|
1100
|
-
|
|
1194
|
+
header: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1195
|
+
import_tds_react_native9.ListHeader,
|
|
1101
1196
|
{
|
|
1102
|
-
title: /* @__PURE__ */ (0,
|
|
1197
|
+
title: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tds_react_native9.ListHeader.TitleParagraph, { color: adaptive.grey800, fontWeight: "bold", typography: "t5", children: title })
|
|
1103
1198
|
}
|
|
1104
1199
|
),
|
|
1105
1200
|
open: isOpen,
|
|
1106
|
-
cta: /* @__PURE__ */ (0,
|
|
1107
|
-
|
|
1201
|
+
cta: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1202
|
+
import_tds_react_native9.BottomSheet.CTA,
|
|
1108
1203
|
{
|
|
1109
1204
|
size: "large",
|
|
1110
1205
|
type: "dark",
|
|
@@ -1117,37 +1212,20 @@ function useMoreButtonBottomSheet() {
|
|
|
1117
1212
|
),
|
|
1118
1213
|
onClose: handleClose,
|
|
1119
1214
|
onExited: exit,
|
|
1120
|
-
children: /* @__PURE__ */ (0,
|
|
1121
|
-
itemList.map(
|
|
1122
|
-
|
|
1123
|
-
|
|
1215
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_tds_react_native9.List, { rowSeparator: "none", children: [
|
|
1216
|
+
itemList.map(
|
|
1217
|
+
(item) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1218
|
+
Menu,
|
|
1124
1219
|
{
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
color: globals.brandPrimaryColor,
|
|
1129
|
-
source: { uri: item.contactIconUrl },
|
|
1130
|
-
type: "background"
|
|
1131
|
-
}
|
|
1132
|
-
),
|
|
1133
|
-
contents: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1134
|
-
import_tds_react_native8.ListRow.Texts,
|
|
1135
|
-
{
|
|
1136
|
-
type: "1RowTypeA",
|
|
1137
|
-
top: item.contactItemName,
|
|
1138
|
-
topProps: { color: adaptive.grey700 }
|
|
1139
|
-
}
|
|
1140
|
-
),
|
|
1141
|
-
verticalPadding: "extraSmall",
|
|
1142
|
-
onPress: () => {
|
|
1143
|
-
logging.menuClick({ title: item.contactItemName });
|
|
1144
|
-
(0, import_react_native18.openURL)(item.contactUri);
|
|
1145
|
-
}
|
|
1220
|
+
title: item.contactItemName,
|
|
1221
|
+
iconURL: item.contactIconUrl,
|
|
1222
|
+
onPress: () => (0, import_react_native20.openURL)(item.contactUri)
|
|
1146
1223
|
},
|
|
1147
1224
|
item.contactItemName
|
|
1148
|
-
)
|
|
1149
|
-
|
|
1150
|
-
isShareListMenuSupported && /* @__PURE__ */ (0,
|
|
1225
|
+
)
|
|
1226
|
+
),
|
|
1227
|
+
isShareListMenuSupported && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AppShareListMenu, {}),
|
|
1228
|
+
isPermissionsMenuSupported && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(PermissionsMenu, {})
|
|
1151
1229
|
] })
|
|
1152
1230
|
}
|
|
1153
1231
|
) });
|
|
@@ -1160,12 +1238,12 @@ function BottomSheetImpressionArea({ children }) {
|
|
|
1160
1238
|
(0, import_react16.useEffect)(() => {
|
|
1161
1239
|
logging.show();
|
|
1162
1240
|
}, [logging]);
|
|
1163
|
-
return /* @__PURE__ */ (0,
|
|
1241
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children });
|
|
1164
1242
|
}
|
|
1165
1243
|
|
|
1166
1244
|
// src/components/NavigationBar/common/NavigationBarImpressionArea.tsx
|
|
1167
1245
|
var import_react17 = require("react");
|
|
1168
|
-
var
|
|
1246
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1169
1247
|
function NavigationBarImpressionArea({
|
|
1170
1248
|
children,
|
|
1171
1249
|
withHomeButton
|
|
@@ -1178,11 +1256,11 @@ function NavigationBarImpressionArea({
|
|
|
1178
1256
|
hasLogged.current = true;
|
|
1179
1257
|
}
|
|
1180
1258
|
}, [logging, withHomeButton]);
|
|
1181
|
-
return /* @__PURE__ */ (0,
|
|
1259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children });
|
|
1182
1260
|
}
|
|
1183
1261
|
|
|
1184
1262
|
// src/components/NavigationBar/RNNavigationBar/Default.tsx
|
|
1185
|
-
var
|
|
1263
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1186
1264
|
function DefaultNavigationBar() {
|
|
1187
1265
|
const globals = getAppsInTossGlobals();
|
|
1188
1266
|
const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
|
|
@@ -1192,7 +1270,7 @@ function DefaultNavigationBar() {
|
|
|
1192
1270
|
const { navigationRightButton } = useNavigationBarContext();
|
|
1193
1271
|
const navigationEvent = useNavigationEvent();
|
|
1194
1272
|
useHardwareBackPress(navigationEvent.handleBack);
|
|
1195
|
-
return /* @__PURE__ */ (0,
|
|
1273
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1196
1274
|
import_private5.TopNavigation,
|
|
1197
1275
|
{
|
|
1198
1276
|
title: globals.brandDisplayName,
|
|
@@ -1203,17 +1281,18 @@ function DefaultNavigationBar() {
|
|
|
1203
1281
|
onPressClose: navigationEvent.handleCloseButtonClick,
|
|
1204
1282
|
withHome: withHomeButton,
|
|
1205
1283
|
fixedRightButton: navigationRightButton,
|
|
1206
|
-
|
|
1284
|
+
leftVisible: withBackButton,
|
|
1285
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_private5.NavigationLeft, { visible: withBackButton, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_private5.NavigationBackButton, { onPress: navigationEvent.handleBack, canGoBack: false }) })
|
|
1207
1286
|
}
|
|
1208
1287
|
) });
|
|
1209
1288
|
}
|
|
1210
1289
|
|
|
1211
1290
|
// src/components/NavigationBar/RNNavigationBar/Game.tsx
|
|
1212
1291
|
var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
|
|
1213
|
-
var
|
|
1292
|
+
var import_tds_react_native10 = require("@toss/tds-react-native");
|
|
1214
1293
|
var import_private6 = require("@toss/tds-react-native/private");
|
|
1215
|
-
var
|
|
1216
|
-
var
|
|
1294
|
+
var import_react_native21 = require("react-native");
|
|
1295
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1217
1296
|
function GameNavigationBar() {
|
|
1218
1297
|
const safeAreaTop = (0, import_private6.useSafeAreaTop)();
|
|
1219
1298
|
const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
|
|
@@ -1221,15 +1300,15 @@ function GameNavigationBar() {
|
|
|
1221
1300
|
const { navigationRightButton } = useNavigationBarContext();
|
|
1222
1301
|
const { right: safeAreaRight } = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
|
|
1223
1302
|
useHardwareBackPress(navigationEvent.handleBack);
|
|
1224
|
-
return /* @__PURE__ */ (0,
|
|
1225
|
-
/* @__PURE__ */ (0,
|
|
1226
|
-
/* @__PURE__ */ (0,
|
|
1227
|
-
|
|
1303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
1304
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_tds_react_native10.PageNavbar, { preference: { type: "none" } }),
|
|
1305
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1306
|
+
import_react_native21.View,
|
|
1228
1307
|
{
|
|
1229
1308
|
style: {
|
|
1230
1309
|
width: "100%",
|
|
1231
1310
|
// TODO: UI관련 스타일 설정은 TDS로 이관
|
|
1232
|
-
height:
|
|
1311
|
+
height: import_react_native21.Platform.OS === "ios" ? 44 : 54,
|
|
1233
1312
|
flexDirection: "row",
|
|
1234
1313
|
alignItems: "center",
|
|
1235
1314
|
justifyContent: "flex-end",
|
|
@@ -1239,7 +1318,7 @@ function GameNavigationBar() {
|
|
|
1239
1318
|
paddingRight: safeAreaRight + 10
|
|
1240
1319
|
},
|
|
1241
1320
|
pointerEvents: "box-none",
|
|
1242
|
-
children: /* @__PURE__ */ (0,
|
|
1321
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1243
1322
|
import_private6.NavigationRightContent,
|
|
1244
1323
|
{
|
|
1245
1324
|
fixedRightButton: navigationRightButton,
|
|
@@ -1266,83 +1345,83 @@ __reExport(bridge_entry_exports, require("@apps-in-toss/native-modules/constant-
|
|
|
1266
1345
|
__reExport(bridge_entry_exports, require("@apps-in-toss/native-modules/event-bridges"));
|
|
1267
1346
|
|
|
1268
1347
|
// src/components/RNAppContainer.tsx
|
|
1269
|
-
var
|
|
1348
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1270
1349
|
function RNAppContainer({ children }) {
|
|
1271
1350
|
const global2 = getAppsInTossGlobals();
|
|
1272
1351
|
switch (global2.appType) {
|
|
1273
1352
|
case "game":
|
|
1274
|
-
return /* @__PURE__ */ (0,
|
|
1353
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GameAppContainer, { children });
|
|
1275
1354
|
case "general":
|
|
1276
1355
|
default:
|
|
1277
|
-
return /* @__PURE__ */ (0,
|
|
1356
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GeneralAppContainer, { children });
|
|
1278
1357
|
}
|
|
1279
1358
|
}
|
|
1280
1359
|
function GameAppContainer({ children }) {
|
|
1281
1360
|
const [isEntryMessageExited, setIsEntryMessageExited] = (0, import_react18.useState)(false);
|
|
1282
1361
|
(0, import_react18.useEffect)(() => {
|
|
1283
|
-
if (
|
|
1284
|
-
(0,
|
|
1362
|
+
if (import_react_native22.Platform.OS === "ios") {
|
|
1363
|
+
(0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1285
1364
|
return () => {
|
|
1286
|
-
(0,
|
|
1365
|
+
(0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
1287
1366
|
};
|
|
1288
1367
|
}
|
|
1289
1368
|
return;
|
|
1290
1369
|
}, []);
|
|
1291
1370
|
(0, import_react18.useEffect)(() => {
|
|
1292
|
-
|
|
1371
|
+
import_native_modules13.appsInTossEvent.addEventListener("entryMessageExited", {
|
|
1293
1372
|
onEvent: () => {
|
|
1294
1373
|
setIsEntryMessageExited(true);
|
|
1295
1374
|
}
|
|
1296
1375
|
});
|
|
1297
1376
|
}, []);
|
|
1298
|
-
return /* @__PURE__ */ (0,
|
|
1299
|
-
/* @__PURE__ */ (0,
|
|
1300
|
-
(0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0,
|
|
1377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
1378
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RNNavigationBar.Game, {}),
|
|
1379
|
+
(0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GameInitializer, { isReadyForProfileUI: isEntryMessageExited, children }) : children
|
|
1301
1380
|
] });
|
|
1302
1381
|
}
|
|
1303
1382
|
function GeneralAppContainer({ children }) {
|
|
1304
|
-
return /* @__PURE__ */ (0,
|
|
1305
|
-
/* @__PURE__ */ (0,
|
|
1383
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
1384
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RNNavigationBar.Default, {}),
|
|
1306
1385
|
children
|
|
1307
1386
|
] });
|
|
1308
1387
|
}
|
|
1309
1388
|
|
|
1310
1389
|
// src/core/registerApp.tsx
|
|
1311
|
-
var
|
|
1390
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1312
1391
|
function AppsInTossContainer(Container, { children, ...initialProps }) {
|
|
1313
|
-
if (!(0,
|
|
1392
|
+
if (!(0, import_native_modules14.isMinVersionSupported)({
|
|
1314
1393
|
android: "5.220.0",
|
|
1315
1394
|
ios: "5.221.0"
|
|
1316
1395
|
})) {
|
|
1317
|
-
return /* @__PURE__ */ (0,
|
|
1318
|
-
/* @__PURE__ */ (0,
|
|
1319
|
-
/* @__PURE__ */ (0,
|
|
1320
|
-
/* @__PURE__ */ (0,
|
|
1396
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
1397
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.Entry, {}),
|
|
1398
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.System, { ...initialProps }),
|
|
1399
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppUpdate, {})
|
|
1321
1400
|
] });
|
|
1322
1401
|
}
|
|
1323
|
-
return /* @__PURE__ */ (0,
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
1325
|
-
/* @__PURE__ */ (0,
|
|
1326
|
-
/* @__PURE__ */ (0,
|
|
1327
|
-
/* @__PURE__ */ (0,
|
|
1402
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
1403
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.StayTime, {}),
|
|
1404
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.Entry, {}),
|
|
1405
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.System, { ...initialProps }),
|
|
1406
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tds_react_native11.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(TDSContainer, { ...initialProps, children }) }) })
|
|
1328
1407
|
] });
|
|
1329
1408
|
}
|
|
1330
1409
|
function TDSContainer({ children }) {
|
|
1331
1410
|
useAppsInTossBridge();
|
|
1332
|
-
return /* @__PURE__ */ (0,
|
|
1411
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children });
|
|
1333
1412
|
}
|
|
1334
1413
|
function registerApp(container, { context, analytics }) {
|
|
1335
1414
|
const appName = getAppName();
|
|
1336
|
-
const isRegistered =
|
|
1415
|
+
const isRegistered = import_react_native24.AppRegistry.getAppKeys().includes(appName);
|
|
1337
1416
|
if (!isRegistered) {
|
|
1338
1417
|
import_analytics.Analytics.init({
|
|
1339
|
-
logger: (params) => void (0,
|
|
1418
|
+
logger: (params) => void (0, import_native_modules14.eventLog)(params),
|
|
1340
1419
|
debug: analytics?.debug ?? __DEV__
|
|
1341
1420
|
});
|
|
1342
|
-
const App =
|
|
1421
|
+
const App = import_react_native23.Granite.registerApp(AppsInTossContainer.bind(null, container), {
|
|
1343
1422
|
appName,
|
|
1344
1423
|
context,
|
|
1345
|
-
setIosSwipeGestureEnabled:
|
|
1424
|
+
setIosSwipeGestureEnabled: import_native_modules14.setIosSwipeGestureEnabled,
|
|
1346
1425
|
router: {
|
|
1347
1426
|
screenContainer: AppsInTossScreenContainer,
|
|
1348
1427
|
defaultScreenOption: {
|
|
@@ -1356,7 +1435,7 @@ function registerApp(container, { context, analytics }) {
|
|
|
1356
1435
|
}
|
|
1357
1436
|
function AppsInTossScreenContainer({ children }) {
|
|
1358
1437
|
const isRNApp = getAppsInTossGlobals().webViewType == null;
|
|
1359
|
-
return /* @__PURE__ */ (0,
|
|
1438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(NavigationBarContextProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_analytics.Analytics.Screen, { children: isRNApp ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RNAppContainer, { children }) : children }) });
|
|
1360
1439
|
}
|
|
1361
1440
|
function getAppName() {
|
|
1362
1441
|
try {
|
|
@@ -1373,35 +1452,35 @@ var AppsInToss = {
|
|
|
1373
1452
|
};
|
|
1374
1453
|
|
|
1375
1454
|
// src/components/WebView.tsx
|
|
1376
|
-
var
|
|
1455
|
+
var import_native_modules19 = require("@apps-in-toss/native-modules");
|
|
1377
1456
|
var appsInTossAsyncBridges = __toESM(require("@apps-in-toss/native-modules/async-bridges"), 1);
|
|
1378
1457
|
var appsInTossConstantBridges = __toESM(require("@apps-in-toss/native-modules/constant-bridges"), 1);
|
|
1379
1458
|
var appsInTossEventBridges = __toESM(require("@apps-in-toss/native-modules/event-bridges"), 1);
|
|
1380
1459
|
var import_react_native_safe_area_context4 = require("@granite-js/native/react-native-safe-area-context");
|
|
1381
|
-
var
|
|
1382
|
-
var
|
|
1460
|
+
var import_react_native34 = require("@granite-js/react-native");
|
|
1461
|
+
var import_tds_react_native15 = require("@toss/tds-react-native");
|
|
1383
1462
|
var import_private9 = require("@toss/tds-react-native/private");
|
|
1384
1463
|
var import_react29 = require("react");
|
|
1385
|
-
var
|
|
1464
|
+
var import_react_native35 = require("react-native");
|
|
1386
1465
|
|
|
1387
1466
|
// src/components/GameWebView.tsx
|
|
1388
|
-
var
|
|
1467
|
+
var import_native_modules15 = require("@apps-in-toss/native-modules");
|
|
1389
1468
|
var import_react_native_webview = require("@granite-js/native/react-native-webview");
|
|
1390
1469
|
var import_react20 = require("react");
|
|
1391
|
-
var
|
|
1470
|
+
var import_react_native27 = require("react-native");
|
|
1392
1471
|
|
|
1393
1472
|
// src/components/NavigationBar/GameWebviewNavigationBar.tsx
|
|
1394
1473
|
var import_react_native_safe_area_context2 = require("@granite-js/native/react-native-safe-area-context");
|
|
1395
|
-
var
|
|
1396
|
-
var
|
|
1474
|
+
var import_react_native25 = require("@granite-js/react-native");
|
|
1475
|
+
var import_tds_react_native12 = require("@toss/tds-react-native");
|
|
1397
1476
|
var import_private7 = require("@toss/tds-react-native/private");
|
|
1398
1477
|
var import_es_hangul3 = require("es-hangul");
|
|
1399
1478
|
var import_react19 = require("react");
|
|
1400
|
-
var
|
|
1401
|
-
var
|
|
1479
|
+
var import_react_native26 = require("react-native");
|
|
1480
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1402
1481
|
function GameWebviewNavigationBar() {
|
|
1403
1482
|
const safeAreaTop = (0, import_private7.useSafeAreaTop)();
|
|
1404
|
-
const { openConfirm } = (0,
|
|
1483
|
+
const { openConfirm } = (0, import_tds_react_native12.useDialog)();
|
|
1405
1484
|
const { captureExitLog } = useCaptureExitLog();
|
|
1406
1485
|
const global2 = getAppsInTossGlobals();
|
|
1407
1486
|
const logging = useNavigationBarLogging();
|
|
@@ -1420,18 +1499,18 @@ function GameWebviewNavigationBar() {
|
|
|
1420
1499
|
logging.closePopupCtaClick(isConfirmed);
|
|
1421
1500
|
if (isConfirmed) {
|
|
1422
1501
|
captureExitLog(Date.now());
|
|
1423
|
-
(0,
|
|
1502
|
+
(0, import_react_native25.closeView)();
|
|
1424
1503
|
}
|
|
1425
1504
|
}, [captureExitLog, global2.brandDisplayName, logging, openConfirm]);
|
|
1426
|
-
return /* @__PURE__ */ (0,
|
|
1427
|
-
/* @__PURE__ */ (0,
|
|
1428
|
-
/* @__PURE__ */ (0,
|
|
1429
|
-
|
|
1505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
1506
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native12.PageNavbar, { preference: { type: "none" } }),
|
|
1507
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1508
|
+
import_react_native26.View,
|
|
1430
1509
|
{
|
|
1431
1510
|
style: {
|
|
1432
1511
|
width: "100%",
|
|
1433
1512
|
// TODO: UI관련 스타일 설정은 TDS로 이관
|
|
1434
|
-
height:
|
|
1513
|
+
height: import_react_native26.Platform.OS === "ios" ? 44 : 54,
|
|
1435
1514
|
flexDirection: "row",
|
|
1436
1515
|
alignItems: "center",
|
|
1437
1516
|
justifyContent: "flex-end",
|
|
@@ -1441,7 +1520,7 @@ function GameWebviewNavigationBar() {
|
|
|
1441
1520
|
paddingRight: safeAreaRight + 10
|
|
1442
1521
|
},
|
|
1443
1522
|
pointerEvents: "box-none",
|
|
1444
|
-
children: /* @__PURE__ */ (0,
|
|
1523
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1445
1524
|
import_private7.NavigationRightContent,
|
|
1446
1525
|
{
|
|
1447
1526
|
fixedRightButton: navigationRightButton,
|
|
@@ -1458,28 +1537,28 @@ function GameWebviewNavigationBar() {
|
|
|
1458
1537
|
}
|
|
1459
1538
|
|
|
1460
1539
|
// src/components/GameWebView.tsx
|
|
1461
|
-
var
|
|
1540
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1462
1541
|
var GameWebView = (0, import_react20.forwardRef)(function GameWebView2(props, ref) {
|
|
1463
1542
|
const [isEntryMessageExited, setIsEntryMessageExited] = (0, import_react20.useState)(false);
|
|
1464
1543
|
(0, import_react20.useEffect)(() => {
|
|
1465
|
-
if (
|
|
1466
|
-
(0,
|
|
1544
|
+
if (import_react_native27.Platform.OS === "ios") {
|
|
1545
|
+
(0, import_native_modules15.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1467
1546
|
return () => {
|
|
1468
|
-
(0,
|
|
1547
|
+
(0, import_native_modules15.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
1469
1548
|
};
|
|
1470
1549
|
}
|
|
1471
1550
|
return;
|
|
1472
1551
|
}, []);
|
|
1473
1552
|
(0, import_react20.useEffect)(() => {
|
|
1474
|
-
|
|
1553
|
+
import_native_modules15.appsInTossEvent.addEventListener("entryMessageExited", {
|
|
1475
1554
|
onEvent: () => {
|
|
1476
1555
|
setIsEntryMessageExited(true);
|
|
1477
1556
|
}
|
|
1478
1557
|
});
|
|
1479
1558
|
}, []);
|
|
1480
|
-
return /* @__PURE__ */ (0,
|
|
1481
|
-
/* @__PURE__ */ (0,
|
|
1482
|
-
(0,
|
|
1559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
|
|
1560
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameWebviewNavigationBar, {}),
|
|
1561
|
+
(0, import_native_modules15.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameInitializer, { isReadyForProfileUI: isEntryMessageExited, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props })
|
|
1483
1562
|
] });
|
|
1484
1563
|
});
|
|
1485
1564
|
|
|
@@ -1488,17 +1567,17 @@ var import_react_native_webview2 = require("@granite-js/native/react-native-webv
|
|
|
1488
1567
|
var import_react22 = require("react");
|
|
1489
1568
|
|
|
1490
1569
|
// src/components/NavigationBar/PartnerWebviewNavigationBar.tsx
|
|
1491
|
-
var
|
|
1492
|
-
var
|
|
1570
|
+
var import_react_native28 = require("@granite-js/react-native");
|
|
1571
|
+
var import_tds_react_native13 = require("@toss/tds-react-native");
|
|
1493
1572
|
var import_private8 = require("@toss/tds-react-native/private");
|
|
1494
1573
|
var import_es_hangul4 = require("es-hangul");
|
|
1495
1574
|
var import_react21 = require("react");
|
|
1496
|
-
var
|
|
1575
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1497
1576
|
function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
|
|
1498
1577
|
const globals = getAppsInTossGlobals();
|
|
1499
1578
|
const { captureExitLog } = useCaptureExitLog();
|
|
1500
1579
|
const logging = useNavigationBarLogging();
|
|
1501
|
-
const { openConfirm } = (0,
|
|
1580
|
+
const { openConfirm } = (0, import_tds_react_native13.useDialog)();
|
|
1502
1581
|
const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
|
|
1503
1582
|
const parsedNavigationBar = globals.navigationBar != null ? safeParseNavigationBar(globals.navigationBar) : null;
|
|
1504
1583
|
const withHomeButton = parsedNavigationBar?.withHomeButton ?? false;
|
|
@@ -1516,10 +1595,10 @@ function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
|
|
|
1516
1595
|
logging.closePopupCtaClick(isConfirmed);
|
|
1517
1596
|
if (isConfirmed) {
|
|
1518
1597
|
captureExitLog(Date.now());
|
|
1519
|
-
(0,
|
|
1598
|
+
(0, import_react_native28.closeView)();
|
|
1520
1599
|
}
|
|
1521
1600
|
}, [captureExitLog, globals.brandDisplayName, logging, openConfirm]);
|
|
1522
|
-
return /* @__PURE__ */ (0,
|
|
1601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1523
1602
|
import_private8.TopNavigation,
|
|
1524
1603
|
{
|
|
1525
1604
|
title: globals.brandDisplayName,
|
|
@@ -1530,20 +1609,34 @@ function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
|
|
|
1530
1609
|
onPressClose: handleClose,
|
|
1531
1610
|
withHome: withHomeButton,
|
|
1532
1611
|
fixedRightButton: navigationRightButton,
|
|
1533
|
-
|
|
1612
|
+
leftVisible: withBackButton,
|
|
1613
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_private8.NavigationLeft, { visible: withBackButton, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_private8.NavigationBackButton, { onPress: onBackButtonClick, canGoBack: false }) })
|
|
1534
1614
|
}
|
|
1535
1615
|
) });
|
|
1536
1616
|
}
|
|
1537
1617
|
|
|
1538
1618
|
// src/components/PartnerWebView.tsx
|
|
1539
|
-
var
|
|
1619
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1540
1620
|
var PartnerWebView = (0, import_react22.forwardRef)(function PartnerWebViewScreen({ onBackButtonClick, onHomeButtonClick, ...webViewProps }, ref) {
|
|
1541
|
-
return /* @__PURE__ */ (0,
|
|
1542
|
-
/* @__PURE__ */ (0,
|
|
1543
|
-
/* @__PURE__ */ (0,
|
|
1621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
1622
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PartnerWebviewNavigationBar, { onBackButtonClick, onHomeButtonClick }),
|
|
1623
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_native_webview2.WebView, { ref, ...webViewProps, style: { flex: 1 } })
|
|
1544
1624
|
] });
|
|
1545
1625
|
});
|
|
1546
1626
|
|
|
1627
|
+
// src/components/utils/url.ts
|
|
1628
|
+
function convertIntentURL(url) {
|
|
1629
|
+
if (url.protocol !== "intent:") {
|
|
1630
|
+
return null;
|
|
1631
|
+
}
|
|
1632
|
+
const components = url.hash.replace("#Intent;", "").split(";").map((component) => component.split("="));
|
|
1633
|
+
const scheme = components.find(([key]) => key === "scheme")?.[1];
|
|
1634
|
+
if (!scheme) {
|
|
1635
|
+
return null;
|
|
1636
|
+
}
|
|
1637
|
+
return `${scheme}://${url.hostname}${url.pathname}${url.search}`;
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1547
1640
|
// src/bridge-handler/useBridgeHandler.tsx
|
|
1548
1641
|
var import_react23 = require("react");
|
|
1549
1642
|
function serializeError(error) {
|
|
@@ -1719,8 +1812,8 @@ function useSafeAreaInsetsEmitter() {
|
|
|
1719
1812
|
}
|
|
1720
1813
|
|
|
1721
1814
|
// src/core/hooks/useWebBackHandler.tsx
|
|
1722
|
-
var
|
|
1723
|
-
var
|
|
1815
|
+
var import_react_native29 = require("@granite-js/react-native");
|
|
1816
|
+
var import_tds_react_native14 = require("@toss/tds-react-native");
|
|
1724
1817
|
var import_es_hangul5 = require("es-hangul");
|
|
1725
1818
|
var import_react26 = require("react");
|
|
1726
1819
|
|
|
@@ -1789,9 +1882,9 @@ function useWebBackHandler(webViewRef) {
|
|
|
1789
1882
|
hasBackEvent: hasWebBackEvent,
|
|
1790
1883
|
addEventListener: addWebBackEventListener,
|
|
1791
1884
|
removeEventListener: removeWebBackEventListener
|
|
1792
|
-
} = (0,
|
|
1885
|
+
} = (0, import_react_native29.useBackEventState)();
|
|
1793
1886
|
const logging = useNavigationBarLogging();
|
|
1794
|
-
const { openConfirm } = (0,
|
|
1887
|
+
const { openConfirm } = (0, import_tds_react_native14.useDialog)();
|
|
1795
1888
|
const global2 = getAppsInTossGlobals();
|
|
1796
1889
|
const addEventListener = (0, import_react26.useCallback)(
|
|
1797
1890
|
(handler) => {
|
|
@@ -1825,7 +1918,7 @@ function useWebBackHandler(webViewRef) {
|
|
|
1825
1918
|
logging.closePopupCtaClick(isConfirmed);
|
|
1826
1919
|
if (isConfirmed) {
|
|
1827
1920
|
captureExitLog(Date.now());
|
|
1828
|
-
(0,
|
|
1921
|
+
(0, import_react_native29.closeView)();
|
|
1829
1922
|
}
|
|
1830
1923
|
}
|
|
1831
1924
|
}, [
|
|
@@ -1868,8 +1961,8 @@ function mergeRefs(...refs) {
|
|
|
1868
1961
|
}
|
|
1869
1962
|
|
|
1870
1963
|
// src/hooks/useCreateUserAgent.ts
|
|
1871
|
-
var
|
|
1872
|
-
var
|
|
1964
|
+
var import_native_modules16 = require("@apps-in-toss/native-modules");
|
|
1965
|
+
var import_react_native30 = require("react-native");
|
|
1873
1966
|
var FontA11yCategory = {
|
|
1874
1967
|
Large: "Large",
|
|
1875
1968
|
xLarge: "xLarge",
|
|
@@ -2002,13 +2095,14 @@ function useCreateUserAgent({
|
|
|
2002
2095
|
safeArea,
|
|
2003
2096
|
safeAreaBottomTransparency
|
|
2004
2097
|
}) {
|
|
2005
|
-
const platform = (0,
|
|
2006
|
-
const appVersion = (0,
|
|
2007
|
-
const { fontScale } = (0,
|
|
2098
|
+
const platform = (0, import_native_modules16.getPlatformOS)();
|
|
2099
|
+
const appVersion = (0, import_native_modules16.getTossAppVersion)();
|
|
2100
|
+
const { fontScale } = (0, import_react_native30.useWindowDimensions)();
|
|
2008
2101
|
const platformString = platform === "ios" ? "iPhone" : "Android phone";
|
|
2009
2102
|
const fontA11y = mapFontScaleToCategory(fontScale, platform);
|
|
2010
2103
|
const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
|
|
2011
2104
|
return [
|
|
2105
|
+
"AppsInToss",
|
|
2012
2106
|
`TossApp/${appVersion}`,
|
|
2013
2107
|
batteryModePreference && `TossBatteryModePreference/${batteryModePreference}`,
|
|
2014
2108
|
colorPreference && `TossColorPreference/${colorPreference}`,
|
|
@@ -2024,17 +2118,17 @@ function useCreateUserAgent({
|
|
|
2024
2118
|
}
|
|
2025
2119
|
|
|
2026
2120
|
// src/hooks/useGeolocation.ts
|
|
2027
|
-
var
|
|
2028
|
-
var
|
|
2121
|
+
var import_native_modules17 = require("@apps-in-toss/native-modules");
|
|
2122
|
+
var import_react_native31 = require("@granite-js/react-native");
|
|
2029
2123
|
var import_react27 = require("react");
|
|
2030
2124
|
function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
2031
|
-
const isVisible = (0,
|
|
2125
|
+
const isVisible = (0, import_react_native31.useVisibility)();
|
|
2032
2126
|
const [location, setLocation] = (0, import_react27.useState)(null);
|
|
2033
2127
|
(0, import_react27.useEffect)(() => {
|
|
2034
2128
|
if (!isVisible) {
|
|
2035
2129
|
return;
|
|
2036
2130
|
}
|
|
2037
|
-
return (0,
|
|
2131
|
+
return (0, import_native_modules17.startUpdateLocation)({
|
|
2038
2132
|
options: {
|
|
2039
2133
|
accuracy,
|
|
2040
2134
|
distanceInterval,
|
|
@@ -2048,11 +2142,11 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
|
2048
2142
|
}
|
|
2049
2143
|
|
|
2050
2144
|
// src/hooks/useWaitForReturnNavigator.tsx
|
|
2051
|
-
var
|
|
2145
|
+
var import_react_native32 = require("@granite-js/react-native");
|
|
2052
2146
|
var import_react28 = require("react");
|
|
2053
2147
|
function useWaitForReturnNavigator() {
|
|
2054
2148
|
const callbacks = (0, import_react28.useRef)([]).current;
|
|
2055
|
-
const navigation = (0,
|
|
2149
|
+
const navigation = (0, import_react_native32.useNavigation)();
|
|
2056
2150
|
const startNavigating = (0, import_react28.useCallback)(
|
|
2057
2151
|
(route, params) => {
|
|
2058
2152
|
return new Promise((resolve) => {
|
|
@@ -2073,7 +2167,7 @@ function useWaitForReturnNavigator() {
|
|
|
2073
2167
|
},
|
|
2074
2168
|
[callbacks]
|
|
2075
2169
|
);
|
|
2076
|
-
(0,
|
|
2170
|
+
(0, import_react_native32.useVisibilityChange)(handleVisibilityChange);
|
|
2077
2171
|
return startNavigating;
|
|
2078
2172
|
}
|
|
2079
2173
|
|
|
@@ -2087,8 +2181,8 @@ function useTopNavigation() {
|
|
|
2087
2181
|
}
|
|
2088
2182
|
|
|
2089
2183
|
// src/utils/log.ts
|
|
2090
|
-
var
|
|
2091
|
-
var
|
|
2184
|
+
var import_native_modules18 = require("@apps-in-toss/native-modules");
|
|
2185
|
+
var import_react_native33 = require("@granite-js/react-native");
|
|
2092
2186
|
|
|
2093
2187
|
// src/utils/extractDateFromUUIDv7.ts
|
|
2094
2188
|
var extractDateFromUUIDv7 = (uuid) => {
|
|
@@ -2114,7 +2208,7 @@ var getGroupId = (url) => {
|
|
|
2114
2208
|
};
|
|
2115
2209
|
var getReferrer = () => {
|
|
2116
2210
|
try {
|
|
2117
|
-
const referrer = new URL((0,
|
|
2211
|
+
const referrer = new URL((0, import_react_native33.getSchemeUri)());
|
|
2118
2212
|
return referrer.searchParams.get("referrer");
|
|
2119
2213
|
} catch {
|
|
2120
2214
|
return "";
|
|
@@ -2132,21 +2226,21 @@ var trackScreen = (url) => {
|
|
|
2132
2226
|
deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
|
|
2133
2227
|
}
|
|
2134
2228
|
};
|
|
2135
|
-
return (0,
|
|
2229
|
+
return (0, import_native_modules18.eventLog)(log);
|
|
2136
2230
|
};
|
|
2137
2231
|
|
|
2138
2232
|
// src/components/WebView.tsx
|
|
2139
|
-
var
|
|
2233
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2140
2234
|
var operationalEnvironment = appsInTossConstantBridges.getOperationalEnvironment();
|
|
2141
2235
|
var TYPES = ["partner", "external", "game"];
|
|
2142
2236
|
var WEBVIEW_TYPES = {
|
|
2143
2237
|
partner: PartnerWebView,
|
|
2144
|
-
external:
|
|
2238
|
+
external: import_tds_react_native15.ExternalWebViewScreen,
|
|
2145
2239
|
game: GameWebView
|
|
2146
2240
|
};
|
|
2147
2241
|
function mergeSchemeQueryParamsInto(url) {
|
|
2148
2242
|
const baseUrl = new URL(url);
|
|
2149
|
-
const schemeUrl = new URL((0,
|
|
2243
|
+
const schemeUrl = new URL((0, import_react_native34.getSchemeUri)());
|
|
2150
2244
|
baseUrl.pathname = schemeUrl.pathname;
|
|
2151
2245
|
for (const [key, value] of schemeUrl.searchParams.entries()) {
|
|
2152
2246
|
baseUrl.searchParams.set(key, value);
|
|
@@ -2158,7 +2252,7 @@ function getWebViewUri(local) {
|
|
|
2158
2252
|
const devUrl = `http://${local.host}:${local.port}`;
|
|
2159
2253
|
return mergeSchemeQueryParamsInto(devUrl).toString();
|
|
2160
2254
|
}
|
|
2161
|
-
const { url: rawUrl } =
|
|
2255
|
+
const { url: rawUrl } = import_native_modules19.AppsInTossModule.getWebBundleURL({});
|
|
2162
2256
|
const url = mergeSchemeQueryParamsInto(rawUrl);
|
|
2163
2257
|
const deploymentId = env.getDeploymentId();
|
|
2164
2258
|
if (deploymentId) {
|
|
@@ -2184,18 +2278,17 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2184
2278
|
);
|
|
2185
2279
|
const handler = useBridgeHandler({
|
|
2186
2280
|
onMessage,
|
|
2187
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2188
2281
|
eventListenerMap: {
|
|
2189
2282
|
...appsInTossEventBridges,
|
|
2190
|
-
navigationAccessoryEvent: ({ onEvent, onError }) =>
|
|
2283
|
+
navigationAccessoryEvent: ({ onEvent, onError }) => import_tds_react_native15.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
|
|
2191
2284
|
backEvent: ({ onEvent }) => {
|
|
2192
2285
|
webBackHandler.addEventListener(onEvent);
|
|
2193
2286
|
return () => {
|
|
2194
2287
|
webBackHandler.removeEventListener(onEvent);
|
|
2195
2288
|
};
|
|
2196
2289
|
},
|
|
2197
|
-
entryMessageExited: ({ onEvent, onError }) =>
|
|
2198
|
-
updateLocationEvent: ({ onEvent, onError, options }) =>
|
|
2290
|
+
entryMessageExited: ({ onEvent, onError }) => import_native_modules19.appsInTossEvent.addEventListener("entryMessageExited", { onEvent, onError }),
|
|
2291
|
+
updateLocationEvent: ({ onEvent, onError, options }) => import_native_modules19.appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
|
|
2199
2292
|
safeAreaInsetsChange: ({ onEvent }) => {
|
|
2200
2293
|
safeAreaInsetsEmitter.on("safeAreaInsetsChange", onEvent);
|
|
2201
2294
|
return () => {
|
|
@@ -2203,18 +2296,18 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2203
2296
|
};
|
|
2204
2297
|
},
|
|
2205
2298
|
/** @internal */
|
|
2206
|
-
appBridgeCallbackEvent: ({ onEvent, onError, options }) =>
|
|
2299
|
+
appBridgeCallbackEvent: ({ onEvent, onError, options }) => import_native_modules19.appsInTossEvent.addEventListener("appBridgeCallbackEvent", { onEvent, onError, options }),
|
|
2207
2300
|
/** AdMob */
|
|
2208
|
-
loadAdMobInterstitialAd:
|
|
2209
|
-
showAdMobInterstitialAd:
|
|
2210
|
-
loadAdMobRewardedAd:
|
|
2211
|
-
showAdMobRewardedAd:
|
|
2301
|
+
loadAdMobInterstitialAd: import_native_modules19.GoogleAdMob.loadAdMobInterstitialAd,
|
|
2302
|
+
showAdMobInterstitialAd: import_native_modules19.GoogleAdMob.showAdMobInterstitialAd,
|
|
2303
|
+
loadAdMobRewardedAd: import_native_modules19.GoogleAdMob.loadAdMobRewardedAd,
|
|
2304
|
+
showAdMobRewardedAd: import_native_modules19.GoogleAdMob.showAdMobRewardedAd,
|
|
2212
2305
|
/** AdMobV2 */
|
|
2213
|
-
loadAppsInTossAdMob:
|
|
2214
|
-
showAppsInTossAdMob:
|
|
2306
|
+
loadAppsInTossAdMob: import_native_modules19.GoogleAdMob.loadAppsInTossAdMob,
|
|
2307
|
+
showAppsInTossAdMob: import_native_modules19.GoogleAdMob.showAppsInTossAdMob,
|
|
2215
2308
|
/** IAP */
|
|
2216
|
-
iapCreateOneTimePurchaseOrder:
|
|
2217
|
-
requestOneTimePurchase:
|
|
2309
|
+
iapCreateOneTimePurchaseOrder: import_native_modules19.IAP.createOneTimePurchaseOrder,
|
|
2310
|
+
requestOneTimePurchase: import_native_modules19.requestOneTimePurchase
|
|
2218
2311
|
},
|
|
2219
2312
|
constantHandlerMap: {
|
|
2220
2313
|
...appsInTossConstantBridges,
|
|
@@ -2224,13 +2317,13 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2224
2317
|
getSafeAreaRight: () => insets.right,
|
|
2225
2318
|
...Object.fromEntries(Object.entries(global2).map(([key, value]) => [key, () => value])),
|
|
2226
2319
|
/** AdMob */
|
|
2227
|
-
loadAdMobInterstitialAd_isSupported:
|
|
2228
|
-
showAdMobInterstitialAd_isSupported:
|
|
2229
|
-
loadAdMobRewardedAd_isSupported:
|
|
2230
|
-
showAdMobRewardedAd_isSupported:
|
|
2320
|
+
loadAdMobInterstitialAd_isSupported: import_native_modules19.GoogleAdMob.loadAdMobInterstitialAd.isSupported,
|
|
2321
|
+
showAdMobInterstitialAd_isSupported: import_native_modules19.GoogleAdMob.showAdMobInterstitialAd.isSupported,
|
|
2322
|
+
loadAdMobRewardedAd_isSupported: import_native_modules19.GoogleAdMob.loadAdMobRewardedAd.isSupported,
|
|
2323
|
+
showAdMobRewardedAd_isSupported: import_native_modules19.GoogleAdMob.showAdMobRewardedAd.isSupported,
|
|
2231
2324
|
/** AdMobV2 */
|
|
2232
|
-
loadAppsInTossAdMob_isSupported:
|
|
2233
|
-
showAppsInTossAdMob_isSupported:
|
|
2325
|
+
loadAppsInTossAdMob_isSupported: import_native_modules19.GoogleAdMob.loadAppsInTossAdMob.isSupported,
|
|
2326
|
+
showAppsInTossAdMob_isSupported: import_native_modules19.GoogleAdMob.showAppsInTossAdMob.isSupported,
|
|
2234
2327
|
/** env */
|
|
2235
2328
|
getDeploymentId: env.getDeploymentId
|
|
2236
2329
|
},
|
|
@@ -2253,17 +2346,17 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2253
2346
|
getCurrentLocation: appsInTossAsyncBridges.getCurrentLocation,
|
|
2254
2347
|
openCamera: appsInTossAsyncBridges.openCamera,
|
|
2255
2348
|
/** Storage */
|
|
2256
|
-
getStorageItem:
|
|
2257
|
-
setStorageItem:
|
|
2258
|
-
removeStorageItem:
|
|
2259
|
-
clearItems:
|
|
2349
|
+
getStorageItem: import_native_modules19.Storage.getItem,
|
|
2350
|
+
setStorageItem: import_native_modules19.Storage.setItem,
|
|
2351
|
+
removeStorageItem: import_native_modules19.Storage.removeItem,
|
|
2352
|
+
clearItems: import_native_modules19.Storage.clearItems,
|
|
2260
2353
|
/** IAP */
|
|
2261
|
-
iapGetProductItemList:
|
|
2262
|
-
iapCreateOneTimePurchaseOrder:
|
|
2263
|
-
processProductGrant:
|
|
2264
|
-
getPendingOrders:
|
|
2265
|
-
getCompletedOrRefundedOrders:
|
|
2266
|
-
completeProductGrant:
|
|
2354
|
+
iapGetProductItemList: import_native_modules19.IAP.getProductItemList,
|
|
2355
|
+
iapCreateOneTimePurchaseOrder: import_native_modules19.iapCreateOneTimePurchaseOrder,
|
|
2356
|
+
processProductGrant: import_native_modules19.processProductGrant,
|
|
2357
|
+
getPendingOrders: import_native_modules19.IAP.getPendingOrders,
|
|
2358
|
+
getCompletedOrRefundedOrders: import_native_modules19.IAP.getCompletedOrRefundedOrders,
|
|
2359
|
+
completeProductGrant: import_native_modules19.IAP.completeProductGrant
|
|
2267
2360
|
}
|
|
2268
2361
|
});
|
|
2269
2362
|
const headerPropForExternalWebView = (0, import_react29.useMemo)(() => {
|
|
@@ -2292,11 +2385,11 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2292
2385
|
webBackHandler.handleWebBack();
|
|
2293
2386
|
return true;
|
|
2294
2387
|
};
|
|
2295
|
-
|
|
2296
|
-
return () =>
|
|
2388
|
+
import_react_native35.BackHandler.addEventListener("hardwareBackPress", callback);
|
|
2389
|
+
return () => import_react_native35.BackHandler.removeEventListener("hardwareBackPress", callback);
|
|
2297
2390
|
}, [webBackHandler]);
|
|
2298
2391
|
const globalScripts = useGlobalScripts();
|
|
2299
|
-
return /* @__PURE__ */ (0,
|
|
2392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2300
2393
|
BaseWebView,
|
|
2301
2394
|
{
|
|
2302
2395
|
ref: refs,
|
|
@@ -2318,15 +2411,30 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
2318
2411
|
props.onNavigationStateChange?.(event);
|
|
2319
2412
|
webBackHandler.onNavigationStateChange(event);
|
|
2320
2413
|
},
|
|
2321
|
-
userAgent:
|
|
2414
|
+
userAgent: import_react_native35.Platform.OS === "ios" ? userAgent : void 0,
|
|
2322
2415
|
sharedCookiesEnabled: true,
|
|
2323
2416
|
webviewDebuggingEnabled: webViewDebuggingEnabled,
|
|
2324
2417
|
thirdPartyCookiesEnabled: true,
|
|
2325
2418
|
onMessage: handler.onMessage,
|
|
2326
2419
|
injectedJavaScript: globalScripts.afterLoad,
|
|
2327
2420
|
injectedJavaScriptBeforeContentLoaded: mergeScripts(handler.injectedJavaScript, globalScripts.beforeLoad),
|
|
2328
|
-
decelerationRate:
|
|
2329
|
-
allowsBackForwardNavigationGestures
|
|
2421
|
+
decelerationRate: import_react_native35.Platform.OS === "ios" ? 1 : void 0,
|
|
2422
|
+
allowsBackForwardNavigationGestures,
|
|
2423
|
+
onShouldStartLoadWithRequest: (event) => {
|
|
2424
|
+
try {
|
|
2425
|
+
const url = new URL(event.url);
|
|
2426
|
+
if (["https:", "http:"].includes(url.protocol)) {
|
|
2427
|
+
return true;
|
|
2428
|
+
} else {
|
|
2429
|
+
import_react_native35.Linking.openURL(convertIntentURL(url) ?? url.href);
|
|
2430
|
+
return false;
|
|
2431
|
+
}
|
|
2432
|
+
} catch (error) {
|
|
2433
|
+
console.error(error);
|
|
2434
|
+
return false;
|
|
2435
|
+
}
|
|
2436
|
+
},
|
|
2437
|
+
originWhitelist: ["https://*", "http://*", "intoss://*", "intoss-private://*", "servicetoss://*", "supertoss://*", "intent://*"]
|
|
2330
2438
|
}
|
|
2331
2439
|
);
|
|
2332
2440
|
}
|