@apps-in-toss/framework 0.0.0-dev.1752115036458 → 0.0.0-dev.1753241576118
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 +1174 -1082
- package/dist/index.d.cts +2142 -7
- package/dist/index.d.ts +2142 -7
- package/dist/index.js +1171 -1069
- package/dist/jest/index.cjs +2 -2
- package/dist/jest/index.d.cts +1 -1
- package/dist/jest/index.d.ts +1 -1
- package/dist/jest/index.js +1 -1
- package/package.json +27 -21
- package/src/async-bridges.ts +15 -0
- package/src/constant-bridges.ts +3 -0
- package/src/event-bridges.ts +1 -0
- package/dist/bridge-meta.d.ts +0 -1
- package/dist/bridge-meta.js +0 -158
- package/src/bridge-entry.ts +0 -4
package/dist/index.cjs
CHANGED
|
@@ -34,44 +34,34 @@ __export(src_exports, {
|
|
|
34
34
|
Accuracy: () => Accuracy2,
|
|
35
35
|
Analytics: () => Analytics2,
|
|
36
36
|
AppsInToss: () => AppsInToss,
|
|
37
|
-
AppsInTossModule: () => AppsInTossModule,
|
|
38
|
-
BedrockCoreModule: () => BedrockCoreModule,
|
|
39
|
-
BedrockModule: () => BedrockModule,
|
|
40
37
|
GoogleAdMob: () => GoogleAdMob,
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
IAP: () => IAP,
|
|
39
|
+
INTERNAL__onVisibilityChangedByTransparentServiceWeb: () => INTERNAL__onVisibilityChangedByTransparentServiceWeb,
|
|
43
40
|
Storage: () => Storage,
|
|
44
41
|
TossPay: () => TossPay,
|
|
45
42
|
WebView: () => WebView,
|
|
46
43
|
appLogin: () => appLogin,
|
|
47
44
|
appsInTossEvent: () => appsInTossEvent,
|
|
48
|
-
closeView: () => closeView,
|
|
49
45
|
env: () => env,
|
|
50
46
|
eventLog: () => eventLog,
|
|
51
47
|
fetchAlbumPhotos: () => fetchAlbumPhotos,
|
|
52
48
|
fetchContacts: () => fetchContacts,
|
|
53
|
-
generateHapticFeedback: () => generateHapticFeedback,
|
|
54
49
|
getClipboardText: () => getClipboardText,
|
|
55
50
|
getCurrentLocation: () => getCurrentLocation,
|
|
56
51
|
getDeviceId: () => getDeviceId,
|
|
57
|
-
|
|
58
|
-
getNetworkStatus: () => getNetworkStatus,
|
|
52
|
+
getGameCenterGameProfile: () => getGameCenterGameProfile,
|
|
59
53
|
getOperationalEnvironment: () => getOperationalEnvironment,
|
|
60
|
-
getPlatformOS: () => getPlatformOS,
|
|
61
|
-
getSchemeUri: () => getSchemeUri,
|
|
62
54
|
getTossAppVersion: () => getTossAppVersion,
|
|
63
55
|
getTossShareLink: () => getTossShareLink,
|
|
64
56
|
isMinVersionSupported: () => isMinVersionSupported,
|
|
65
57
|
openCamera: () => openCamera,
|
|
66
|
-
|
|
58
|
+
openGameCenterLeaderboard: () => openGameCenterLeaderboard,
|
|
67
59
|
saveBase64Data: () => saveBase64Data,
|
|
68
60
|
setClipboardText: () => setClipboardText,
|
|
69
61
|
setDeviceOrientation: () => setDeviceOrientation,
|
|
70
|
-
setIosSwipeGestureEnabled: () => setIosSwipeGestureEnabled,
|
|
71
|
-
setScreenAwakeMode: () => setScreenAwakeMode,
|
|
72
|
-
setSecureScreen: () => setSecureScreen,
|
|
73
|
-
share: () => share,
|
|
74
62
|
startUpdateLocation: () => startUpdateLocation,
|
|
63
|
+
submitGameCenterLeaderBoardScore: () => submitGameCenterLeaderBoardScore,
|
|
64
|
+
useCreateUserAgent: () => useCreateUserAgent,
|
|
75
65
|
useGeolocation: () => useGeolocation
|
|
76
66
|
});
|
|
77
67
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -79,30 +69,210 @@ var import_analytics2 = require("@apps-in-toss/analytics");
|
|
|
79
69
|
|
|
80
70
|
// src/core/registerApp.tsx
|
|
81
71
|
var import_analytics = require("@apps-in-toss/analytics");
|
|
82
|
-
var
|
|
83
|
-
var
|
|
72
|
+
var import_react_native6 = require("@toss-design-system/react-native");
|
|
73
|
+
var import_react_native_bedrock9 = require("react-native-bedrock");
|
|
84
74
|
|
|
85
|
-
//
|
|
86
|
-
var
|
|
87
|
-
var
|
|
88
|
-
var import_react_native3 = require("@granite-js/react-native");
|
|
89
|
-
var import_react_native4 = require("react-native");
|
|
90
|
-
var import_react_native5 = require("react-native");
|
|
91
|
-
var import_react_native6 = require("@granite-js/react-native");
|
|
75
|
+
// src/core/components/AppEvent.tsx
|
|
76
|
+
var import_react2 = require("react");
|
|
77
|
+
var import_react_native_bedrock2 = require("react-native-bedrock");
|
|
92
78
|
|
|
93
|
-
//
|
|
94
|
-
|
|
79
|
+
// src/env.ts
|
|
80
|
+
var env = {
|
|
81
|
+
getDeploymentId: () => __DEV__ ? "local" : global.__appsInToss?.deploymentId
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// src/native-modules/tossCore.ts
|
|
85
|
+
var import_react_native3 = require("react-native");
|
|
86
|
+
|
|
87
|
+
// src/native-modules/AppsInTossModule.ts
|
|
88
|
+
var import_react_native = require("react-native");
|
|
89
|
+
var AppsInTossModuleInstance = import_react_native.NativeModules.AppsInTossModule;
|
|
90
|
+
var AppsInTossModule = AppsInTossModuleInstance;
|
|
91
|
+
|
|
92
|
+
// src/native-modules/getOperationalEnvironment.ts
|
|
93
|
+
function getOperationalEnvironment() {
|
|
94
|
+
return AppsInTossModule.operationalEnvironment;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
//
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
var
|
|
102
|
-
var
|
|
103
|
-
var
|
|
104
|
-
|
|
105
|
-
|
|
97
|
+
// src/native-modules/isMinVersionSupported.ts
|
|
98
|
+
var import_react_native2 = require("react-native");
|
|
99
|
+
|
|
100
|
+
// src/utils/compareVersion.ts
|
|
101
|
+
var SEMVER_REGEX = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\\-]+(?:\.[\da-z\\-]+)*))?(?:\+[\da-z\\-]+(?:\.[\da-z\\-]+)*)?)?)?$/i;
|
|
102
|
+
var isWildcard = (val) => ["*", "x", "X"].includes(val);
|
|
103
|
+
var tryParse = (val) => {
|
|
104
|
+
const num = parseInt(val, 10);
|
|
105
|
+
return isNaN(num) ? val : num;
|
|
106
|
+
};
|
|
107
|
+
var coerceTypes = (a, b) => {
|
|
108
|
+
return typeof a === typeof b ? [a, b] : [String(a), String(b)];
|
|
109
|
+
};
|
|
110
|
+
var compareValues = (a, b) => {
|
|
111
|
+
if (isWildcard(a) || isWildcard(b)) {
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
const [aVal, bVal] = coerceTypes(tryParse(a), tryParse(b));
|
|
115
|
+
if (aVal > bVal) {
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
if (aVal < bVal) {
|
|
119
|
+
return -1;
|
|
120
|
+
}
|
|
121
|
+
return 0;
|
|
122
|
+
};
|
|
123
|
+
var parseVersion = (version) => {
|
|
124
|
+
if (typeof version !== "string") {
|
|
125
|
+
throw new TypeError("Invalid argument: expected a string");
|
|
126
|
+
}
|
|
127
|
+
const match = version.match(SEMVER_REGEX);
|
|
128
|
+
if (!match) {
|
|
129
|
+
throw new Error(`Invalid semver: '${version}'`);
|
|
130
|
+
}
|
|
131
|
+
const [, major, minor, patch, build, preRelease] = match;
|
|
132
|
+
return [major, minor, patch, build, preRelease];
|
|
133
|
+
};
|
|
134
|
+
var compareSegments = (a, b) => {
|
|
135
|
+
const maxLength = Math.max(a.length, b.length);
|
|
136
|
+
for (let i = 0; i < maxLength; i++) {
|
|
137
|
+
const segA = a[i] ?? "0";
|
|
138
|
+
const segB = b[i] ?? "0";
|
|
139
|
+
const result = compareValues(segA, segB);
|
|
140
|
+
if (result !== 0) {
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return 0;
|
|
145
|
+
};
|
|
146
|
+
var compareVersions = (v1, v2) => {
|
|
147
|
+
const seg1 = parseVersion(v1);
|
|
148
|
+
const seg2 = parseVersion(v2);
|
|
149
|
+
const preRelease1 = seg1.pop();
|
|
150
|
+
const preRelease2 = seg2.pop();
|
|
151
|
+
const mainCompare = compareSegments(seg1, seg2);
|
|
152
|
+
if (mainCompare !== 0) {
|
|
153
|
+
return mainCompare;
|
|
154
|
+
}
|
|
155
|
+
if (preRelease1 && preRelease2) {
|
|
156
|
+
return compareSegments(preRelease1.split("."), preRelease2.split("."));
|
|
157
|
+
}
|
|
158
|
+
if (preRelease1) {
|
|
159
|
+
return -1;
|
|
160
|
+
}
|
|
161
|
+
if (preRelease2) {
|
|
162
|
+
return 1;
|
|
163
|
+
}
|
|
164
|
+
return 0;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// src/native-modules/isMinVersionSupported.ts
|
|
168
|
+
function isMinVersionSupported(minVersions) {
|
|
169
|
+
const operationalEnvironment2 = AppsInTossModule.operationalEnvironment;
|
|
170
|
+
if (operationalEnvironment2 === "sandbox") {
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
const currentVersion = AppsInTossModule.tossAppVersion;
|
|
174
|
+
const isIOS = import_react_native2.Platform.OS === "ios";
|
|
175
|
+
const minVersion = isIOS ? minVersions.ios : minVersions.android;
|
|
176
|
+
if (minVersion === void 0) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
if (minVersion === "always") {
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
if (minVersion === "never") {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
return compareVersions(currentVersion, minVersion) >= 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// src/native-modules/tossCore.ts
|
|
189
|
+
var TossCoreModule = import_react_native3.NativeModules.TossCoreModule;
|
|
190
|
+
function tossCoreEventLog(params) {
|
|
191
|
+
const supported = isMinVersionSupported({ ios: "5.210.0", android: "5.210.0" });
|
|
192
|
+
const isSandbox = getOperationalEnvironment() === "sandbox";
|
|
193
|
+
if (!supported || isSandbox) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
TossCoreModule.eventLog({
|
|
197
|
+
params: {
|
|
198
|
+
log_name: params.log_name,
|
|
199
|
+
log_type: params.log_type,
|
|
200
|
+
params: params.params
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// src/core/hooks/useReferrer.ts
|
|
206
|
+
var import_react = require("react");
|
|
207
|
+
var import_react_native_bedrock = require("react-native-bedrock");
|
|
208
|
+
function useReferrer() {
|
|
209
|
+
return (0, import_react.useMemo)(() => {
|
|
210
|
+
try {
|
|
211
|
+
return new URL((0, import_react_native_bedrock.getSchemeUri)()).searchParams.get("referrer");
|
|
212
|
+
} catch {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
}, []);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// src/core/components/AppEvent.tsx
|
|
219
|
+
var ENTRY_APP_EVENT_SCHEMA_ID = 1562181;
|
|
220
|
+
function isPrivateScheme() {
|
|
221
|
+
try {
|
|
222
|
+
return new URL((0, import_react_native_bedrock2.getSchemeUri)()).protocol === "intoss-private:";
|
|
223
|
+
} catch {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function EntryAppEvent() {
|
|
228
|
+
const referrer = useReferrer() ?? "";
|
|
229
|
+
(0, import_react2.useEffect)(() => {
|
|
230
|
+
tossCoreEventLog({
|
|
231
|
+
log_name: "appsintoss_app_visit::impression__enter_appsintoss",
|
|
232
|
+
log_type: "info",
|
|
233
|
+
params: {
|
|
234
|
+
is_transform: true,
|
|
235
|
+
schema_id: ENTRY_APP_EVENT_SCHEMA_ID,
|
|
236
|
+
referrer,
|
|
237
|
+
deployment_id: env.getDeploymentId(),
|
|
238
|
+
app_name: import_react_native_bedrock2.Bedrock.appName,
|
|
239
|
+
is_private: isPrivateScheme()
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}, [referrer]);
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
function SystemAppEvent({ ...initialProps }) {
|
|
246
|
+
(0, import_react2.useEffect)(() => {
|
|
247
|
+
tossCoreEventLog({
|
|
248
|
+
log_name: "AppsInTossInitialProps",
|
|
249
|
+
log_type: "debug",
|
|
250
|
+
params: {
|
|
251
|
+
...initialProps,
|
|
252
|
+
schemeUri: (0, import_react_native_bedrock2.getSchemeUri)(),
|
|
253
|
+
deployment_id: env.getDeploymentId(),
|
|
254
|
+
app_name: import_react_native_bedrock2.Bedrock.appName,
|
|
255
|
+
is_private: isPrivateScheme()
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}, [initialProps]);
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
var AppEvent = {
|
|
262
|
+
Entry: EntryAppEvent,
|
|
263
|
+
System: SystemAppEvent
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// src/core/hooks/useAppsInTossBridge.ts
|
|
267
|
+
var import_react_native5 = require("@toss-design-system/react-native");
|
|
268
|
+
var import_react3 = require("react");
|
|
269
|
+
|
|
270
|
+
// src/native-event-emitter/appsInTossEvent.ts
|
|
271
|
+
var import_react_native_bedrock7 = require("react-native-bedrock");
|
|
272
|
+
|
|
273
|
+
// src/native-event-emitter/event-plugins/EntryMessageExitedEvent.ts
|
|
274
|
+
var import_react_native_bedrock3 = require("react-native-bedrock");
|
|
275
|
+
var EntryMessageExitedEvent = class extends import_react_native_bedrock3.BedrockEventDefinition {
|
|
106
276
|
name = "entryMessageExited";
|
|
107
277
|
remove() {
|
|
108
278
|
}
|
|
@@ -110,15 +280,21 @@ var EntryMessageExitedEvent = class extends import_react_native2.GraniteEventDef
|
|
|
110
280
|
listener(_) {
|
|
111
281
|
}
|
|
112
282
|
};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
var
|
|
283
|
+
|
|
284
|
+
// src/native-event-emitter/event-plugins/UpdateLocationEvent.ts
|
|
285
|
+
var import_react_native_bedrock4 = require("react-native-bedrock");
|
|
286
|
+
|
|
287
|
+
// src/native-modules/getPermission.ts
|
|
116
288
|
function getPermission(permission) {
|
|
117
289
|
return AppsInTossModule.getPermission(permission);
|
|
118
290
|
}
|
|
291
|
+
|
|
292
|
+
// src/native-modules/openPermissionDialog.ts
|
|
119
293
|
function openPermissionDialog(permission) {
|
|
120
294
|
return AppsInTossModule.openPermissionDialog(permission);
|
|
121
295
|
}
|
|
296
|
+
|
|
297
|
+
// src/native-modules/requestPermission.ts
|
|
122
298
|
async function requestPermission(permission) {
|
|
123
299
|
const permissionStatus = await getPermission(permission);
|
|
124
300
|
switch (permissionStatus) {
|
|
@@ -129,8 +305,13 @@ async function requestPermission(permission) {
|
|
|
129
305
|
return openPermissionDialog(permission);
|
|
130
306
|
}
|
|
131
307
|
}
|
|
132
|
-
|
|
133
|
-
|
|
308
|
+
|
|
309
|
+
// src/native-event-emitter/nativeEventEmitter.ts
|
|
310
|
+
var import_react_native4 = require("react-native");
|
|
311
|
+
var nativeEventEmitter = new import_react_native4.NativeEventEmitter(AppsInTossModuleInstance);
|
|
312
|
+
|
|
313
|
+
// src/native-event-emitter/event-plugins/UpdateLocationEvent.ts
|
|
314
|
+
var UpdateLocationEvent = class extends import_react_native_bedrock4.BedrockEventDefinition {
|
|
134
315
|
name = "updateLocationEvent";
|
|
135
316
|
subscriptionCount = 0;
|
|
136
317
|
ref = {
|
|
@@ -158,9 +339,16 @@ var UpdateLocationEvent = class extends import_react_native3.GraniteEventDefinit
|
|
|
158
339
|
}).catch(onError);
|
|
159
340
|
}
|
|
160
341
|
};
|
|
342
|
+
|
|
343
|
+
// src/native-event-emitter/internal/AppBridgeCallbackEvent.ts
|
|
344
|
+
var import_react_native_bedrock5 = require("react-native-bedrock");
|
|
345
|
+
|
|
346
|
+
// src/utils/generateUUID.ts
|
|
161
347
|
function generateUUID(placeholder) {
|
|
162
348
|
return placeholder ? (placeholder ^ Math.random() * 16 >> placeholder / 4).toString(16) : (String(1e7) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, generateUUID);
|
|
163
349
|
}
|
|
350
|
+
|
|
351
|
+
// src/native-event-emitter/internal/appBridge.ts
|
|
164
352
|
var INTERNAL__callbacks = /* @__PURE__ */ new Map();
|
|
165
353
|
function invokeAppBridgeCallback(id, ...args) {
|
|
166
354
|
const callback = INTERNAL__callbacks.get(id);
|
|
@@ -207,8 +395,10 @@ var INTERNAL__appBridgeHandler = {
|
|
|
207
395
|
unregisterCallback,
|
|
208
396
|
getCallbackIds
|
|
209
397
|
};
|
|
398
|
+
|
|
399
|
+
// src/native-event-emitter/internal/AppBridgeCallbackEvent.ts
|
|
210
400
|
var UNSAFE__nativeEventEmitter = nativeEventEmitter;
|
|
211
|
-
var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends
|
|
401
|
+
var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_native_bedrock5.BedrockEventDefinition {
|
|
212
402
|
static INTERNAL__appBridgeSubscription;
|
|
213
403
|
name = "appBridgeCallbackEvent";
|
|
214
404
|
constructor() {
|
|
@@ -236,204 +426,96 @@ var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_
|
|
|
236
426
|
}
|
|
237
427
|
}
|
|
238
428
|
};
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
return AppsInTossModule.operationalEnvironment;
|
|
249
|
-
}
|
|
250
|
-
var SEMVER_REGEX = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\\-]+(?:\.[\da-z\\-]+)*))?(?:\+[\da-z\\-]+(?:\.[\da-z\\-]+)*)?)?)?$/i;
|
|
251
|
-
var isWildcard = (val) => ["*", "x", "X"].includes(val);
|
|
252
|
-
var tryParse = (val) => {
|
|
253
|
-
const num = parseInt(val, 10);
|
|
254
|
-
return isNaN(num) ? val : num;
|
|
255
|
-
};
|
|
256
|
-
var coerceTypes = (a, b) => {
|
|
257
|
-
return typeof a === typeof b ? [a, b] : [String(a), String(b)];
|
|
258
|
-
};
|
|
259
|
-
var compareValues = (a, b) => {
|
|
260
|
-
if (isWildcard(a) || isWildcard(b)) {
|
|
261
|
-
return 0;
|
|
262
|
-
}
|
|
263
|
-
const [aVal, bVal] = coerceTypes(tryParse(a), tryParse(b));
|
|
264
|
-
if (aVal > bVal) {
|
|
265
|
-
return 1;
|
|
266
|
-
}
|
|
267
|
-
if (aVal < bVal) {
|
|
268
|
-
return -1;
|
|
429
|
+
|
|
430
|
+
// src/native-event-emitter/internal/VisibilityChangedByTransparentServiceWebEvent.ts
|
|
431
|
+
var import_react_native_bedrock6 = require("react-native-bedrock");
|
|
432
|
+
var VisibilityChangedByTransparentServiceWebEvent = class extends import_react_native_bedrock6.BedrockEventDefinition {
|
|
433
|
+
name = "onVisibilityChangedByTransparentServiceWeb";
|
|
434
|
+
subscription = null;
|
|
435
|
+
remove() {
|
|
436
|
+
this.subscription?.remove();
|
|
437
|
+
this.subscription = null;
|
|
269
438
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
439
|
+
listener(options, onEvent, onError) {
|
|
440
|
+
const subscription = nativeEventEmitter.addListener("visibilityChangedByTransparentServiceWeb", (params) => {
|
|
441
|
+
if (this.isVisibilityChangedByTransparentServiceWebResult(params)) {
|
|
442
|
+
if (params.callbackId === options.callbackId) {
|
|
443
|
+
onEvent(params.isVisible);
|
|
444
|
+
}
|
|
445
|
+
} else {
|
|
446
|
+
onError(new Error("Invalid visibility changed by transparent service web result"));
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
this.subscription = subscription;
|
|
275
450
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
throw new Error(`Invalid semver: '${version}'`);
|
|
451
|
+
isVisibilityChangedByTransparentServiceWebResult(params) {
|
|
452
|
+
return typeof params === "object" && typeof params.callbackId === "string" && typeof params.isVisible === "boolean";
|
|
279
453
|
}
|
|
280
|
-
const [, major, minor, patch, build, preRelease] = match;
|
|
281
|
-
return [major, minor, patch, build, preRelease];
|
|
282
454
|
};
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
455
|
+
|
|
456
|
+
// src/native-event-emitter/appsInTossEvent.ts
|
|
457
|
+
var appsInTossEvent = new import_react_native_bedrock7.BedrockEvent([
|
|
458
|
+
new UpdateLocationEvent(),
|
|
459
|
+
new EntryMessageExitedEvent(),
|
|
460
|
+
// Internal events
|
|
461
|
+
new AppBridgeCallbackEvent(),
|
|
462
|
+
new VisibilityChangedByTransparentServiceWebEvent()
|
|
463
|
+
]);
|
|
464
|
+
|
|
465
|
+
// src/core/utils/getAppsInTossGlobals.ts
|
|
466
|
+
function getAppsInTossGlobals() {
|
|
467
|
+
if (global.__appsInToss == null) {
|
|
468
|
+
throw new Error("invalid apps-in-toss globals");
|
|
292
469
|
}
|
|
293
|
-
return
|
|
294
|
-
};
|
|
295
|
-
var compareVersions = (v1, v2) => {
|
|
296
|
-
const seg1 = parseVersion(v1);
|
|
297
|
-
const seg2 = parseVersion(v2);
|
|
298
|
-
const preRelease1 = seg1.pop();
|
|
299
|
-
const preRelease2 = seg2.pop();
|
|
300
|
-
const mainCompare = compareSegments(seg1, seg2);
|
|
301
|
-
if (mainCompare !== 0) {
|
|
302
|
-
return mainCompare;
|
|
303
|
-
}
|
|
304
|
-
if (preRelease1 && preRelease2) {
|
|
305
|
-
return compareSegments(preRelease1.split("."), preRelease2.split("."));
|
|
306
|
-
}
|
|
307
|
-
if (preRelease1) {
|
|
308
|
-
return -1;
|
|
309
|
-
}
|
|
310
|
-
if (preRelease2) {
|
|
311
|
-
return 1;
|
|
312
|
-
}
|
|
313
|
-
return 0;
|
|
314
|
-
};
|
|
315
|
-
function isMinVersionSupported(minVersions) {
|
|
316
|
-
const operationalEnvironment2 = AppsInTossModule.operationalEnvironment;
|
|
317
|
-
if (operationalEnvironment2 === "sandbox") {
|
|
318
|
-
return true;
|
|
319
|
-
}
|
|
320
|
-
const currentVersion = AppsInTossModule.tossAppVersion;
|
|
321
|
-
const isIOS = import_react_native7.Platform.OS === "ios";
|
|
322
|
-
const minVersion = isIOS ? minVersions.ios : minVersions.android;
|
|
323
|
-
if (minVersion === void 0) {
|
|
324
|
-
return false;
|
|
325
|
-
}
|
|
326
|
-
if (minVersion === "always") {
|
|
327
|
-
return true;
|
|
328
|
-
}
|
|
329
|
-
if (minVersion === "never") {
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
return compareVersions(currentVersion, minVersion) >= 0;
|
|
333
|
-
}
|
|
334
|
-
function loadAdMobInterstitialAd(params) {
|
|
335
|
-
if (!loadAdMobInterstitialAd.isSupported()) {
|
|
336
|
-
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
337
|
-
return noop;
|
|
338
|
-
}
|
|
339
|
-
const { onEvent, onError, options } = params;
|
|
340
|
-
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobInterstitialAd", options, {
|
|
341
|
-
onAdClicked: () => {
|
|
342
|
-
onEvent({ type: "clicked" });
|
|
343
|
-
},
|
|
344
|
-
onAdDismissed: () => {
|
|
345
|
-
onEvent({ type: "dismissed" });
|
|
346
|
-
},
|
|
347
|
-
onAdFailedToShow: () => {
|
|
348
|
-
onEvent({ type: "failedToShow" });
|
|
349
|
-
},
|
|
350
|
-
onAdImpression: () => {
|
|
351
|
-
onEvent({ type: "impression" });
|
|
352
|
-
},
|
|
353
|
-
onAdShow: () => {
|
|
354
|
-
onEvent({ type: "show" });
|
|
355
|
-
},
|
|
356
|
-
onSuccess: (result) => onEvent({ type: "loaded", data: result }),
|
|
357
|
-
onError
|
|
358
|
-
});
|
|
359
|
-
return unregisterCallbacks;
|
|
360
|
-
}
|
|
361
|
-
function showAdMobInterstitialAd(params) {
|
|
362
|
-
if (!showAdMobInterstitialAd.isSupported()) {
|
|
363
|
-
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
364
|
-
return noop;
|
|
365
|
-
}
|
|
366
|
-
const { onEvent, onError, options } = params;
|
|
367
|
-
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobInterstitialAd", options, {
|
|
368
|
-
onSuccess: () => onEvent({ type: "requested" }),
|
|
369
|
-
onError
|
|
370
|
-
});
|
|
371
|
-
return unregisterCallbacks;
|
|
372
|
-
}
|
|
373
|
-
function loadAdMobRewardedAd(params) {
|
|
374
|
-
if (!loadAdMobRewardedAd.isSupported()) {
|
|
375
|
-
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
376
|
-
return noop;
|
|
377
|
-
}
|
|
378
|
-
const { onEvent, onError, options } = params;
|
|
379
|
-
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobRewardedAd", options, {
|
|
380
|
-
onAdClicked: () => {
|
|
381
|
-
onEvent({ type: "clicked" });
|
|
382
|
-
},
|
|
383
|
-
onAdDismissed: () => {
|
|
384
|
-
onEvent({ type: "dismissed" });
|
|
385
|
-
},
|
|
386
|
-
onAdFailedToShow: () => {
|
|
387
|
-
onEvent({ type: "failedToShow" });
|
|
388
|
-
},
|
|
389
|
-
onAdImpression: () => {
|
|
390
|
-
onEvent({ type: "impression" });
|
|
391
|
-
},
|
|
392
|
-
onAdShow: () => {
|
|
393
|
-
onEvent({ type: "show" });
|
|
394
|
-
},
|
|
395
|
-
onUserEarnedReward: () => {
|
|
396
|
-
onEvent({ type: "userEarnedReward" });
|
|
397
|
-
},
|
|
398
|
-
onSuccess: (result) => onEvent({ type: "loaded", data: result }),
|
|
399
|
-
onError
|
|
400
|
-
});
|
|
401
|
-
return unregisterCallbacks;
|
|
470
|
+
return global.__appsInToss;
|
|
402
471
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
}
|
|
408
|
-
const { onEvent, onError, options } = params;
|
|
409
|
-
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobRewardedAd", options, {
|
|
410
|
-
onSuccess: () => onEvent({ type: "requested" }),
|
|
411
|
-
onError
|
|
412
|
-
});
|
|
413
|
-
return unregisterCallbacks;
|
|
472
|
+
|
|
473
|
+
// src/core/utils/toIcon.ts
|
|
474
|
+
function toIcon(source) {
|
|
475
|
+
return source.startsWith("http") ? { source: { uri: source } } : { name: source };
|
|
414
476
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
477
|
+
|
|
478
|
+
// src/core/hooks/useAppsInTossBridge.ts
|
|
479
|
+
function useAppsInTossBridge() {
|
|
480
|
+
const controller = (0, import_react_native5.useBridge)();
|
|
481
|
+
const appsInTossGlobals2 = getAppsInTossGlobals();
|
|
482
|
+
(0, import_react3.useEffect)(() => {
|
|
483
|
+
const commonProps = {
|
|
484
|
+
serviceName: appsInTossGlobals2.brandDisplayName,
|
|
485
|
+
icon: toIcon(appsInTossGlobals2.brandIcon),
|
|
486
|
+
color: appsInTossGlobals2.brandPrimaryColor,
|
|
487
|
+
colorMode: appsInTossGlobals2.brandBridgeColorMode
|
|
488
|
+
};
|
|
489
|
+
controller.open({
|
|
490
|
+
...commonProps,
|
|
491
|
+
onExited: () => {
|
|
492
|
+
appsInTossEvent.emit("entryMessageExited", void 0);
|
|
493
|
+
}
|
|
427
494
|
});
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
loadAdMobInterstitialAd.isSupported = createIsSupported();
|
|
431
|
-
loadAdMobRewardedAd.isSupported = createIsSupported();
|
|
432
|
-
showAdMobInterstitialAd.isSupported = createIsSupported();
|
|
433
|
-
showAdMobRewardedAd.isSupported = createIsSupported();
|
|
434
|
-
async function checkoutPayment(options) {
|
|
435
|
-
return AppsInTossModule.checkoutPayment({ params: options });
|
|
495
|
+
}, []);
|
|
436
496
|
}
|
|
497
|
+
|
|
498
|
+
// src/async-bridges.ts
|
|
499
|
+
var async_bridges_exports = {};
|
|
500
|
+
__export(async_bridges_exports, {
|
|
501
|
+
appLogin: () => appLogin,
|
|
502
|
+
checkoutPayment: () => checkoutPayment,
|
|
503
|
+
eventLog: () => eventLog,
|
|
504
|
+
fetchAlbumPhotos: () => fetchAlbumPhotos,
|
|
505
|
+
fetchContacts: () => fetchContacts,
|
|
506
|
+
getClipboardText: () => getClipboardText,
|
|
507
|
+
getCurrentLocation: () => getCurrentLocation,
|
|
508
|
+
getGameCenterGameProfile: () => getGameCenterGameProfile,
|
|
509
|
+
getTossShareLink: () => getTossShareLink,
|
|
510
|
+
openCamera: () => openCamera,
|
|
511
|
+
openGameCenterLeaderboard: () => openGameCenterLeaderboard,
|
|
512
|
+
saveBase64Data: () => saveBase64Data,
|
|
513
|
+
setClipboardText: () => setClipboardText,
|
|
514
|
+
setDeviceOrientation: () => setDeviceOrientation,
|
|
515
|
+
submitGameCenterLeaderBoardScore: () => submitGameCenterLeaderBoardScore
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
// src/native-modules/setClipboardText.ts
|
|
437
519
|
async function setClipboardText(text) {
|
|
438
520
|
const permissionStatus = await requestPermission({ name: "clipboard", access: "write" });
|
|
439
521
|
if (permissionStatus === "denied") {
|
|
@@ -441,6 +523,8 @@ async function setClipboardText(text) {
|
|
|
441
523
|
}
|
|
442
524
|
return AppsInTossModule.setClipboardText({ text });
|
|
443
525
|
}
|
|
526
|
+
|
|
527
|
+
// src/native-modules/getClipboardText.ts
|
|
444
528
|
async function getClipboardText() {
|
|
445
529
|
const permissionStatus = await requestPermission({ name: "clipboard", access: "read" });
|
|
446
530
|
if (permissionStatus === "denied") {
|
|
@@ -448,18 +532,30 @@ async function getClipboardText() {
|
|
|
448
532
|
}
|
|
449
533
|
return AppsInTossModule.getClipboardText({});
|
|
450
534
|
}
|
|
451
|
-
|
|
535
|
+
|
|
536
|
+
// src/native-modules/fetchContacts.ts
|
|
537
|
+
async function fetchContacts({
|
|
538
|
+
size,
|
|
539
|
+
offset,
|
|
540
|
+
query
|
|
541
|
+
}) {
|
|
452
542
|
const permissionStatus = await requestPermission({ name: "contacts", access: "read" });
|
|
453
543
|
if (permissionStatus === "denied") {
|
|
454
544
|
throw new Error("\uC5F0\uB77D\uCC98 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
|
|
455
545
|
}
|
|
456
|
-
const contacts = await AppsInTossModule.fetchContacts(
|
|
546
|
+
const contacts = await AppsInTossModule.fetchContacts({
|
|
547
|
+
size,
|
|
548
|
+
offset,
|
|
549
|
+
query
|
|
550
|
+
});
|
|
457
551
|
return {
|
|
458
552
|
result: contacts.result,
|
|
459
553
|
nextOffset: contacts.nextOffset ?? null,
|
|
460
554
|
done: contacts.done
|
|
461
555
|
};
|
|
462
556
|
}
|
|
557
|
+
|
|
558
|
+
// src/native-modules/fetchAlbumPhotos.ts
|
|
463
559
|
var DEFAULT_MAX_COUNT = 10;
|
|
464
560
|
var DEFAULT_MAX_WIDTH = 1024;
|
|
465
561
|
async function fetchAlbumPhotos(options) {
|
|
@@ -474,6 +570,8 @@ async function fetchAlbumPhotos(options) {
|
|
|
474
570
|
});
|
|
475
571
|
return albumPhotos;
|
|
476
572
|
}
|
|
573
|
+
|
|
574
|
+
// src/native-modules/getCurrentLocation.ts
|
|
477
575
|
async function getCurrentLocation(options) {
|
|
478
576
|
const permissionStatus = await requestPermission({ name: "geolocation", access: "access" });
|
|
479
577
|
if (permissionStatus === "denied") {
|
|
@@ -482,6 +580,8 @@ async function getCurrentLocation(options) {
|
|
|
482
580
|
const position = await AppsInTossModule.getCurrentLocation(options);
|
|
483
581
|
return position;
|
|
484
582
|
}
|
|
583
|
+
|
|
584
|
+
// src/native-modules/openCamera.ts
|
|
485
585
|
async function openCamera(options) {
|
|
486
586
|
const permissionStatus = await requestPermission({ name: "camera", access: "access" });
|
|
487
587
|
if (permissionStatus === "denied") {
|
|
@@ -490,36 +590,18 @@ async function openCamera(options) {
|
|
|
490
590
|
const photo = await AppsInTossModule.openCamera({ base64: false, maxWidth: 1024, ...options });
|
|
491
591
|
return photo;
|
|
492
592
|
}
|
|
593
|
+
|
|
594
|
+
// src/native-modules/appLogin.ts
|
|
493
595
|
async function appLogin() {
|
|
494
596
|
return AppsInTossModule.appLogin({});
|
|
495
597
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
return AppsInTossModule.deviceId;
|
|
501
|
-
}
|
|
502
|
-
function getItem(key) {
|
|
503
|
-
return AppsInTossModule.getStorageItem({ key });
|
|
504
|
-
}
|
|
505
|
-
function setItem(key, value) {
|
|
506
|
-
return AppsInTossModule.setStorageItem({
|
|
507
|
-
key,
|
|
508
|
-
value
|
|
509
|
-
});
|
|
510
|
-
}
|
|
511
|
-
function removeItem(key) {
|
|
512
|
-
return AppsInTossModule.removeStorageItem({ key });
|
|
513
|
-
}
|
|
514
|
-
function clearItems() {
|
|
515
|
-
return AppsInTossModule.clearStorage({});
|
|
598
|
+
|
|
599
|
+
// src/native-modules/checkoutPayment.ts
|
|
600
|
+
async function checkoutPayment(options) {
|
|
601
|
+
return AppsInTossModule.checkoutPayment({ params: options });
|
|
516
602
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
setItem,
|
|
520
|
-
removeItem,
|
|
521
|
-
clearItems
|
|
522
|
-
};
|
|
603
|
+
|
|
604
|
+
// src/native-modules/eventLog.ts
|
|
523
605
|
function normalizeParams(params) {
|
|
524
606
|
return Object.fromEntries(
|
|
525
607
|
Object.entries(params).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)])
|
|
@@ -547,6 +629,8 @@ async function eventLog(params) {
|
|
|
547
629
|
params: normalizeParams(params.params)
|
|
548
630
|
});
|
|
549
631
|
}
|
|
632
|
+
|
|
633
|
+
// src/native-modules/getTossShareLink.ts
|
|
550
634
|
async function getTossShareLink(path) {
|
|
551
635
|
const { shareLink } = await AppsInTossModule.getTossShareLink({});
|
|
552
636
|
const shareUrl = new URL(shareLink);
|
|
@@ -554,6 +638,8 @@ async function getTossShareLink(path) {
|
|
|
554
638
|
shareUrl.searchParams.set("af_dp", path);
|
|
555
639
|
return shareUrl.toString();
|
|
556
640
|
}
|
|
641
|
+
|
|
642
|
+
// src/native-modules/setDeviceOrientation.ts
|
|
557
643
|
async function setDeviceOrientation(options) {
|
|
558
644
|
const isSupported = isMinVersionSupported({
|
|
559
645
|
android: "5.215.0",
|
|
@@ -564,6 +650,8 @@ async function setDeviceOrientation(options) {
|
|
|
564
650
|
}
|
|
565
651
|
return AppsInTossModule.setDeviceOrientation(options);
|
|
566
652
|
}
|
|
653
|
+
|
|
654
|
+
// src/native-modules/saveBase64Data.ts
|
|
567
655
|
async function saveBase64Data(params) {
|
|
568
656
|
const isSupported = isMinVersionSupported({
|
|
569
657
|
android: "5.218.0",
|
|
@@ -575,807 +663,616 @@ async function saveBase64Data(params) {
|
|
|
575
663
|
}
|
|
576
664
|
await AppsInTossModule.saveBase64Data(params);
|
|
577
665
|
}
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
var
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
loadAdMobRewardedAd,
|
|
585
|
-
showAdMobRewardedAd
|
|
666
|
+
|
|
667
|
+
// src/constant/game-center.ts
|
|
668
|
+
var GAME_PROFILE_WEBVIEW_URL = "https://service.toss.im/game-center/profile";
|
|
669
|
+
var GAME_CENTER_MIN_VERSION = {
|
|
670
|
+
android: "5.221.0",
|
|
671
|
+
ios: "5.221.0"
|
|
586
672
|
};
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
if (import_react_native9.Platform.OS === "android") {
|
|
594
|
-
return replaceUnderbarToHypen(locale);
|
|
673
|
+
|
|
674
|
+
// src/native-modules/getGameCenterGameProfile.ts
|
|
675
|
+
async function getGameCenterGameProfile() {
|
|
676
|
+
const isSupported = isMinVersionSupported(GAME_CENTER_MIN_VERSION);
|
|
677
|
+
if (!isSupported) {
|
|
678
|
+
return;
|
|
595
679
|
}
|
|
596
|
-
return
|
|
597
|
-
}
|
|
598
|
-
function replaceUnderbarToHypen(locale) {
|
|
599
|
-
return locale.replace(/_/g, "-");
|
|
680
|
+
return AppsInTossModule.getGameCenterGameProfile({});
|
|
600
681
|
}
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
function
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
async function share(message) {
|
|
608
|
-
BedrockModule.share(message);
|
|
609
|
-
}
|
|
610
|
-
function setSecureScreen(options) {
|
|
611
|
-
return BedrockModule.setSecureScreen(options);
|
|
612
|
-
}
|
|
613
|
-
async function setScreenAwakeMode(options) {
|
|
614
|
-
return BedrockModule.setScreenAwakeMode(options);
|
|
615
|
-
}
|
|
616
|
-
function getNetworkStatus() {
|
|
617
|
-
return BedrockModule.getNetworkStatus();
|
|
618
|
-
}
|
|
619
|
-
async function setIosSwipeGestureEnabled(options) {
|
|
620
|
-
if (BedrockModule.setIosSwipeGestureEnabled == null) {
|
|
682
|
+
|
|
683
|
+
// src/native-modules/openGameCenterLeaderboard.ts
|
|
684
|
+
var import_react_native_bedrock8 = require("react-native-bedrock");
|
|
685
|
+
async function openGameCenterLeaderboard() {
|
|
686
|
+
if (!isMinVersionSupported(GAME_CENTER_MIN_VERSION)) {
|
|
621
687
|
return;
|
|
622
688
|
}
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
return
|
|
689
|
+
const url = new URL("servicetoss://game-center/leaderboard?_navbar=hide");
|
|
690
|
+
url.searchParams.set("appName", getAppName());
|
|
691
|
+
url.searchParams.set("referrer", `appsintoss.${getAppName()}`);
|
|
692
|
+
return (0, import_react_native_bedrock8.openURL)(url.toString());
|
|
627
693
|
}
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
Accuracy3[Accuracy3["Lowest"] = 1] = "Lowest";
|
|
634
|
-
Accuracy3[Accuracy3["Low"] = 2] = "Low";
|
|
635
|
-
Accuracy3[Accuracy3["Balanced"] = 3] = "Balanced";
|
|
636
|
-
Accuracy3[Accuracy3["High"] = 4] = "High";
|
|
637
|
-
Accuracy3[Accuracy3["Highest"] = 5] = "Highest";
|
|
638
|
-
Accuracy3[Accuracy3["BestForNavigation"] = 6] = "BestForNavigation";
|
|
639
|
-
return Accuracy3;
|
|
640
|
-
})(Accuracy2 || {});
|
|
641
|
-
var TossCoreModule = import_react_native13.NativeModules.TossCoreModule;
|
|
642
|
-
function tossCoreEventLog(params) {
|
|
643
|
-
const supported = isMinVersionSupported({ ios: "5.210.0", android: "5.210.0" });
|
|
644
|
-
const isSandbox = getOperationalEnvironment() === "sandbox";
|
|
645
|
-
if (!supported || isSandbox) {
|
|
694
|
+
|
|
695
|
+
// src/native-modules/submitGameCenterLeaderBoardScore.ts
|
|
696
|
+
async function submitGameCenterLeaderBoardScore(params) {
|
|
697
|
+
const isSupported = isMinVersionSupported(GAME_CENTER_MIN_VERSION);
|
|
698
|
+
if (!isSupported) {
|
|
646
699
|
return;
|
|
647
700
|
}
|
|
648
|
-
|
|
649
|
-
params: {
|
|
650
|
-
log_name: params.log_name,
|
|
651
|
-
log_type: params.log_type,
|
|
652
|
-
params: params.params
|
|
653
|
-
}
|
|
654
|
-
});
|
|
701
|
+
return AppsInTossModule.submitGameCenterLeaderBoardScore(params);
|
|
655
702
|
}
|
|
656
|
-
var INTERNAL__module = {
|
|
657
|
-
tossCoreEventLog
|
|
658
|
-
};
|
|
659
703
|
|
|
660
|
-
// src/core/
|
|
661
|
-
var
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
};
|
|
668
|
-
|
|
669
|
-
// src/core/hooks/useReferrer.ts
|
|
670
|
-
var import_react_native14 = require("@granite-js/react-native");
|
|
671
|
-
var import_react = require("react");
|
|
672
|
-
function useReferrer() {
|
|
673
|
-
return (0, import_react.useMemo)(() => {
|
|
674
|
-
try {
|
|
675
|
-
return new URL((0, import_react_native14.getSchemeUri)()).searchParams.get("referrer");
|
|
676
|
-
} catch {
|
|
677
|
-
return null;
|
|
678
|
-
}
|
|
679
|
-
}, []);
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
// src/core/components/AppEvent.tsx
|
|
683
|
-
var ENTRY_APP_EVENT_SCHEMA_ID = 1562181;
|
|
684
|
-
function isPrivateScheme() {
|
|
685
|
-
try {
|
|
686
|
-
return new URL((0, import_react_native15.getSchemeUri)()).protocol === "intoss-private:";
|
|
687
|
-
} catch {
|
|
688
|
-
return false;
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
function EntryAppEvent() {
|
|
692
|
-
const referrer = useReferrer() ?? "";
|
|
693
|
-
(0, import_react2.useEffect)(() => {
|
|
694
|
-
INTERNAL__module.tossCoreEventLog({
|
|
695
|
-
log_name: "appsintoss_app_visit::impression__enter_appsintoss",
|
|
696
|
-
log_type: "info",
|
|
697
|
-
params: {
|
|
698
|
-
is_transform: true,
|
|
699
|
-
schema_id: ENTRY_APP_EVENT_SCHEMA_ID,
|
|
700
|
-
referrer,
|
|
701
|
-
deployment_id: env.getDeploymentId(),
|
|
702
|
-
app_name: import_react_native15.Granite.appName,
|
|
703
|
-
is_private: isPrivateScheme()
|
|
704
|
-
}
|
|
705
|
-
});
|
|
706
|
-
}, [referrer]);
|
|
707
|
-
return null;
|
|
708
|
-
}
|
|
709
|
-
function SystemAppEvent({ ...initialProps }) {
|
|
710
|
-
(0, import_react2.useEffect)(() => {
|
|
711
|
-
INTERNAL__module.tossCoreEventLog({
|
|
712
|
-
log_name: "AppsInTossInitialProps",
|
|
713
|
-
log_type: "debug",
|
|
714
|
-
params: {
|
|
715
|
-
...initialProps,
|
|
716
|
-
schemeUri: (0, import_react_native15.getSchemeUri)(),
|
|
717
|
-
deployment_id: env.getDeploymentId(),
|
|
718
|
-
app_name: import_react_native15.Granite.appName,
|
|
719
|
-
is_private: isPrivateScheme()
|
|
720
|
-
}
|
|
721
|
-
});
|
|
722
|
-
}, [initialProps]);
|
|
723
|
-
return null;
|
|
724
|
-
}
|
|
725
|
-
var AppEvent = {
|
|
726
|
-
Entry: EntryAppEvent,
|
|
727
|
-
System: SystemAppEvent
|
|
728
|
-
};
|
|
729
|
-
|
|
730
|
-
// src/core/hooks/useAppsInTossBridge.ts
|
|
731
|
-
var import_react_native16 = require("@toss-design-system/react-native");
|
|
732
|
-
var import_react3 = require("react");
|
|
733
|
-
|
|
734
|
-
// src/core/utils/getAppsInTossGlobals.ts
|
|
735
|
-
function getAppsInTossGlobals() {
|
|
736
|
-
if (global.__appsInToss == null) {
|
|
737
|
-
throw new Error("invalid apps-in-toss globals");
|
|
738
|
-
}
|
|
739
|
-
return global.__appsInToss;
|
|
704
|
+
// src/core/registerApp.tsx
|
|
705
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
706
|
+
function AppsInTossContainer(Container, { children, ...initialProps }) {
|
|
707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
708
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppEvent.Entry, {}),
|
|
709
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppEvent.System, { ...initialProps }),
|
|
710
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native6.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TDSContainer, { ...initialProps, children }) }) })
|
|
711
|
+
] });
|
|
740
712
|
}
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
return source.startsWith("http") ? { source: { uri: source } } : { name: source };
|
|
713
|
+
function TDSContainer({ children }) {
|
|
714
|
+
useAppsInTossBridge();
|
|
715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
745
716
|
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
controller.open({
|
|
759
|
-
...commonProps,
|
|
760
|
-
onExited: () => {
|
|
761
|
-
appsInTossEvent.emit("entryMessageExited", void 0);
|
|
717
|
+
function registerApp(container, { context, analytics }) {
|
|
718
|
+
import_analytics.Analytics.init({
|
|
719
|
+
logger: (params) => void eventLog(params),
|
|
720
|
+
debug: analytics?.debug ?? __DEV__
|
|
721
|
+
});
|
|
722
|
+
return import_react_native_bedrock9.Bedrock.registerApp(AppsInTossContainer.bind(null, container), {
|
|
723
|
+
appName: getAppName(),
|
|
724
|
+
context,
|
|
725
|
+
router: {
|
|
726
|
+
screenContainer: import_analytics.Analytics.Screen,
|
|
727
|
+
defaultScreenOption: {
|
|
728
|
+
statusBarStyle: "dark"
|
|
762
729
|
}
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/async-bridges.ts
|
|
768
|
-
var async_bridges_exports = {};
|
|
769
|
-
__export(async_bridges_exports, {
|
|
770
|
-
appLogin: () => appLogin2,
|
|
771
|
-
checkoutPayment: () => checkoutPayment2,
|
|
772
|
-
closeView: () => closeView2,
|
|
773
|
-
eventLog: () => eventLog2,
|
|
774
|
-
fetchAlbumPhotos: () => fetchAlbumPhotos2,
|
|
775
|
-
fetchContacts: () => fetchContacts2,
|
|
776
|
-
generateHapticFeedback: () => generateHapticFeedback2,
|
|
777
|
-
getClipboardText: () => getClipboardText2,
|
|
778
|
-
getCurrentLocation: () => getCurrentLocation2,
|
|
779
|
-
getNetworkStatus: () => getNetworkStatus2,
|
|
780
|
-
getTossShareLink: () => getTossShareLink2,
|
|
781
|
-
openCamera: () => openCamera2,
|
|
782
|
-
openURL: () => openURL2,
|
|
783
|
-
saveBase64Data: () => saveBase64Data2,
|
|
784
|
-
setClipboardText: () => setClipboardText2,
|
|
785
|
-
setDeviceOrientation: () => setDeviceOrientation2,
|
|
786
|
-
setIosSwipeGestureEnabled: () => setIosSwipeGestureEnabled2,
|
|
787
|
-
setScreenAwakeMode: () => setScreenAwakeMode2,
|
|
788
|
-
setSecureScreen: () => setSecureScreen2,
|
|
789
|
-
share: () => share2
|
|
790
|
-
});
|
|
791
|
-
|
|
792
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/BedrockModule.ts
|
|
793
|
-
var import_react_native17 = require("react-native");
|
|
794
|
-
var BedrockModule2 = import_react_native17.NativeModules.BedrockModule;
|
|
795
|
-
|
|
796
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/closeView.ts
|
|
797
|
-
async function closeView2() {
|
|
798
|
-
return BedrockModule2.closeView();
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/generateHapticFeedback/index.ts
|
|
802
|
-
function generateHapticFeedback2(options) {
|
|
803
|
-
return BedrockModule2.generateHapticFeedback(options);
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/share.ts
|
|
807
|
-
async function share2(message) {
|
|
808
|
-
BedrockModule2.share(message);
|
|
809
|
-
}
|
|
810
|
-
|
|
811
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/setSecureScreen.ts
|
|
812
|
-
function setSecureScreen2(options) {
|
|
813
|
-
return BedrockModule2.setSecureScreen(options);
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/setScreenAwakeMode.ts
|
|
817
|
-
async function setScreenAwakeMode2(options) {
|
|
818
|
-
return BedrockModule2.setScreenAwakeMode(options);
|
|
819
|
-
}
|
|
820
|
-
|
|
821
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getNetworkStatus/index.ts
|
|
822
|
-
function getNetworkStatus2() {
|
|
823
|
-
return BedrockModule2.getNetworkStatus();
|
|
730
|
+
}
|
|
731
|
+
});
|
|
824
732
|
}
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
733
|
+
function getAppName() {
|
|
734
|
+
try {
|
|
735
|
+
return global.__bedrock.app.name;
|
|
736
|
+
} catch (error) {
|
|
737
|
+
console.error("unexpected error occurred while getting app name");
|
|
738
|
+
throw error;
|
|
830
739
|
}
|
|
831
|
-
return BedrockModule2.setIosSwipeGestureEnabled(options);
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/openURL.ts
|
|
835
|
-
var import_react_native18 = require("react-native");
|
|
836
|
-
function openURL2(url) {
|
|
837
|
-
return import_react_native18.Linking.openURL(url);
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/AppsInTossModule.ts
|
|
841
|
-
var import_react_native19 = require("react-native");
|
|
842
|
-
var Module2 = import_react_native19.TurboModuleRegistry.getEnforcing("AppsInTossModule");
|
|
843
|
-
var AppsInTossModuleInstance2 = Module2;
|
|
844
|
-
var AppsInTossModule2 = Module2;
|
|
845
|
-
|
|
846
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getPermission.ts
|
|
847
|
-
function getPermission2(permission) {
|
|
848
|
-
return AppsInTossModule2.getPermission(permission);
|
|
849
740
|
}
|
|
850
741
|
|
|
851
|
-
//
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/requestPermission.ts
|
|
857
|
-
async function requestPermission2(permission) {
|
|
858
|
-
const permissionStatus = await getPermission2(permission);
|
|
859
|
-
switch (permissionStatus) {
|
|
860
|
-
case "allowed":
|
|
861
|
-
case "denied":
|
|
862
|
-
return permissionStatus;
|
|
863
|
-
default:
|
|
864
|
-
return openPermissionDialog2(permission);
|
|
865
|
-
}
|
|
866
|
-
}
|
|
742
|
+
// src/core/index.ts
|
|
743
|
+
var AppsInToss = {
|
|
744
|
+
registerApp
|
|
745
|
+
};
|
|
867
746
|
|
|
868
|
-
//
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
if (permissionStatus === "denied") {
|
|
872
|
-
throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC4F0\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
|
|
873
|
-
}
|
|
874
|
-
return AppsInTossModule2.setClipboardText({ text });
|
|
747
|
+
// src/native-event-emitter/startUpdateLocation.ts
|
|
748
|
+
function startUpdateLocation(eventParams) {
|
|
749
|
+
return appsInTossEvent.addEventListener("updateLocationEvent", eventParams);
|
|
875
750
|
}
|
|
876
751
|
|
|
877
|
-
// ../../.yarn/
|
|
878
|
-
|
|
879
|
-
const permissionStatus = await requestPermission2({ name: "clipboard", access: "read" });
|
|
880
|
-
if (permissionStatus === "denied") {
|
|
881
|
-
throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC77D\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
|
|
882
|
-
}
|
|
883
|
-
return AppsInTossModule2.getClipboardText({});
|
|
752
|
+
// ../../.yarn/cache/es-toolkit-npm-1.34.1-4cd6371dcb-aab6d07be3.zip/node_modules/es-toolkit/dist/function/noop.mjs
|
|
753
|
+
function noop() {
|
|
884
754
|
}
|
|
885
755
|
|
|
886
|
-
//
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
756
|
+
// src/native-modules/ads/googleAdMob.ts
|
|
757
|
+
function loadAdMobInterstitialAd(params) {
|
|
758
|
+
if (!loadAdMobInterstitialAd.isSupported()) {
|
|
759
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
760
|
+
return noop;
|
|
891
761
|
}
|
|
892
|
-
const
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
762
|
+
const { onEvent, onError, options } = params;
|
|
763
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobInterstitialAd", options, {
|
|
764
|
+
onAdClicked: () => {
|
|
765
|
+
onEvent({ type: "clicked" });
|
|
766
|
+
},
|
|
767
|
+
onAdDismissed: () => {
|
|
768
|
+
onEvent({ type: "dismissed" });
|
|
769
|
+
},
|
|
770
|
+
onAdFailedToShow: () => {
|
|
771
|
+
onEvent({ type: "failedToShow" });
|
|
772
|
+
},
|
|
773
|
+
onAdImpression: () => {
|
|
774
|
+
onEvent({ type: "impression" });
|
|
775
|
+
},
|
|
776
|
+
onAdShow: () => {
|
|
777
|
+
onEvent({ type: "show" });
|
|
778
|
+
},
|
|
779
|
+
onSuccess: (result) => onEvent({ type: "loaded", data: result }),
|
|
780
|
+
onError
|
|
781
|
+
});
|
|
782
|
+
return unregisterCallbacks;
|
|
898
783
|
}
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
async function fetchAlbumPhotos2(options) {
|
|
904
|
-
const permissionStatus = await requestPermission2({ name: "photos", access: "read" });
|
|
905
|
-
if (permissionStatus === "denied") {
|
|
906
|
-
throw new Error("\uC0AC\uC9C4\uCCA9 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
|
|
784
|
+
function showAdMobInterstitialAd(params) {
|
|
785
|
+
if (!showAdMobInterstitialAd.isSupported()) {
|
|
786
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
787
|
+
return noop;
|
|
907
788
|
}
|
|
908
|
-
const
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
789
|
+
const { onEvent, onError, options } = params;
|
|
790
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobInterstitialAd", options, {
|
|
791
|
+
onSuccess: () => onEvent({ type: "requested" }),
|
|
792
|
+
onError
|
|
912
793
|
});
|
|
913
|
-
return
|
|
794
|
+
return unregisterCallbacks;
|
|
914
795
|
}
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
if (permissionStatus === "denied") {
|
|
920
|
-
throw new Error("\uC704\uCE58 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
|
|
796
|
+
function loadAdMobRewardedAd(params) {
|
|
797
|
+
if (!loadAdMobRewardedAd.isSupported()) {
|
|
798
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
799
|
+
return noop;
|
|
921
800
|
}
|
|
922
|
-
const
|
|
923
|
-
|
|
801
|
+
const { onEvent, onError, options } = params;
|
|
802
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobRewardedAd", options, {
|
|
803
|
+
onAdClicked: () => {
|
|
804
|
+
onEvent({ type: "clicked" });
|
|
805
|
+
},
|
|
806
|
+
onAdDismissed: () => {
|
|
807
|
+
onEvent({ type: "dismissed" });
|
|
808
|
+
},
|
|
809
|
+
onAdFailedToShow: () => {
|
|
810
|
+
onEvent({ type: "failedToShow" });
|
|
811
|
+
},
|
|
812
|
+
onAdImpression: () => {
|
|
813
|
+
onEvent({ type: "impression" });
|
|
814
|
+
},
|
|
815
|
+
onAdShow: () => {
|
|
816
|
+
onEvent({ type: "show" });
|
|
817
|
+
},
|
|
818
|
+
onUserEarnedReward: () => {
|
|
819
|
+
onEvent({ type: "userEarnedReward" });
|
|
820
|
+
},
|
|
821
|
+
onSuccess: (result) => onEvent({ type: "loaded", data: result }),
|
|
822
|
+
onError
|
|
823
|
+
});
|
|
824
|
+
return unregisterCallbacks;
|
|
924
825
|
}
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
if (permissionStatus === "denied") {
|
|
930
|
-
throw new Error("\uCE74\uBA54\uB77C \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
|
|
826
|
+
function showAdMobRewardedAd(params) {
|
|
827
|
+
if (!showAdMobRewardedAd.isSupported()) {
|
|
828
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
|
|
829
|
+
return noop;
|
|
931
830
|
}
|
|
932
|
-
const
|
|
933
|
-
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
return AppsInTossModule2.appLogin({});
|
|
831
|
+
const { onEvent, onError, options } = params;
|
|
832
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobRewardedAd", options, {
|
|
833
|
+
onSuccess: () => onEvent({ type: "requested" }),
|
|
834
|
+
onError
|
|
835
|
+
});
|
|
836
|
+
return unregisterCallbacks;
|
|
939
837
|
}
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
var
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
const num = parseInt(val, 10);
|
|
949
|
-
return isNaN(num) ? val : num;
|
|
950
|
-
};
|
|
951
|
-
var coerceTypes2 = (a, b) => {
|
|
952
|
-
return typeof a === typeof b ? [a, b] : [String(a), String(b)];
|
|
953
|
-
};
|
|
954
|
-
var compareValues2 = (a, b) => {
|
|
955
|
-
if (isWildcard2(a) || isWildcard2(b)) {
|
|
956
|
-
return 0;
|
|
957
|
-
}
|
|
958
|
-
const [aVal, bVal] = coerceTypes2(tryParse2(a), tryParse2(b));
|
|
959
|
-
if (aVal > bVal) {
|
|
960
|
-
return 1;
|
|
961
|
-
}
|
|
962
|
-
if (aVal < bVal) {
|
|
963
|
-
return -1;
|
|
964
|
-
}
|
|
965
|
-
return 0;
|
|
966
|
-
};
|
|
967
|
-
var parseVersion2 = (version) => {
|
|
968
|
-
if (typeof version !== "string") {
|
|
969
|
-
throw new TypeError("Invalid argument: expected a string");
|
|
970
|
-
}
|
|
971
|
-
const match = version.match(SEMVER_REGEX2);
|
|
972
|
-
if (!match) {
|
|
973
|
-
throw new Error(`Invalid semver: '${version}'`);
|
|
974
|
-
}
|
|
975
|
-
const [, major, minor, patch, build, preRelease] = match;
|
|
976
|
-
return [major, minor, patch, build, preRelease];
|
|
977
|
-
};
|
|
978
|
-
var compareSegments2 = (a, b) => {
|
|
979
|
-
const maxLength = Math.max(a.length, b.length);
|
|
980
|
-
for (let i = 0; i < maxLength; i++) {
|
|
981
|
-
const segA = a[i] ?? "0";
|
|
982
|
-
const segB = b[i] ?? "0";
|
|
983
|
-
const result = compareValues2(segA, segB);
|
|
984
|
-
if (result !== 0) {
|
|
985
|
-
return result;
|
|
838
|
+
var ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION = "5.209.0";
|
|
839
|
+
var IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION = "5.209.0";
|
|
840
|
+
var UNSUPPORTED_ERROR_MESSAGE = "This feature is not supported in the current environment";
|
|
841
|
+
var ENVIRONMENT = getOperationalEnvironment();
|
|
842
|
+
function createIsSupported() {
|
|
843
|
+
return () => {
|
|
844
|
+
if (ENVIRONMENT !== "toss") {
|
|
845
|
+
return false;
|
|
986
846
|
}
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
const seg2 = parseVersion2(v2);
|
|
993
|
-
const preRelease1 = seg1.pop();
|
|
994
|
-
const preRelease2 = seg2.pop();
|
|
995
|
-
const mainCompare = compareSegments2(seg1, seg2);
|
|
996
|
-
if (mainCompare !== 0) {
|
|
997
|
-
return mainCompare;
|
|
998
|
-
}
|
|
999
|
-
if (preRelease1 && preRelease2) {
|
|
1000
|
-
return compareSegments2(preRelease1.split("."), preRelease2.split("."));
|
|
1001
|
-
}
|
|
1002
|
-
if (preRelease1) {
|
|
1003
|
-
return -1;
|
|
1004
|
-
}
|
|
1005
|
-
if (preRelease2) {
|
|
1006
|
-
return 1;
|
|
1007
|
-
}
|
|
1008
|
-
return 0;
|
|
1009
|
-
};
|
|
1010
|
-
|
|
1011
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/isMinVersionSupported.ts
|
|
1012
|
-
function isMinVersionSupported2(minVersions) {
|
|
1013
|
-
const operationalEnvironment2 = AppsInTossModule2.operationalEnvironment;
|
|
1014
|
-
if (operationalEnvironment2 === "sandbox") {
|
|
1015
|
-
return true;
|
|
1016
|
-
}
|
|
1017
|
-
const currentVersion = AppsInTossModule2.tossAppVersion;
|
|
1018
|
-
const isIOS = import_react_native20.Platform.OS === "ios";
|
|
1019
|
-
const minVersion = isIOS ? minVersions.ios : minVersions.android;
|
|
1020
|
-
if (minVersion === void 0) {
|
|
1021
|
-
return false;
|
|
1022
|
-
}
|
|
1023
|
-
if (minVersion === "always") {
|
|
1024
|
-
return true;
|
|
1025
|
-
}
|
|
1026
|
-
if (minVersion === "never") {
|
|
1027
|
-
return false;
|
|
1028
|
-
}
|
|
1029
|
-
return compareVersions2(currentVersion, minVersion) >= 0;
|
|
847
|
+
return isMinVersionSupported({
|
|
848
|
+
android: ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION,
|
|
849
|
+
ios: IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION
|
|
850
|
+
});
|
|
851
|
+
};
|
|
1030
852
|
}
|
|
853
|
+
loadAdMobInterstitialAd.isSupported = createIsSupported();
|
|
854
|
+
loadAdMobRewardedAd.isSupported = createIsSupported();
|
|
855
|
+
showAdMobInterstitialAd.isSupported = createIsSupported();
|
|
856
|
+
showAdMobRewardedAd.isSupported = createIsSupported();
|
|
1031
857
|
|
|
1032
|
-
//
|
|
1033
|
-
function
|
|
1034
|
-
return
|
|
1035
|
-
Object.entries(params).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)])
|
|
1036
|
-
);
|
|
1037
|
-
}
|
|
1038
|
-
async function eventLog2(params) {
|
|
1039
|
-
if (AppsInTossModule2.operationalEnvironment === "sandbox") {
|
|
1040
|
-
console.log("[eventLogDebug]", {
|
|
1041
|
-
log_name: params.log_name,
|
|
1042
|
-
log_type: params.log_type,
|
|
1043
|
-
params: normalizeParams2(params.params)
|
|
1044
|
-
});
|
|
1045
|
-
return;
|
|
1046
|
-
}
|
|
1047
|
-
const isSupported = isMinVersionSupported2({
|
|
1048
|
-
android: "5.208.0",
|
|
1049
|
-
ios: "5.208.0"
|
|
1050
|
-
});
|
|
1051
|
-
if (!isSupported) {
|
|
1052
|
-
return;
|
|
1053
|
-
}
|
|
1054
|
-
return AppsInTossModule2.eventLog({
|
|
1055
|
-
log_name: params.log_name,
|
|
1056
|
-
log_type: params.log_type,
|
|
1057
|
-
params: normalizeParams2(params.params)
|
|
1058
|
-
});
|
|
858
|
+
// src/native-modules/getDeviceId.ts
|
|
859
|
+
function getDeviceId() {
|
|
860
|
+
return AppsInTossModule.deviceId;
|
|
1059
861
|
}
|
|
1060
862
|
|
|
1061
|
-
//
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
const shareUrl = new URL(shareLink);
|
|
1065
|
-
shareUrl.searchParams.set("deep_link_value", path);
|
|
1066
|
-
shareUrl.searchParams.set("af_dp", path);
|
|
1067
|
-
return shareUrl.toString();
|
|
863
|
+
// src/native-modules/getTossAppVersion.ts
|
|
864
|
+
function getTossAppVersion() {
|
|
865
|
+
return AppsInTossModule.tossAppVersion;
|
|
1068
866
|
}
|
|
1069
867
|
|
|
1070
|
-
//
|
|
1071
|
-
async function
|
|
1072
|
-
const isSupported =
|
|
1073
|
-
android: "5.
|
|
1074
|
-
ios: "5.
|
|
868
|
+
// src/native-modules/iap.ts
|
|
869
|
+
async function createOneTimePurchaseOrder(params) {
|
|
870
|
+
const isSupported = isMinVersionSupported({
|
|
871
|
+
android: "5.219.0",
|
|
872
|
+
ios: "5.219.0"
|
|
1075
873
|
});
|
|
1076
874
|
if (!isSupported) {
|
|
1077
875
|
return;
|
|
1078
876
|
}
|
|
1079
|
-
return
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1082
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/checkoutPayment.ts
|
|
1083
|
-
async function checkoutPayment2(options) {
|
|
1084
|
-
return AppsInTossModule2.checkoutPayment({ params: options });
|
|
877
|
+
return AppsInTossModule.iapCreateOneTimePurchaseOrder(params);
|
|
1085
878
|
}
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
android: "5.218.0",
|
|
1091
|
-
ios: "5.216.0"
|
|
879
|
+
async function getProductItemList() {
|
|
880
|
+
const isSupported = isMinVersionSupported({
|
|
881
|
+
android: "5.219.0",
|
|
882
|
+
ios: "5.219.0"
|
|
1092
883
|
});
|
|
1093
884
|
if (!isSupported) {
|
|
1094
|
-
console.warn("saveBase64Data is not supported in this app version");
|
|
1095
885
|
return;
|
|
1096
886
|
}
|
|
1097
|
-
|
|
1098
|
-
}
|
|
1099
|
-
|
|
1100
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/constant-bridges.ts
|
|
1101
|
-
var constant_bridges_exports = {};
|
|
1102
|
-
__export(constant_bridges_exports, {
|
|
1103
|
-
getDeviceId: () => getDeviceId2,
|
|
1104
|
-
getLocale: () => getLocale2,
|
|
1105
|
-
getOperationalEnvironment: () => getOperationalEnvironment2,
|
|
1106
|
-
getPlatformOS: () => getPlatformOS2,
|
|
1107
|
-
getSchemeUri: () => getSchemeUri4,
|
|
1108
|
-
getTossAppVersion: () => getTossAppVersion2
|
|
1109
|
-
});
|
|
1110
|
-
|
|
1111
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getLocale.ts
|
|
1112
|
-
var import_react_native21 = require("react-native");
|
|
1113
|
-
function getLocale2() {
|
|
1114
|
-
const locale = BedrockModule2?.DeviceInfo?.locale ?? "ko-KR";
|
|
1115
|
-
if (import_react_native21.Platform.OS === "android") {
|
|
1116
|
-
return replaceUnderbarToHypen2(locale);
|
|
1117
|
-
}
|
|
1118
|
-
return locale;
|
|
1119
|
-
}
|
|
1120
|
-
function replaceUnderbarToHypen2(locale) {
|
|
1121
|
-
return locale.replace(/_/g, "-");
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getSchemeUri.ts
|
|
1125
|
-
function getSchemeUri4() {
|
|
1126
|
-
return BedrockModule2.schemeUri;
|
|
887
|
+
return AppsInTossModule.iapGetProductItemList({});
|
|
1127
888
|
}
|
|
889
|
+
var IAP = {
|
|
890
|
+
createOneTimePurchaseOrder,
|
|
891
|
+
getProductItemList
|
|
892
|
+
};
|
|
1128
893
|
|
|
1129
|
-
//
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
return import_react_native22.Platform.OS;
|
|
894
|
+
// src/native-modules/storage.ts
|
|
895
|
+
function getItem(key) {
|
|
896
|
+
return AppsInTossModule.getStorageItem({ key });
|
|
1133
897
|
}
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
898
|
+
function setItem(key, value) {
|
|
899
|
+
return AppsInTossModule.setStorageItem({
|
|
900
|
+
key,
|
|
901
|
+
value
|
|
902
|
+
});
|
|
1138
903
|
}
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
function getTossAppVersion2() {
|
|
1142
|
-
return AppsInTossModule2.tossAppVersion;
|
|
904
|
+
function removeItem(key) {
|
|
905
|
+
return AppsInTossModule.removeStorageItem({ key });
|
|
1143
906
|
}
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
function getDeviceId2() {
|
|
1147
|
-
return AppsInTossModule2.deviceId;
|
|
907
|
+
function clearItems() {
|
|
908
|
+
return AppsInTossModule.clearStorage({});
|
|
1148
909
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
});
|
|
1155
|
-
|
|
1156
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/appsInTossEvent.ts
|
|
1157
|
-
var import_react_native27 = require("@granite-js/react-native");
|
|
1158
|
-
|
|
1159
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/event-plugins/EntryMessageExitedEvent.ts
|
|
1160
|
-
var import_react_native23 = require("@granite-js/react-native");
|
|
1161
|
-
var EntryMessageExitedEvent2 = class extends import_react_native23.GraniteEventDefinition {
|
|
1162
|
-
name = "entryMessageExited";
|
|
1163
|
-
remove() {
|
|
1164
|
-
}
|
|
1165
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1166
|
-
listener(_) {
|
|
1167
|
-
}
|
|
910
|
+
var Storage = {
|
|
911
|
+
getItem,
|
|
912
|
+
setItem,
|
|
913
|
+
removeItem,
|
|
914
|
+
clearItems
|
|
1168
915
|
};
|
|
1169
916
|
|
|
1170
|
-
//
|
|
1171
|
-
var
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
var
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
name = "updateLocationEvent";
|
|
1180
|
-
subscriptionCount = 0;
|
|
1181
|
-
ref = {
|
|
1182
|
-
remove: () => {
|
|
1183
|
-
}
|
|
1184
|
-
};
|
|
1185
|
-
remove() {
|
|
1186
|
-
if (--this.subscriptionCount === 0) {
|
|
1187
|
-
AppsInTossModuleInstance2.stopUpdateLocation({});
|
|
1188
|
-
}
|
|
1189
|
-
this.ref.remove();
|
|
1190
|
-
}
|
|
1191
|
-
listener(options, onEvent, onError) {
|
|
1192
|
-
requestPermission2({ name: "geolocation", access: "access" }).then((permissionStatus) => {
|
|
1193
|
-
if (permissionStatus === "denied") {
|
|
1194
|
-
onError(new Error("\uC704\uCE58 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694."));
|
|
1195
|
-
return;
|
|
1196
|
-
}
|
|
1197
|
-
void AppsInTossModuleInstance2.startUpdateLocation(options).catch(onError);
|
|
1198
|
-
const subscription = nativeEventEmitter2.addListener("updateLocation", onEvent);
|
|
1199
|
-
this.ref = {
|
|
1200
|
-
remove: () => subscription?.remove()
|
|
1201
|
-
};
|
|
1202
|
-
this.subscriptionCount++;
|
|
1203
|
-
}).catch(onError);
|
|
1204
|
-
}
|
|
917
|
+
// src/native-modules/index.ts
|
|
918
|
+
var TossPay = {
|
|
919
|
+
checkoutPayment
|
|
920
|
+
};
|
|
921
|
+
var GoogleAdMob = {
|
|
922
|
+
loadAdMobInterstitialAd,
|
|
923
|
+
showAdMobInterstitialAd,
|
|
924
|
+
loadAdMobRewardedAd,
|
|
925
|
+
showAdMobRewardedAd
|
|
1205
926
|
};
|
|
1206
927
|
|
|
1207
|
-
//
|
|
1208
|
-
var
|
|
928
|
+
// src/components/WebView.tsx
|
|
929
|
+
var import_react_native20 = require("@toss-design-system/react-native");
|
|
930
|
+
var import_private3 = require("@toss-design-system/react-native/private");
|
|
931
|
+
var import_react9 = require("react");
|
|
932
|
+
var import_react_native21 = require("react-native");
|
|
933
|
+
var import_react_native_bedrock16 = require("react-native-bedrock");
|
|
934
|
+
var bedrockAsyncBridges = __toESM(require("react-native-bedrock/async-bridges"), 1);
|
|
935
|
+
var bedrockConstantBridges = __toESM(require("react-native-bedrock/constant-bridges"), 1);
|
|
1209
936
|
|
|
1210
|
-
//
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
937
|
+
// src/components/GameWebView.tsx
|
|
938
|
+
var import_react_native_webview = require("@react-native-bedrock/native/react-native-webview");
|
|
939
|
+
var import_react_native17 = require("@toss-design-system/react-native");
|
|
940
|
+
var import_es_hangul2 = require("es-hangul");
|
|
941
|
+
var import_react6 = require("react");
|
|
942
|
+
var import_react_native18 = require("react-native");
|
|
943
|
+
var import_react_native_bedrock12 = require("react-native-bedrock");
|
|
1214
944
|
|
|
1215
|
-
//
|
|
1216
|
-
var
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
945
|
+
// src/components/GameProfile.tsx
|
|
946
|
+
var import_react_native10 = require("@toss-design-system/react-native");
|
|
947
|
+
var import_react5 = require("react");
|
|
948
|
+
var import_react_native11 = require("react-native");
|
|
949
|
+
|
|
950
|
+
// src/hooks/useGameCenterProfile.ts
|
|
951
|
+
var import_react_native9 = require("@toss-design-system/react-native");
|
|
952
|
+
var import_es_hangul = require("es-hangul");
|
|
953
|
+
var import_react4 = require("react");
|
|
954
|
+
var import_react_native_bedrock11 = require("react-native-bedrock");
|
|
955
|
+
|
|
956
|
+
// src/components/GameProfileToast.tsx
|
|
957
|
+
var import_react_native7 = require("@toss-design-system/react-native");
|
|
958
|
+
var import_private = require("@toss-design-system/react-native/private");
|
|
959
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
960
|
+
var useGameProfileToast = () => {
|
|
961
|
+
const overlay = (0, import_private.useOverlay)();
|
|
962
|
+
const openGameProfileToast = (nickname, profileImageUri) => {
|
|
963
|
+
return new Promise((resolve) => {
|
|
964
|
+
overlay.open(({ isOpen, close, exit }) => {
|
|
965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_private.ColorPreferenceProvider, { colorPreference: "dark", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_private.AdaptiveColorProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
966
|
+
import_react_native7.Toast,
|
|
967
|
+
{
|
|
968
|
+
open: isOpen,
|
|
969
|
+
onClose: () => {
|
|
970
|
+
resolve();
|
|
971
|
+
close();
|
|
972
|
+
},
|
|
973
|
+
onExited: exit,
|
|
974
|
+
position: "top",
|
|
975
|
+
text: `${nickname}\uB2D8 \uBC18\uAC00\uC6CC\uC694!`,
|
|
976
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
977
|
+
import_react_native7.Asset.Image,
|
|
978
|
+
{
|
|
979
|
+
style: { borderRadius: 64, overflow: "hidden" },
|
|
980
|
+
frameShape: import_react_native7.Asset.frameShape.CleanW32,
|
|
981
|
+
source: { uri: profileImageUri }
|
|
982
|
+
}
|
|
983
|
+
)
|
|
984
|
+
}
|
|
985
|
+
) }) });
|
|
986
|
+
});
|
|
987
|
+
});
|
|
1240
988
|
};
|
|
1241
|
-
return {
|
|
1242
|
-
}
|
|
1243
|
-
function registerCallback2(callback, name = "unnamed") {
|
|
1244
|
-
const uniqueId = generateUUID2();
|
|
1245
|
-
const callbackId = `${uniqueId}__${name}`;
|
|
1246
|
-
INTERNAL__callbacks2.set(callbackId, callback);
|
|
1247
|
-
return callbackId;
|
|
1248
|
-
}
|
|
1249
|
-
function unregisterCallback2(id) {
|
|
1250
|
-
INTERNAL__callbacks2.delete(id);
|
|
1251
|
-
}
|
|
1252
|
-
function getCallbackIds2() {
|
|
1253
|
-
return Array.from(INTERNAL__callbacks2.keys());
|
|
1254
|
-
}
|
|
1255
|
-
var INTERNAL__appBridgeHandler2 = {
|
|
1256
|
-
invokeAppBridgeCallback: invokeAppBridgeCallback2,
|
|
1257
|
-
invokeAppBridgeMethod: invokeAppBridgeMethod2,
|
|
1258
|
-
registerCallback: registerCallback2,
|
|
1259
|
-
unregisterCallback: unregisterCallback2,
|
|
1260
|
-
getCallbackIds: getCallbackIds2
|
|
989
|
+
return { openGameProfileToast };
|
|
1261
990
|
};
|
|
1262
991
|
|
|
1263
|
-
//
|
|
1264
|
-
var
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
name = "appBridgeCallbackEvent";
|
|
1268
|
-
constructor() {
|
|
1269
|
-
super();
|
|
1270
|
-
this.registerAppBridgeCallbackEventListener();
|
|
1271
|
-
}
|
|
1272
|
-
remove() {
|
|
1273
|
-
}
|
|
1274
|
-
listener() {
|
|
1275
|
-
}
|
|
1276
|
-
registerAppBridgeCallbackEventListener() {
|
|
1277
|
-
if (_AppBridgeCallbackEvent2.INTERNAL__appBridgeSubscription != null) {
|
|
1278
|
-
return;
|
|
1279
|
-
}
|
|
1280
|
-
_AppBridgeCallbackEvent2.INTERNAL__appBridgeSubscription = UNSAFE__nativeEventEmitter2.addListener(
|
|
1281
|
-
"appBridgeCallback",
|
|
1282
|
-
this.ensureInvokeAppBridgeCallback
|
|
1283
|
-
);
|
|
1284
|
-
}
|
|
1285
|
-
ensureInvokeAppBridgeCallback(result) {
|
|
1286
|
-
if (typeof result === "object" && typeof result.name === "string") {
|
|
1287
|
-
INTERNAL__appBridgeHandler2.invokeAppBridgeCallback(result.name, result.params);
|
|
1288
|
-
} else {
|
|
1289
|
-
console.warn("Invalid app bridge callback result:", result);
|
|
1290
|
-
}
|
|
1291
|
-
}
|
|
992
|
+
// src/utils/error.ts
|
|
993
|
+
var DEFAULT_ERROR = {
|
|
994
|
+
title: "\uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694",
|
|
995
|
+
description: "\uBB38\uC81C\uAC00 \uACC4\uC18D\uB418\uBA74 \uD1A0\uC2A4 \uACE0\uAC1D\uC13C\uD130(1599-4905)\uB85C \uBB38\uC758\uD574\uC8FC\uC138\uC694."
|
|
1292
996
|
};
|
|
1293
997
|
|
|
1294
|
-
//
|
|
1295
|
-
var
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
// ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/startUpdateLocation.ts
|
|
1302
|
-
function startUpdateLocation2(eventParams) {
|
|
1303
|
-
return appsInTossEvent2.addEventListener("updateLocationEvent", eventParams);
|
|
1304
|
-
}
|
|
998
|
+
// src/utils/market.ts
|
|
999
|
+
var import_react_native8 = require("react-native");
|
|
1000
|
+
var PLAYSTORE_LINK = "https://play.google.com/store/apps/details?id=viva.republica.toss";
|
|
1001
|
+
var APPSTORE_LINK = "https://itunes.apple.com/app/id839333328";
|
|
1002
|
+
var getMarketLink = () => {
|
|
1003
|
+
return import_react_native8.Platform.OS === "android" ? PLAYSTORE_LINK : APPSTORE_LINK;
|
|
1004
|
+
};
|
|
1305
1005
|
|
|
1306
|
-
// src/
|
|
1307
|
-
var
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1006
|
+
// src/utils/openTransparentWebView.ts
|
|
1007
|
+
var import_react_native_bedrock10 = require("react-native-bedrock");
|
|
1008
|
+
|
|
1009
|
+
// src/native-event-emitter/internal/onVisibilityChangedByTransparentServiceWeb.ts
|
|
1010
|
+
function onVisibilityChangedByTransparentServiceWeb(eventParams) {
|
|
1011
|
+
return appsInTossEvent.addEventListener("onVisibilityChangedByTransparentServiceWeb", eventParams);
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
// src/private.ts
|
|
1015
|
+
var INTERNAL__onVisibilityChangedByTransparentServiceWeb = onVisibilityChangedByTransparentServiceWeb;
|
|
1016
|
+
|
|
1017
|
+
// src/utils/openTransparentWebView.ts
|
|
1018
|
+
var openTransparentWebView = ({
|
|
1019
|
+
webUrl,
|
|
1020
|
+
cleanupWhenDismissed = true,
|
|
1021
|
+
onEvent,
|
|
1022
|
+
onError,
|
|
1023
|
+
callbackId = "fn",
|
|
1024
|
+
params
|
|
1025
|
+
}) => {
|
|
1026
|
+
const url = new URL("supertoss://transparent-service-web");
|
|
1027
|
+
url.searchParams.set("url", webUrl);
|
|
1028
|
+
url.searchParams.set("onVisibilityChangeCallback", callbackId);
|
|
1029
|
+
Object.entries(params ?? {}).forEach(([key, value]) => {
|
|
1030
|
+
url.searchParams.set(key, value);
|
|
1323
1031
|
});
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1032
|
+
const cleanup = INTERNAL__onVisibilityChangedByTransparentServiceWeb({
|
|
1033
|
+
options: { callbackId },
|
|
1034
|
+
onError: (error) => {
|
|
1035
|
+
onError(error);
|
|
1036
|
+
cleanup();
|
|
1037
|
+
},
|
|
1038
|
+
onEvent: (value) => {
|
|
1039
|
+
onEvent(value);
|
|
1040
|
+
if (cleanupWhenDismissed && value === true) {
|
|
1041
|
+
cleanup();
|
|
1331
1042
|
}
|
|
1332
1043
|
}
|
|
1333
1044
|
});
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
try {
|
|
1337
|
-
return global.__granite.app.name;
|
|
1338
|
-
} catch (error) {
|
|
1339
|
-
console.error("unexpected error occurred while getting app name");
|
|
1340
|
-
throw error;
|
|
1341
|
-
}
|
|
1342
|
-
}
|
|
1045
|
+
(0, import_react_native_bedrock10.openURL)(url.toString());
|
|
1046
|
+
};
|
|
1343
1047
|
|
|
1344
|
-
// src/
|
|
1345
|
-
var
|
|
1346
|
-
|
|
1048
|
+
// src/hooks/useGameCenterProfile.ts
|
|
1049
|
+
var useGameCenterProfile = (isReadyForProfileUI) => {
|
|
1050
|
+
const [profileData, setProfileData] = (0, import_react4.useState)(void 0);
|
|
1051
|
+
const [isProfileDataLoading, setIsProfileDataLoading] = (0, import_react4.useState)(true);
|
|
1052
|
+
const [isProfileDataRefetching, setIsProfileDataRefetching] = (0, import_react4.useState)(false);
|
|
1053
|
+
const shouldShowLoadingOverlay = isProfileDataLoading && isReadyForProfileUI;
|
|
1054
|
+
const shouldShowProfileNotFoundOverlay = profileData?.statusCode === "PROFILE_NOT_FOUND" && isReadyForProfileUI && !isProfileDataRefetching;
|
|
1055
|
+
const canShowBottomSheetOrToast = !isProfileDataLoading && isReadyForProfileUI;
|
|
1056
|
+
const [isWebviewLoading, setIsWebviewLoading] = (0, import_react4.useState)(false);
|
|
1057
|
+
const isCompletedProfileFlow = (0, import_react4.useRef)(false);
|
|
1058
|
+
const { openAlert, openConfirm } = (0, import_react_native9.useDialog)();
|
|
1059
|
+
const { openGameProfileToast } = useGameProfileToast();
|
|
1060
|
+
const openErrorAlert = (0, import_react4.useCallback)(async () => {
|
|
1061
|
+
await openAlert({
|
|
1062
|
+
title: DEFAULT_ERROR.title,
|
|
1063
|
+
description: DEFAULT_ERROR.description
|
|
1064
|
+
});
|
|
1065
|
+
(0, import_react_native_bedrock11.closeView)();
|
|
1066
|
+
}, [openAlert]);
|
|
1067
|
+
const openProfileWebview = (0, import_react4.useCallback)(() => {
|
|
1068
|
+
if (isWebviewLoading) {
|
|
1069
|
+
return;
|
|
1070
|
+
}
|
|
1071
|
+
setIsWebviewLoading(true);
|
|
1072
|
+
openTransparentWebView({
|
|
1073
|
+
webUrl: `${GAME_PROFILE_WEBVIEW_URL}?appName=${getAppName()}&referrer=appsintoss.${getAppName()}`,
|
|
1074
|
+
onEvent: async (isClosedTransparentWebView) => {
|
|
1075
|
+
if (isClosedTransparentWebView) {
|
|
1076
|
+
try {
|
|
1077
|
+
setIsWebviewLoading(false);
|
|
1078
|
+
setIsProfileDataRefetching(true);
|
|
1079
|
+
const data = await getGameCenterGameProfile();
|
|
1080
|
+
setProfileData(data);
|
|
1081
|
+
setIsProfileDataRefetching(false);
|
|
1082
|
+
if (data?.statusCode === "SUCCESS") {
|
|
1083
|
+
openGameProfileToast(data.nickname, data.profileImageUri);
|
|
1084
|
+
}
|
|
1085
|
+
} catch (_) {
|
|
1086
|
+
setIsProfileDataRefetching(false);
|
|
1087
|
+
openErrorAlert();
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
},
|
|
1091
|
+
onError: () => {
|
|
1092
|
+
openErrorAlert();
|
|
1093
|
+
}
|
|
1094
|
+
});
|
|
1095
|
+
}, [isWebviewLoading, openGameProfileToast, openErrorAlert]);
|
|
1096
|
+
const updateAppToSupportedMinVersion = (0, import_react4.useCallback)(async () => {
|
|
1097
|
+
const upddateConfirmDialogLabel = {
|
|
1098
|
+
title: `${(0, import_es_hangul.josa)(getAppsInTossGlobals().brandDisplayName, "\uC744/\uB97C")} \uD558\uB824\uBA74
|
|
1099
|
+
\uC571\uC744 \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694`,
|
|
1100
|
+
leftButton: "\uB2EB\uAE30",
|
|
1101
|
+
rightButton: "\uC5C5\uB370\uC774\uD2B8\uD558\uAE30"
|
|
1102
|
+
};
|
|
1103
|
+
const isConfirmed = await openConfirm({
|
|
1104
|
+
title: upddateConfirmDialogLabel.title,
|
|
1105
|
+
leftButton: upddateConfirmDialogLabel.leftButton,
|
|
1106
|
+
rightButton: upddateConfirmDialogLabel.rightButton,
|
|
1107
|
+
closeOnDimmerClick: true
|
|
1108
|
+
});
|
|
1109
|
+
if (!isConfirmed) {
|
|
1110
|
+
(0, import_react_native_bedrock11.closeView)();
|
|
1111
|
+
return;
|
|
1112
|
+
}
|
|
1113
|
+
const STORE_SCHEME = getMarketLink();
|
|
1114
|
+
(0, import_react_native_bedrock11.openURL)(`supertoss://web?url=${STORE_SCHEME}&external=browser`);
|
|
1115
|
+
}, [openConfirm]);
|
|
1116
|
+
return {
|
|
1117
|
+
profileData,
|
|
1118
|
+
isProfileDataLoading,
|
|
1119
|
+
isProfileDataRefetching,
|
|
1120
|
+
shouldShowLoadingOverlay,
|
|
1121
|
+
shouldShowProfileNotFoundOverlay,
|
|
1122
|
+
canShowBottomSheetOrToast,
|
|
1123
|
+
isCompletedProfileFlow,
|
|
1124
|
+
updateAppToSupportedMinVersion,
|
|
1125
|
+
setIsProfileDataLoading,
|
|
1126
|
+
openProfileWebview,
|
|
1127
|
+
setProfileData,
|
|
1128
|
+
openErrorAlert,
|
|
1129
|
+
openGameProfileToast
|
|
1130
|
+
};
|
|
1347
1131
|
};
|
|
1348
1132
|
|
|
1349
|
-
// src/
|
|
1350
|
-
var
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1133
|
+
// src/utils/zIndex.ts
|
|
1134
|
+
var Z_INDEX = {
|
|
1135
|
+
/* 게임 프로필을 위한 overlay
|
|
1136
|
+
*/
|
|
1137
|
+
PROFILE_OVERLAY: 9998,
|
|
1138
|
+
// 게임을 종료할 수 있는 X 버튼
|
|
1139
|
+
CLOSE_BUTTON: 9999
|
|
1140
|
+
};
|
|
1356
1141
|
|
|
1357
|
-
// src/components/
|
|
1358
|
-
var
|
|
1359
|
-
var
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1142
|
+
// src/components/GameProfile.tsx
|
|
1143
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1144
|
+
var GameProfile = ({ children, isReadyForProfileUI }) => {
|
|
1145
|
+
const {
|
|
1146
|
+
profileData,
|
|
1147
|
+
isProfileDataRefetching,
|
|
1148
|
+
shouldShowLoadingOverlay,
|
|
1149
|
+
shouldShowProfileNotFoundOverlay,
|
|
1150
|
+
canShowBottomSheetOrToast,
|
|
1151
|
+
isCompletedProfileFlow,
|
|
1152
|
+
openProfileWebview,
|
|
1153
|
+
updateAppToSupportedMinVersion,
|
|
1154
|
+
setIsProfileDataLoading,
|
|
1155
|
+
setProfileData,
|
|
1156
|
+
openErrorAlert,
|
|
1157
|
+
openGameProfileToast
|
|
1158
|
+
} = useGameCenterProfile(isReadyForProfileUI);
|
|
1159
|
+
(0, import_react5.useEffect)(() => {
|
|
1160
|
+
try {
|
|
1161
|
+
const getProfileData = async () => {
|
|
1162
|
+
const data = await getGameCenterGameProfile();
|
|
1163
|
+
setProfileData(data);
|
|
1164
|
+
setIsProfileDataLoading(false);
|
|
1165
|
+
};
|
|
1166
|
+
getProfileData();
|
|
1167
|
+
} catch (_) {
|
|
1168
|
+
openErrorAlert();
|
|
1169
|
+
setIsProfileDataLoading(false);
|
|
1170
|
+
}
|
|
1171
|
+
}, []);
|
|
1172
|
+
(0, import_react5.useEffect)(() => {
|
|
1173
|
+
const handleGameProfileFlow = async () => {
|
|
1174
|
+
if (!canShowBottomSheetOrToast) {
|
|
1175
|
+
return;
|
|
1176
|
+
}
|
|
1177
|
+
if (isCompletedProfileFlow.current) {
|
|
1178
|
+
return;
|
|
1179
|
+
}
|
|
1180
|
+
isCompletedProfileFlow.current = true;
|
|
1181
|
+
if (!isMinVersionSupported(GAME_CENTER_MIN_VERSION)) {
|
|
1182
|
+
updateAppToSupportedMinVersion();
|
|
1183
|
+
return;
|
|
1184
|
+
}
|
|
1185
|
+
if (profileData?.statusCode === "SUCCESS") {
|
|
1186
|
+
openGameProfileToast(profileData.nickname, profileData.profileImageUri);
|
|
1187
|
+
return;
|
|
1188
|
+
}
|
|
1189
|
+
if (profileData?.statusCode === "PROFILE_NOT_FOUND") {
|
|
1190
|
+
openProfileWebview();
|
|
1191
|
+
}
|
|
1192
|
+
};
|
|
1193
|
+
handleGameProfileFlow();
|
|
1194
|
+
}, [
|
|
1195
|
+
canShowBottomSheetOrToast,
|
|
1196
|
+
isCompletedProfileFlow,
|
|
1197
|
+
openGameProfileToast,
|
|
1198
|
+
openProfileWebview,
|
|
1199
|
+
profileData,
|
|
1200
|
+
updateAppToSupportedMinVersion
|
|
1201
|
+
]);
|
|
1202
|
+
if (!isMinVersionSupported(GAME_CENTER_MIN_VERSION)) {
|
|
1203
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
1204
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native11.View, { style: { flex: 1, position: "relative" }, children }),
|
|
1205
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1206
|
+
import_react_native11.Pressable,
|
|
1207
|
+
{
|
|
1208
|
+
style: {
|
|
1209
|
+
...overlayStyle
|
|
1210
|
+
},
|
|
1211
|
+
onPress: () => {
|
|
1212
|
+
updateAppToSupportedMinVersion();
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
)
|
|
1216
|
+
] });
|
|
1217
|
+
}
|
|
1218
|
+
if (shouldShowLoadingOverlay || isProfileDataRefetching) {
|
|
1219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
1220
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native11.View, { style: { flex: 1, position: "relative" }, children }),
|
|
1221
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1222
|
+
import_react_native11.View,
|
|
1223
|
+
{
|
|
1224
|
+
style: {
|
|
1225
|
+
...overlayStyle,
|
|
1226
|
+
justifyContent: "center",
|
|
1227
|
+
alignItems: "center",
|
|
1228
|
+
backgroundColor: "rgba(0, 0, 0, 0.2)"
|
|
1229
|
+
},
|
|
1230
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native10.Loader, { size: "large", type: "light" })
|
|
1231
|
+
}
|
|
1232
|
+
)
|
|
1233
|
+
] });
|
|
1234
|
+
}
|
|
1235
|
+
if (shouldShowProfileNotFoundOverlay) {
|
|
1236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
1237
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native11.View, { style: { flex: 1, position: "relative" }, children }),
|
|
1238
|
+
shouldShowProfileNotFoundOverlay && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1239
|
+
import_react_native11.Pressable,
|
|
1240
|
+
{
|
|
1241
|
+
style: {
|
|
1242
|
+
...overlayStyle
|
|
1243
|
+
},
|
|
1244
|
+
onPress: () => {
|
|
1245
|
+
openProfileWebview();
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
)
|
|
1249
|
+
] });
|
|
1250
|
+
}
|
|
1251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native11.View, { style: { flex: 1, position: "relative" }, children }) });
|
|
1252
|
+
};
|
|
1253
|
+
var overlayStyle = {
|
|
1254
|
+
position: "absolute",
|
|
1255
|
+
top: 0,
|
|
1256
|
+
left: 0,
|
|
1257
|
+
right: 0,
|
|
1258
|
+
bottom: 0,
|
|
1259
|
+
zIndex: Z_INDEX.PROFILE_OVERLAY
|
|
1260
|
+
};
|
|
1364
1261
|
|
|
1365
1262
|
// src/components/GameWebViewNavigationBar/GameNavigationBar.tsx
|
|
1366
|
-
var import_react_native_svg = require("@
|
|
1367
|
-
var
|
|
1368
|
-
var
|
|
1263
|
+
var import_react_native_svg = require("@react-native-bedrock/native/react-native-svg");
|
|
1264
|
+
var import_react_native15 = require("@toss-design-system/react-native");
|
|
1265
|
+
var import_react_native16 = require("react-native");
|
|
1369
1266
|
|
|
1370
1267
|
// src/components/GameWebViewNavigationBar/HeaderRight.tsx
|
|
1371
|
-
var
|
|
1268
|
+
var import_react_native13 = require("react-native");
|
|
1372
1269
|
|
|
1373
1270
|
// src/components/GameWebViewNavigationBar/byPlatform.ts
|
|
1374
|
-
var
|
|
1271
|
+
var import_react_native12 = require("react-native");
|
|
1375
1272
|
function byPlatform({
|
|
1376
1273
|
...props
|
|
1377
1274
|
}) {
|
|
1378
|
-
return (props[
|
|
1275
|
+
return (props[import_react_native12.Platform.OS] ?? props.fallback)();
|
|
1379
1276
|
}
|
|
1380
1277
|
|
|
1381
1278
|
// src/components/GameWebViewNavigationBar/constants.ts
|
|
@@ -1383,21 +1280,21 @@ var RIGHT_MARGIN = 24;
|
|
|
1383
1280
|
var IOS_DEFAULT_MARGIN = 20;
|
|
1384
1281
|
|
|
1385
1282
|
// src/components/GameWebViewNavigationBar/HeaderRight.tsx
|
|
1386
|
-
var
|
|
1283
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
1387
1284
|
function IOSHeaderRight(props) {
|
|
1388
|
-
return /* @__PURE__ */ (0,
|
|
1285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native13.View, { style: styles.ios, ...props });
|
|
1389
1286
|
}
|
|
1390
1287
|
function AndroidHeaderRight(props) {
|
|
1391
|
-
return /* @__PURE__ */ (0,
|
|
1288
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native13.View, { style: styles.android, ...props });
|
|
1392
1289
|
}
|
|
1393
1290
|
function HeaderRight(props) {
|
|
1394
1291
|
return byPlatform({
|
|
1395
|
-
ios: () => /* @__PURE__ */ (0,
|
|
1396
|
-
android: () => /* @__PURE__ */ (0,
|
|
1397
|
-
fallback: () => /* @__PURE__ */ (0,
|
|
1292
|
+
ios: () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(IOSHeaderRight, { ...props }),
|
|
1293
|
+
android: () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AndroidHeaderRight, { ...props }),
|
|
1294
|
+
fallback: () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(IOSHeaderRight, { ...props })
|
|
1398
1295
|
});
|
|
1399
1296
|
}
|
|
1400
|
-
var styles =
|
|
1297
|
+
var styles = import_react_native13.StyleSheet.create({
|
|
1401
1298
|
ios: {
|
|
1402
1299
|
marginRight: -IOS_DEFAULT_MARGIN + RIGHT_MARGIN,
|
|
1403
1300
|
flexDirection: "row"
|
|
@@ -1408,49 +1305,49 @@ var styles = import_react_native31.StyleSheet.create({
|
|
|
1408
1305
|
});
|
|
1409
1306
|
|
|
1410
1307
|
// src/components/GameWebViewNavigationBar/useSafeAreaTop.ts
|
|
1411
|
-
var import_react_native_safe_area_context = require("@
|
|
1412
|
-
var
|
|
1308
|
+
var import_react_native_safe_area_context = require("@react-native-bedrock/native/react-native-safe-area-context");
|
|
1309
|
+
var import_react_native14 = require("react-native");
|
|
1413
1310
|
function useSafeAreaTop() {
|
|
1414
1311
|
const safeAreaInsets = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
|
|
1415
|
-
const hasDynamicIsland =
|
|
1312
|
+
const hasDynamicIsland = import_react_native14.Platform.OS === "ios" && safeAreaInsets.top > 50;
|
|
1416
1313
|
const safeAreaTop = hasDynamicIsland ? safeAreaInsets.top - 5 : safeAreaInsets.top;
|
|
1417
1314
|
return safeAreaTop;
|
|
1418
1315
|
}
|
|
1419
1316
|
|
|
1420
1317
|
// src/components/GameWebViewNavigationBar/GameNavigationBar.tsx
|
|
1421
|
-
var
|
|
1318
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1422
1319
|
var originXML = '<svg fill="none" height="30" viewBox="0 0 30 30" width="30" xmlns="https://www.w3.org/2000/svg"><rect fill="#031832" fill-opacity=".46" height="30" rx="15" width="30"/><rect height="29.5" rx="14.75" stroke="#d9d9ff" stroke-opacity=".11" stroke-width=".5" width="29.5" x=".25" y=".25"/><path clip-rule="evenodd" d="m16.5119 15.0014 4.7092-4.7092c.0929-.0928.1666-.2031.2169-.32441.0503-.12134.0762-.25141.0762-.38276.0001-.13136-.0258-.26144-.076-.38281s-.1239-.23166-.2167-.32457c-.0929-.09291-.2031-.16662-.3245-.21692-.1213-.05031-.2514-.07622-.3827-.07626-.1314-.00004-.2615.0258-.3828.07603-.1214.05023-.2317.12388-.3246.21673l-4.7092 4.70997-4.71-4.70997c-.1897-.17718-.4408-.27373-.70034-.26927s-.5072.10959-.69069.2932c-.1835.1836-.28848.43132-.29279.69087-.00432.25954.09238.51057.26968.70017l4.71004 4.7092-4.71004 4.7092c-.1392.1401-.23385.3183-.27204.5121-.0382.1939-.01823.3946.05739.5771s.20351.3386.36759.4486.35702.169.55456.1697c.25583 0 .51164-.0975.70664-.2925l4.71-4.71 4.7092 4.71c.0927.093.2029.1668.3243.2172.1213.0504.2514.0763.3828.0763s.2614-.0259.3828-.0763c.1213-.0504.2315-.1242.3243-.2172.0929-.0929.1667-.2032.217-.3246s.0762-.2515.0762-.3829-.0259-.2616-.0762-.383-.1241-.2317-.217-.3245z" fill="#fdfdfe" fill-opacity=".89" fill-rule="evenodd"/></svg>';
|
|
1423
1320
|
function GameNavigationBar({ onClose }) {
|
|
1424
1321
|
const safeAreaTop = useSafeAreaTop();
|
|
1425
|
-
return /* @__PURE__ */ (0,
|
|
1426
|
-
/* @__PURE__ */ (0,
|
|
1427
|
-
/* @__PURE__ */ (0,
|
|
1428
|
-
|
|
1322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
1323
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_native15.PageNavbar, { preference: { type: "none" } }),
|
|
1324
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1325
|
+
import_react_native16.View,
|
|
1429
1326
|
{
|
|
1430
1327
|
style: {
|
|
1431
1328
|
width: "100%",
|
|
1432
|
-
height:
|
|
1329
|
+
height: import_react_native16.Platform.OS === "ios" ? 44 : 54,
|
|
1433
1330
|
flexDirection: "row",
|
|
1434
1331
|
alignItems: "center",
|
|
1435
1332
|
justifyContent: "flex-end",
|
|
1436
1333
|
position: "absolute",
|
|
1437
|
-
zIndex:
|
|
1334
|
+
zIndex: Z_INDEX.CLOSE_BUTTON,
|
|
1438
1335
|
marginTop: safeAreaTop,
|
|
1439
|
-
paddingRight:
|
|
1336
|
+
paddingRight: import_react_native16.Platform.OS === "ios" ? 10 : 8
|
|
1440
1337
|
},
|
|
1441
1338
|
pointerEvents: "box-none",
|
|
1442
|
-
children: /* @__PURE__ */ (0,
|
|
1443
|
-
|
|
1339
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(HeaderRight, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1340
|
+
import_react_native16.TouchableOpacity,
|
|
1444
1341
|
{
|
|
1445
1342
|
hitSlop: { left: 8, right: 8 },
|
|
1446
1343
|
accessibilityRole: "button",
|
|
1447
1344
|
accessible: true,
|
|
1448
1345
|
accessibilityLabel: "\uAC8C\uC784\uC885\uB8CC",
|
|
1449
1346
|
style: {
|
|
1450
|
-
padding:
|
|
1347
|
+
padding: import_react_native16.Platform.OS === "ios" ? 7 : 9
|
|
1451
1348
|
},
|
|
1452
1349
|
onPress: onClose,
|
|
1453
|
-
children: /* @__PURE__ */ (0,
|
|
1350
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_native_svg.SvgXml, { xml: originXML, width: 30, height: 30 })
|
|
1454
1351
|
}
|
|
1455
1352
|
) })
|
|
1456
1353
|
}
|
|
@@ -1459,48 +1356,56 @@ function GameNavigationBar({ onClose }) {
|
|
|
1459
1356
|
}
|
|
1460
1357
|
|
|
1461
1358
|
// src/components/GameWebView.tsx
|
|
1462
|
-
var
|
|
1463
|
-
var GameWebView = (0,
|
|
1464
|
-
const { openConfirm } = (0,
|
|
1359
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1360
|
+
var GameWebView = (0, import_react6.forwardRef)(function GameWebView2(props, ref) {
|
|
1361
|
+
const { openConfirm } = (0, import_react_native17.useDialog)();
|
|
1465
1362
|
const { brandDisplayName } = getAppsInTossGlobals();
|
|
1466
|
-
const
|
|
1363
|
+
const [isEntryMessageExited, setIsEntryMessageExited] = (0, import_react6.useState)(false);
|
|
1364
|
+
const handleClose = (0, import_react6.useCallback)(async () => {
|
|
1467
1365
|
const isConfirmed = await openConfirm({
|
|
1468
|
-
title: `${(0,
|
|
1366
|
+
title: `${(0, import_es_hangul2.josa)(brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
|
|
1469
1367
|
leftButton: "\uCDE8\uC18C",
|
|
1470
1368
|
rightButton: "\uC885\uB8CC\uD558\uAE30",
|
|
1471
1369
|
closeOnDimmerClick: true
|
|
1472
1370
|
});
|
|
1473
1371
|
if (isConfirmed) {
|
|
1474
|
-
(0,
|
|
1372
|
+
(0, import_react_native_bedrock12.closeView)();
|
|
1475
1373
|
}
|
|
1476
1374
|
}, [brandDisplayName, openConfirm]);
|
|
1477
|
-
(0,
|
|
1478
|
-
if (
|
|
1479
|
-
setIosSwipeGestureEnabled({ isEnabled: false });
|
|
1375
|
+
(0, import_react6.useEffect)(() => {
|
|
1376
|
+
if (import_react_native18.Platform.OS === "ios") {
|
|
1377
|
+
(0, import_react_native_bedrock12.setIosSwipeGestureEnabled)({ isEnabled: false });
|
|
1480
1378
|
return () => {
|
|
1481
|
-
setIosSwipeGestureEnabled({ isEnabled: true });
|
|
1379
|
+
(0, import_react_native_bedrock12.setIosSwipeGestureEnabled)({ isEnabled: true });
|
|
1482
1380
|
};
|
|
1483
1381
|
}
|
|
1484
1382
|
return;
|
|
1485
1383
|
}, []);
|
|
1486
|
-
(0,
|
|
1384
|
+
(0, import_react6.useEffect)(() => {
|
|
1487
1385
|
const backHandler = () => {
|
|
1488
1386
|
handleClose();
|
|
1489
1387
|
return true;
|
|
1490
1388
|
};
|
|
1491
|
-
|
|
1389
|
+
import_react_native18.BackHandler.addEventListener("hardwareBackPress", backHandler);
|
|
1492
1390
|
return () => {
|
|
1493
|
-
|
|
1391
|
+
import_react_native18.BackHandler.removeEventListener("hardwareBackPress", backHandler);
|
|
1494
1392
|
};
|
|
1495
1393
|
}, [handleClose]);
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1394
|
+
(0, import_react6.useEffect)(() => {
|
|
1395
|
+
appsInTossEvent.addEventListener("entryMessageExited", {
|
|
1396
|
+
onEvent: () => {
|
|
1397
|
+
setIsEntryMessageExited(true);
|
|
1398
|
+
}
|
|
1399
|
+
});
|
|
1400
|
+
}, []);
|
|
1401
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
1402
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GameNavigationBar, { onClose: handleClose }),
|
|
1403
|
+
getOperationalEnvironment() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GameProfile, { isReadyForProfileUI: isEntryMessageExited, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_react_native_webview.WebView, { ref, ...props })
|
|
1499
1404
|
] });
|
|
1500
1405
|
});
|
|
1501
1406
|
|
|
1502
1407
|
// src/bridge-handler/useBridgeHandler.tsx
|
|
1503
|
-
var
|
|
1408
|
+
var import_react7 = require("react");
|
|
1504
1409
|
function serializeError(error) {
|
|
1505
1410
|
return JSON.stringify(error, (_, value) => {
|
|
1506
1411
|
if (value instanceof Error) {
|
|
@@ -1532,12 +1437,12 @@ function methodHandler({
|
|
|
1532
1437
|
};
|
|
1533
1438
|
wrappedFunc(...args).then((result) => {
|
|
1534
1439
|
injectJavaScript?.(`
|
|
1535
|
-
window.
|
|
1440
|
+
window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/resolve/${eventId}', ${JSON.stringify(result, null, 0)});
|
|
1536
1441
|
`);
|
|
1537
1442
|
}).catch((error) => {
|
|
1538
1443
|
const serializedError = serializeError(error);
|
|
1539
1444
|
injectJavaScript?.(`
|
|
1540
|
-
window.
|
|
1445
|
+
window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/reject/${eventId}', ${serializedError});
|
|
1541
1446
|
`);
|
|
1542
1447
|
});
|
|
1543
1448
|
}
|
|
@@ -1549,8 +1454,8 @@ function useBridgeHandler({
|
|
|
1549
1454
|
eventListenerMap,
|
|
1550
1455
|
injectedJavaScript: originalInjectedJavaScript
|
|
1551
1456
|
}) {
|
|
1552
|
-
const ref = (0,
|
|
1553
|
-
const injectedJavaScript = (0,
|
|
1457
|
+
const ref = (0, import_react7.useRef)(null);
|
|
1458
|
+
const injectedJavaScript = (0, import_react7.useMemo)(
|
|
1554
1459
|
() => [
|
|
1555
1460
|
`window.__CONSTANT_HANDLER_MAP = ${JSON.stringify(
|
|
1556
1461
|
Object.entries(constantHandlerMap).reduce(
|
|
@@ -1568,15 +1473,15 @@ function useBridgeHandler({
|
|
|
1568
1473
|
);
|
|
1569
1474
|
const createHandleOnEvent = (functionName, eventId) => (response) => {
|
|
1570
1475
|
ref.current?.injectJavaScript(`
|
|
1571
|
-
window.
|
|
1476
|
+
window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/onEvent/${eventId}', ${JSON.stringify(response, null, 0)});
|
|
1572
1477
|
`);
|
|
1573
1478
|
};
|
|
1574
1479
|
const createHandleOnError = (functionName, eventId) => (error) => {
|
|
1575
1480
|
ref.current?.injectJavaScript(`
|
|
1576
|
-
window.
|
|
1481
|
+
window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${JSON.stringify(error, null, 0)});
|
|
1577
1482
|
`);
|
|
1578
1483
|
};
|
|
1579
|
-
const $onMessage = (0,
|
|
1484
|
+
const $onMessage = (0, import_react7.useCallback)(
|
|
1580
1485
|
async (e) => {
|
|
1581
1486
|
onMessage?.(e);
|
|
1582
1487
|
const data = JSON.parse(e.nativeEvent.data);
|
|
@@ -1626,8 +1531,201 @@ function useBridgeHandler({
|
|
|
1626
1531
|
};
|
|
1627
1532
|
}
|
|
1628
1533
|
|
|
1534
|
+
// src/constant-bridges.ts
|
|
1535
|
+
var constant_bridges_exports = {};
|
|
1536
|
+
__export(constant_bridges_exports, {
|
|
1537
|
+
getDeviceId: () => getDeviceId,
|
|
1538
|
+
getOperationalEnvironment: () => getOperationalEnvironment,
|
|
1539
|
+
getTossAppVersion: () => getTossAppVersion
|
|
1540
|
+
});
|
|
1541
|
+
|
|
1542
|
+
// src/event-bridges.ts
|
|
1543
|
+
var event_bridges_exports = {};
|
|
1544
|
+
__export(event_bridges_exports, {
|
|
1545
|
+
startUpdateLocation: () => startUpdateLocation
|
|
1546
|
+
});
|
|
1547
|
+
|
|
1548
|
+
// src/hooks/useCreateUserAgent.ts
|
|
1549
|
+
var import_react_native19 = require("react-native");
|
|
1550
|
+
var import_react_native_bedrock13 = require("react-native-bedrock");
|
|
1551
|
+
var FontA11yCategory = {
|
|
1552
|
+
Large: "Large",
|
|
1553
|
+
xLarge: "xLarge",
|
|
1554
|
+
xxLarge: "xxLarge",
|
|
1555
|
+
xxxLarge: "xxxLarge",
|
|
1556
|
+
A11y_Medium: "A11y_Medium",
|
|
1557
|
+
A11y_Large: "A11y_Large",
|
|
1558
|
+
A11y_xLarge: "A11y_xLarge",
|
|
1559
|
+
A11y_xxLarge: "A11y_xxLarge",
|
|
1560
|
+
A11y_xxxLarge: "A11y_xxxLarge"
|
|
1561
|
+
};
|
|
1562
|
+
var androidFontScaleMap = {
|
|
1563
|
+
100: FontA11yCategory.Large,
|
|
1564
|
+
110: FontA11yCategory.xLarge,
|
|
1565
|
+
120: FontA11yCategory.xxLarge,
|
|
1566
|
+
135: FontA11yCategory.xxxLarge,
|
|
1567
|
+
160: FontA11yCategory.A11y_Medium,
|
|
1568
|
+
190: FontA11yCategory.A11y_Large,
|
|
1569
|
+
235: FontA11yCategory.A11y_xLarge,
|
|
1570
|
+
275: FontA11yCategory.A11y_xxLarge,
|
|
1571
|
+
310: FontA11yCategory.A11y_xxxLarge
|
|
1572
|
+
};
|
|
1573
|
+
var iosScaleToAndroidScale = {
|
|
1574
|
+
0.823: 100,
|
|
1575
|
+
0.882: 100,
|
|
1576
|
+
0.941: 100,
|
|
1577
|
+
1: 100,
|
|
1578
|
+
1.118: 110,
|
|
1579
|
+
1.235: 120,
|
|
1580
|
+
1.353: 135,
|
|
1581
|
+
1.786: 160,
|
|
1582
|
+
2.143: 190,
|
|
1583
|
+
2.643: 235,
|
|
1584
|
+
3.143: 275,
|
|
1585
|
+
3.571: 310
|
|
1586
|
+
};
|
|
1587
|
+
function convertToAndroidStyleScale(fontScale, platform) {
|
|
1588
|
+
if (platform === "android") {
|
|
1589
|
+
if (fontScale <= 1) {
|
|
1590
|
+
return 100;
|
|
1591
|
+
}
|
|
1592
|
+
const scaledValue = Math.round(fontScale * 100);
|
|
1593
|
+
const keys = Object.keys(androidFontScaleMap).map(Number).sort((a, b) => a - b);
|
|
1594
|
+
let closestKey = keys[0];
|
|
1595
|
+
let minDiff = Math.abs(scaledValue - closestKey);
|
|
1596
|
+
for (const key of keys) {
|
|
1597
|
+
const diff = Math.abs(scaledValue - key);
|
|
1598
|
+
if (diff < minDiff) {
|
|
1599
|
+
minDiff = diff;
|
|
1600
|
+
closestKey = key;
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
return closestKey;
|
|
1604
|
+
} else {
|
|
1605
|
+
const iosScales = Object.keys(iosScaleToAndroidScale).map(Number);
|
|
1606
|
+
let closestScale = iosScales[0];
|
|
1607
|
+
let minDiff = Math.abs(fontScale - closestScale);
|
|
1608
|
+
for (const scale of iosScales) {
|
|
1609
|
+
const diff = Math.abs(fontScale - scale);
|
|
1610
|
+
if (diff < minDiff) {
|
|
1611
|
+
minDiff = diff;
|
|
1612
|
+
closestScale = scale;
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1615
|
+
return iosScaleToAndroidScale[closestScale];
|
|
1616
|
+
}
|
|
1617
|
+
}
|
|
1618
|
+
function mapIOSFontScaleToCategory(fontScale) {
|
|
1619
|
+
if (fontScale < 1) {
|
|
1620
|
+
return FontA11yCategory.Large;
|
|
1621
|
+
}
|
|
1622
|
+
if (Math.abs(fontScale - 1) < 0.05) {
|
|
1623
|
+
return FontA11yCategory.Large;
|
|
1624
|
+
}
|
|
1625
|
+
if (Math.abs(fontScale - 1.118) < 0.05) {
|
|
1626
|
+
return FontA11yCategory.xLarge;
|
|
1627
|
+
}
|
|
1628
|
+
if (Math.abs(fontScale - 1.235) < 0.05) {
|
|
1629
|
+
return FontA11yCategory.xxLarge;
|
|
1630
|
+
}
|
|
1631
|
+
if (Math.abs(fontScale - 1.353) < 0.05) {
|
|
1632
|
+
return FontA11yCategory.xxxLarge;
|
|
1633
|
+
}
|
|
1634
|
+
if (Math.abs(fontScale - 1.786) < 0.05) {
|
|
1635
|
+
return FontA11yCategory.A11y_Medium;
|
|
1636
|
+
}
|
|
1637
|
+
if (Math.abs(fontScale - 2.143) < 0.05) {
|
|
1638
|
+
return FontA11yCategory.A11y_Large;
|
|
1639
|
+
}
|
|
1640
|
+
if (Math.abs(fontScale - 2.643) < 0.05) {
|
|
1641
|
+
return FontA11yCategory.A11y_xLarge;
|
|
1642
|
+
}
|
|
1643
|
+
if (Math.abs(fontScale - 3.143) < 0.05) {
|
|
1644
|
+
return FontA11yCategory.A11y_xxLarge;
|
|
1645
|
+
}
|
|
1646
|
+
if (Math.abs(fontScale - 3.571) < 0.05) {
|
|
1647
|
+
return FontA11yCategory.A11y_xxxLarge;
|
|
1648
|
+
}
|
|
1649
|
+
return FontA11yCategory.Large;
|
|
1650
|
+
}
|
|
1651
|
+
function mapAndroidFontScaleToCategory(fontScale) {
|
|
1652
|
+
if (fontScale <= 1) {
|
|
1653
|
+
return androidFontScaleMap[100];
|
|
1654
|
+
}
|
|
1655
|
+
const scaledValue = Math.round(fontScale * 100);
|
|
1656
|
+
const keys = Object.keys(androidFontScaleMap).map(Number).sort((a, b) => a - b);
|
|
1657
|
+
if (keys.length === 0) {
|
|
1658
|
+
return androidFontScaleMap[100];
|
|
1659
|
+
}
|
|
1660
|
+
let closestKey = keys[0];
|
|
1661
|
+
let minDiff = Math.abs(scaledValue - closestKey);
|
|
1662
|
+
for (const key of keys) {
|
|
1663
|
+
const diff = Math.abs(scaledValue - key);
|
|
1664
|
+
if (diff < minDiff) {
|
|
1665
|
+
minDiff = diff;
|
|
1666
|
+
closestKey = key;
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
return androidFontScaleMap[closestKey];
|
|
1670
|
+
}
|
|
1671
|
+
function mapFontScaleToCategory(fontScale, platform) {
|
|
1672
|
+
return platform === "ios" ? mapIOSFontScaleToCategory(fontScale) : mapAndroidFontScaleToCategory(fontScale);
|
|
1673
|
+
}
|
|
1674
|
+
function useCreateUserAgent({
|
|
1675
|
+
batteryModePreference,
|
|
1676
|
+
colorPreference,
|
|
1677
|
+
locale,
|
|
1678
|
+
navbarPreference,
|
|
1679
|
+
pureSafeArea,
|
|
1680
|
+
safeArea,
|
|
1681
|
+
safeAreaBottomTransparency
|
|
1682
|
+
}) {
|
|
1683
|
+
const platform = (0, import_react_native_bedrock13.getPlatformOS)();
|
|
1684
|
+
const appVersion = getTossAppVersion();
|
|
1685
|
+
const { fontScale } = (0, import_react_native19.useWindowDimensions)();
|
|
1686
|
+
const platformString = platform === "ios" ? "iPhone" : "Android";
|
|
1687
|
+
const fontA11y = mapFontScaleToCategory(fontScale, platform);
|
|
1688
|
+
const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
|
|
1689
|
+
return [
|
|
1690
|
+
`TossApp/${appVersion}`,
|
|
1691
|
+
batteryModePreference && `TossBatteryModePreference/${batteryModePreference}`,
|
|
1692
|
+
colorPreference && `TossColorPreference/${colorPreference}`,
|
|
1693
|
+
`TossFontAccessibility/${fontA11y}`,
|
|
1694
|
+
`TossFontScale/${normalizedFontScale}`,
|
|
1695
|
+
locale && `TossLocale/${locale}`,
|
|
1696
|
+
navbarPreference && `TossNavbarPreference/${navbarPreference}`,
|
|
1697
|
+
pureSafeArea && `TossPureSafeArea/${pureSafeArea}`,
|
|
1698
|
+
safeArea && `TossSafeArea/${safeArea}`,
|
|
1699
|
+
safeAreaBottomTransparency && `TossSafeAreaBottomTransparency/${safeAreaBottomTransparency}`,
|
|
1700
|
+
platformString
|
|
1701
|
+
].filter(Boolean).join(" ");
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
// src/hooks/useGeolocation.ts
|
|
1705
|
+
var import_react8 = require("react");
|
|
1706
|
+
var import_react_native_bedrock14 = require("react-native-bedrock");
|
|
1707
|
+
function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
|
|
1708
|
+
const isVisible = (0, import_react_native_bedrock14.useVisibility)();
|
|
1709
|
+
const [location, setLocation] = (0, import_react8.useState)(null);
|
|
1710
|
+
(0, import_react8.useEffect)(() => {
|
|
1711
|
+
if (!isVisible) {
|
|
1712
|
+
return;
|
|
1713
|
+
}
|
|
1714
|
+
return startUpdateLocation({
|
|
1715
|
+
options: {
|
|
1716
|
+
accuracy,
|
|
1717
|
+
distanceInterval,
|
|
1718
|
+
timeInterval
|
|
1719
|
+
},
|
|
1720
|
+
onEvent: setLocation,
|
|
1721
|
+
onError: console.error
|
|
1722
|
+
});
|
|
1723
|
+
}, [accuracy, distanceInterval, timeInterval, isVisible]);
|
|
1724
|
+
return location;
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1629
1727
|
// src/utils/log.ts
|
|
1630
|
-
var
|
|
1728
|
+
var import_react_native_bedrock15 = require("react-native-bedrock");
|
|
1631
1729
|
|
|
1632
1730
|
// src/utils/extractDateFromUUIDv7.ts
|
|
1633
1731
|
var extractDateFromUUIDv7 = (uuid) => {
|
|
@@ -1653,7 +1751,7 @@ var getGroupId = (url) => {
|
|
|
1653
1751
|
};
|
|
1654
1752
|
var getReferrer = () => {
|
|
1655
1753
|
try {
|
|
1656
|
-
const referrer = new URL((0,
|
|
1754
|
+
const referrer = new URL((0, import_react_native_bedrock15.getSchemeUri)());
|
|
1657
1755
|
return referrer.searchParams.get("referrer");
|
|
1658
1756
|
} catch {
|
|
1659
1757
|
return "";
|
|
@@ -1675,18 +1773,18 @@ var trackScreen = (url) => {
|
|
|
1675
1773
|
};
|
|
1676
1774
|
|
|
1677
1775
|
// src/components/WebView.tsx
|
|
1678
|
-
var
|
|
1776
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1679
1777
|
var appsInTossGlobals = getAppsInTossGlobals();
|
|
1680
|
-
var operationalEnvironment =
|
|
1778
|
+
var operationalEnvironment = getOperationalEnvironment();
|
|
1681
1779
|
var TYPES = ["partner", "external", "game"];
|
|
1682
1780
|
var WEBVIEW_TYPES = {
|
|
1683
|
-
partner:
|
|
1684
|
-
external:
|
|
1781
|
+
partner: import_react_native20.PartnerWebViewScreen,
|
|
1782
|
+
external: import_react_native20.ExternalWebViewScreen,
|
|
1685
1783
|
game: GameWebView
|
|
1686
1784
|
};
|
|
1687
1785
|
function mergeSchemeQueryParamsInto(url) {
|
|
1688
1786
|
const baseUrl = new URL(url);
|
|
1689
|
-
const schemeUrl = new URL((0,
|
|
1787
|
+
const schemeUrl = new URL((0, import_react_native_bedrock16.getSchemeUri)());
|
|
1690
1788
|
baseUrl.pathname = schemeUrl.pathname;
|
|
1691
1789
|
for (const [key, value] of schemeUrl.searchParams.entries()) {
|
|
1692
1790
|
baseUrl.searchParams.set(key, value);
|
|
@@ -1710,16 +1808,17 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1710
1808
|
if (!TYPES.includes(type)) {
|
|
1711
1809
|
throw new Error(`Invalid WebView type: '${type}'`);
|
|
1712
1810
|
}
|
|
1713
|
-
const
|
|
1714
|
-
const uri = (0,
|
|
1715
|
-
const top = (0,
|
|
1716
|
-
const bottom = (0,
|
|
1811
|
+
const bedrockEvent = (0, import_react_native_bedrock16.useBedrockEvent)();
|
|
1812
|
+
const uri = (0, import_react9.useMemo)(() => getWebViewUri(local), [local]);
|
|
1813
|
+
const top = (0, import_private3.useSafeAreaTop)();
|
|
1814
|
+
const bottom = (0, import_private3.useSafeAreaBottom)();
|
|
1815
|
+
const global2 = getAppsInTossGlobals();
|
|
1717
1816
|
const handler = useBridgeHandler({
|
|
1718
1817
|
onMessage,
|
|
1719
1818
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
1720
1819
|
eventListenerMap: {
|
|
1721
1820
|
...event_bridges_exports,
|
|
1722
|
-
backEvent: ({ onEvent, onError, options }) =>
|
|
1821
|
+
backEvent: ({ onEvent, onError, options }) => bedrockEvent.addEventListener("backEvent", { onEvent, onError, options }),
|
|
1723
1822
|
entryMessageExited: ({ onEvent, onError }) => appsInTossEvent.addEventListener("entryMessageExited", { onEvent, onError }),
|
|
1724
1823
|
updateLocationEvent: ({ onEvent, onError, options }) => appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
|
|
1725
1824
|
/** @internal */
|
|
@@ -1731,10 +1830,11 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1731
1830
|
showAdMobRewardedAd: GoogleAdMob.showAdMobRewardedAd
|
|
1732
1831
|
},
|
|
1733
1832
|
constantHandlerMap: {
|
|
1734
|
-
...
|
|
1833
|
+
...bedrockConstantBridges,
|
|
1735
1834
|
...constant_bridges_exports,
|
|
1736
1835
|
getSafeAreaTop: () => top,
|
|
1737
1836
|
getSafeAreaBottom: () => bottom,
|
|
1837
|
+
...Object.fromEntries(Object.entries(global2).map(([key, value]) => [key, () => value])),
|
|
1738
1838
|
/** AdMob */
|
|
1739
1839
|
loadAdMobInterstitialAd_isSupported: GoogleAdMob.loadAdMobInterstitialAd.isSupported,
|
|
1740
1840
|
showAdMobInterstitialAd_isSupported: GoogleAdMob.showAdMobInterstitialAd.isSupported,
|
|
@@ -1744,7 +1844,7 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1744
1844
|
getDeploymentId: env.getDeploymentId
|
|
1745
1845
|
},
|
|
1746
1846
|
asyncHandlerMap: {
|
|
1747
|
-
...
|
|
1847
|
+
...bedrockAsyncBridges,
|
|
1748
1848
|
...async_bridges_exports,
|
|
1749
1849
|
/** internal */
|
|
1750
1850
|
openPermissionDialog: AppsInTossModule.openPermissionDialog,
|
|
@@ -1752,10 +1852,13 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1752
1852
|
getStorageItem: Storage.getItem,
|
|
1753
1853
|
setStorageItem: Storage.setItem,
|
|
1754
1854
|
removeStorageItem: Storage.removeItem,
|
|
1755
|
-
clearItems: Storage.clearItems
|
|
1855
|
+
clearItems: Storage.clearItems,
|
|
1856
|
+
/** IAP */
|
|
1857
|
+
iapCreateOneTimePurchaseOrder: IAP.createOneTimePurchaseOrder,
|
|
1858
|
+
iapGetProductItemList: IAP.getProductItemList
|
|
1756
1859
|
}
|
|
1757
1860
|
});
|
|
1758
|
-
const baseProps = (0,
|
|
1861
|
+
const baseProps = (0, import_react9.useMemo)(() => {
|
|
1759
1862
|
switch (type) {
|
|
1760
1863
|
case "partner": {
|
|
1761
1864
|
const headerOnlyProp = {
|
|
@@ -1786,25 +1889,36 @@ function WebView({ type, local, onMessage, ...props }) {
|
|
|
1786
1889
|
}, [type, props]);
|
|
1787
1890
|
const BaseWebView = WEBVIEW_TYPES[type];
|
|
1788
1891
|
const webViewDebuggingEnabled = operationalEnvironment === "sandbox";
|
|
1789
|
-
const handleNavigationStateChange = (0,
|
|
1892
|
+
const handleNavigationStateChange = (0, import_react9.useCallback)((event) => {
|
|
1790
1893
|
if (event.url) {
|
|
1791
1894
|
trackScreen(event.url);
|
|
1792
1895
|
}
|
|
1793
1896
|
}, []);
|
|
1794
|
-
|
|
1897
|
+
const userAgent = useCreateUserAgent({
|
|
1898
|
+
colorPreference: "light"
|
|
1899
|
+
});
|
|
1900
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1795
1901
|
BaseWebView,
|
|
1796
1902
|
{
|
|
1797
1903
|
ref: handler.ref,
|
|
1798
1904
|
...props,
|
|
1799
1905
|
...baseProps,
|
|
1800
|
-
source: {
|
|
1906
|
+
source: {
|
|
1907
|
+
uri,
|
|
1908
|
+
// NOTE: https://github.com/react-native-webview/react-native-webview/pull/3133
|
|
1909
|
+
headers: {
|
|
1910
|
+
"User-Agent": userAgent
|
|
1911
|
+
}
|
|
1912
|
+
},
|
|
1913
|
+
userAgent: import_react_native21.Platform.OS === "ios" ? userAgent : void 0,
|
|
1801
1914
|
sharedCookiesEnabled: true,
|
|
1802
1915
|
webviewDebuggingEnabled: webViewDebuggingEnabled,
|
|
1803
1916
|
thirdPartyCookiesEnabled: true,
|
|
1804
1917
|
onMessage: handler.onMessage,
|
|
1805
1918
|
onNavigationStateChange: handleNavigationStateChange,
|
|
1806
1919
|
injectedJavaScript: handler.injectedJavaScript,
|
|
1807
|
-
injectedJavaScriptBeforeContentLoaded: handler.injectedJavaScript
|
|
1920
|
+
injectedJavaScriptBeforeContentLoaded: handler.injectedJavaScript,
|
|
1921
|
+
decelerationRate: import_react_native21.Platform.OS === "ios" ? 1 : void 0
|
|
1808
1922
|
}
|
|
1809
1923
|
);
|
|
1810
1924
|
}
|
|
@@ -1815,28 +1929,16 @@ function ensureValue(value, name) {
|
|
|
1815
1929
|
return value;
|
|
1816
1930
|
}
|
|
1817
1931
|
|
|
1818
|
-
// src/
|
|
1819
|
-
var
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
return startUpdateLocation({
|
|
1829
|
-
options: {
|
|
1830
|
-
accuracy,
|
|
1831
|
-
distanceInterval,
|
|
1832
|
-
timeInterval
|
|
1833
|
-
},
|
|
1834
|
-
onEvent: setLocation,
|
|
1835
|
-
onError: console.error
|
|
1836
|
-
});
|
|
1837
|
-
}, [accuracy, distanceInterval, timeInterval, isVisible]);
|
|
1838
|
-
return location;
|
|
1839
|
-
}
|
|
1932
|
+
// src/types.ts
|
|
1933
|
+
var Accuracy2 = /* @__PURE__ */ ((Accuracy3) => {
|
|
1934
|
+
Accuracy3[Accuracy3["Lowest"] = 1] = "Lowest";
|
|
1935
|
+
Accuracy3[Accuracy3["Low"] = 2] = "Low";
|
|
1936
|
+
Accuracy3[Accuracy3["Balanced"] = 3] = "Balanced";
|
|
1937
|
+
Accuracy3[Accuracy3["High"] = 4] = "High";
|
|
1938
|
+
Accuracy3[Accuracy3["Highest"] = 5] = "Highest";
|
|
1939
|
+
Accuracy3[Accuracy3["BestForNavigation"] = 6] = "BestForNavigation";
|
|
1940
|
+
return Accuracy3;
|
|
1941
|
+
})(Accuracy2 || {});
|
|
1840
1942
|
|
|
1841
1943
|
// src/index.ts
|
|
1842
1944
|
__reExport(src_exports, require("@apps-in-toss/analytics"), module.exports);
|
|
@@ -1851,44 +1953,34 @@ var Analytics2 = {
|
|
|
1851
1953
|
Accuracy,
|
|
1852
1954
|
Analytics,
|
|
1853
1955
|
AppsInToss,
|
|
1854
|
-
AppsInTossModule,
|
|
1855
|
-
BedrockCoreModule,
|
|
1856
|
-
BedrockModule,
|
|
1857
1956
|
GoogleAdMob,
|
|
1858
|
-
|
|
1859
|
-
|
|
1957
|
+
IAP,
|
|
1958
|
+
INTERNAL__onVisibilityChangedByTransparentServiceWeb,
|
|
1860
1959
|
Storage,
|
|
1861
1960
|
TossPay,
|
|
1862
1961
|
WebView,
|
|
1863
1962
|
appLogin,
|
|
1864
1963
|
appsInTossEvent,
|
|
1865
|
-
closeView,
|
|
1866
1964
|
env,
|
|
1867
1965
|
eventLog,
|
|
1868
1966
|
fetchAlbumPhotos,
|
|
1869
1967
|
fetchContacts,
|
|
1870
|
-
generateHapticFeedback,
|
|
1871
1968
|
getClipboardText,
|
|
1872
1969
|
getCurrentLocation,
|
|
1873
1970
|
getDeviceId,
|
|
1874
|
-
|
|
1875
|
-
getNetworkStatus,
|
|
1971
|
+
getGameCenterGameProfile,
|
|
1876
1972
|
getOperationalEnvironment,
|
|
1877
|
-
getPlatformOS,
|
|
1878
|
-
getSchemeUri,
|
|
1879
1973
|
getTossAppVersion,
|
|
1880
1974
|
getTossShareLink,
|
|
1881
1975
|
isMinVersionSupported,
|
|
1882
1976
|
openCamera,
|
|
1883
|
-
|
|
1977
|
+
openGameCenterLeaderboard,
|
|
1884
1978
|
saveBase64Data,
|
|
1885
1979
|
setClipboardText,
|
|
1886
1980
|
setDeviceOrientation,
|
|
1887
|
-
setIosSwipeGestureEnabled,
|
|
1888
|
-
setScreenAwakeMode,
|
|
1889
|
-
setSecureScreen,
|
|
1890
|
-
share,
|
|
1891
1981
|
startUpdateLocation,
|
|
1982
|
+
submitGameCenterLeaderBoardScore,
|
|
1983
|
+
useCreateUserAgent,
|
|
1892
1984
|
useGeolocation,
|
|
1893
1985
|
...require("@apps-in-toss/analytics")
|
|
1894
1986
|
});
|