tf-checkout-react-native 2.0.0-beta.13 → 2.0.0-beta.15
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.d.mts +38 -37
- package/dist/index.d.ts +38 -37
- package/dist/index.js +732 -343
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +686 -294
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -3
- package/src/confirmer.ts +338 -99
- package/src/index.tsx +10 -2
- package/src/instance.ts +1 -3
- package/src/paymentSheet.ts +170 -0
- package/src/sections/Payment.tsx +41 -24
- package/src/ui/CheckoutProvider.tsx +14 -12
- package/src/ui/CustomFields.tsx +7 -4
- package/src/ui/Select.tsx +30 -6
- package/src/useCheckout.ts +78 -3
package/dist/index.mjs
CHANGED
|
@@ -6321,8 +6321,8 @@ var beginRequest = (currentScope) => {
|
|
|
6321
6321
|
var createActionLock = () => {
|
|
6322
6322
|
const held = /* @__PURE__ */ new Set();
|
|
6323
6323
|
const waiting = /* @__PURE__ */ new Map();
|
|
6324
|
-
const
|
|
6325
|
-
const notify = () =>
|
|
6324
|
+
const listeners42 = /* @__PURE__ */ new Set();
|
|
6325
|
+
const notify = () => listeners42.forEach((listener) => listener());
|
|
6326
6326
|
return {
|
|
6327
6327
|
acquire: (scope) => {
|
|
6328
6328
|
if (held.has(scope)) return null;
|
|
@@ -6346,9 +6346,9 @@ var createActionLock = () => {
|
|
|
6346
6346
|
waiting.set(scope, [...(_a2 = waiting.get(scope)) != null ? _a2 : [], resolve]);
|
|
6347
6347
|
}) : Promise.resolve(),
|
|
6348
6348
|
subscribe: (listener) => {
|
|
6349
|
-
|
|
6349
|
+
listeners42.add(listener);
|
|
6350
6350
|
return () => {
|
|
6351
|
-
|
|
6351
|
+
listeners42.delete(listener);
|
|
6352
6352
|
};
|
|
6353
6353
|
}
|
|
6354
6354
|
};
|
|
@@ -8381,9 +8381,9 @@ var withOrderFixed = (snapshot, progress) => {
|
|
|
8381
8381
|
};
|
|
8382
8382
|
var createCheckoutStore = (initial = initialSnapshot()) => {
|
|
8383
8383
|
let state = initial;
|
|
8384
|
-
const
|
|
8384
|
+
const listeners42 = /* @__PURE__ */ new Set();
|
|
8385
8385
|
const emit = () => {
|
|
8386
|
-
|
|
8386
|
+
listeners42.forEach((listener) => listener(state));
|
|
8387
8387
|
};
|
|
8388
8388
|
const store = {
|
|
8389
8389
|
progress: {},
|
|
@@ -8396,9 +8396,9 @@ var createCheckoutStore = (initial = initialSnapshot()) => {
|
|
|
8396
8396
|
emit();
|
|
8397
8397
|
},
|
|
8398
8398
|
subscribe: (listener) => {
|
|
8399
|
-
|
|
8399
|
+
listeners42.add(listener);
|
|
8400
8400
|
return () => {
|
|
8401
|
-
|
|
8401
|
+
listeners42.delete(listener);
|
|
8402
8402
|
};
|
|
8403
8403
|
},
|
|
8404
8404
|
reset: () => {
|
|
@@ -13876,8 +13876,8 @@ var withCheckoutStart = async (lock2, scope, work) => {
|
|
|
13876
13876
|
var createCardOwnership = () => {
|
|
13877
13877
|
const registered = [];
|
|
13878
13878
|
let chosen = null;
|
|
13879
|
-
const
|
|
13880
|
-
const emit = () =>
|
|
13879
|
+
const listeners42 = /* @__PURE__ */ new Set();
|
|
13880
|
+
const emit = () => listeners42.forEach((listener) => listener());
|
|
13881
13881
|
return {
|
|
13882
13882
|
register: (id2) => {
|
|
13883
13883
|
if (!chosen && registered.length === 1 && registered[0] !== id2)
|
|
@@ -13902,8 +13902,8 @@ var createCardOwnership = () => {
|
|
|
13902
13902
|
// single section never flashes "Continue paying here" while it mounts.
|
|
13903
13903
|
owns: (id2) => registered.includes(id2) ? chosen ? chosen === id2 : registered.every((other) => other === id2) : registered.length === 0,
|
|
13904
13904
|
subscribe: (listener) => {
|
|
13905
|
-
|
|
13906
|
-
return () =>
|
|
13905
|
+
listeners42.add(listener);
|
|
13906
|
+
return () => listeners42.delete(listener);
|
|
13907
13907
|
}
|
|
13908
13908
|
};
|
|
13909
13909
|
};
|
|
@@ -13984,8 +13984,8 @@ var gateCheckoutActions = (actions, gateway, holder) => {
|
|
|
13984
13984
|
};
|
|
13985
13985
|
var createConfirmerGateway = (lock2, scope) => {
|
|
13986
13986
|
let current5 = null;
|
|
13987
|
-
const
|
|
13988
|
-
const emit = () =>
|
|
13987
|
+
const listeners42 = /* @__PURE__ */ new Set();
|
|
13988
|
+
const emit = () => listeners42.forEach((listener) => listener());
|
|
13989
13989
|
const held = async (release, holder, work) => {
|
|
13990
13990
|
current5 = holder;
|
|
13991
13991
|
emit();
|
|
@@ -14015,9 +14015,9 @@ var createConfirmerGateway = (lock2, scope) => {
|
|
|
14015
14015
|
},
|
|
14016
14016
|
holder: () => current5,
|
|
14017
14017
|
subscribe: (listener) => {
|
|
14018
|
-
|
|
14018
|
+
listeners42.add(listener);
|
|
14019
14019
|
return () => {
|
|
14020
|
-
|
|
14020
|
+
listeners42.delete(listener);
|
|
14021
14021
|
};
|
|
14022
14022
|
}
|
|
14023
14023
|
};
|
|
@@ -14088,8 +14088,8 @@ var createPaymentMarks = () => {
|
|
|
14088
14088
|
let marks = {};
|
|
14089
14089
|
let details = {};
|
|
14090
14090
|
const live = /* @__PURE__ */ new Set();
|
|
14091
|
-
const
|
|
14092
|
-
const emit = () =>
|
|
14091
|
+
const listeners42 = /* @__PURE__ */ new Set();
|
|
14092
|
+
const emit = () => listeners42.forEach((listener) => listener());
|
|
14093
14093
|
const state = (ticketHash, owner) => {
|
|
14094
14094
|
const by = marks[ticketHash];
|
|
14095
14095
|
if (!by) return "none";
|
|
@@ -14126,9 +14126,9 @@ var createPaymentMarks = () => {
|
|
|
14126
14126
|
emit();
|
|
14127
14127
|
},
|
|
14128
14128
|
subscribe: (listener) => {
|
|
14129
|
-
|
|
14129
|
+
listeners42.add(listener);
|
|
14130
14130
|
return () => {
|
|
14131
|
-
|
|
14131
|
+
listeners42.delete(listener);
|
|
14132
14132
|
};
|
|
14133
14133
|
}
|
|
14134
14134
|
};
|
|
@@ -14824,8 +14824,8 @@ var bindAppCheckoutEngine = (engine) => {
|
|
|
14824
14824
|
);
|
|
14825
14825
|
};
|
|
14826
14826
|
var ttfKeys = {
|
|
14827
|
-
trips: (
|
|
14828
|
-
trip: (
|
|
14827
|
+
trips: (accountKey2, query) => ["ttf", "trips", accountKey2, query],
|
|
14828
|
+
trip: (accountKey2, eventId, query) => ["ttf", "trip", accountKey2, eventId, query],
|
|
14829
14829
|
profile: ["ttf", "profile"],
|
|
14830
14830
|
countries: ["ttf", "countries"],
|
|
14831
14831
|
states: (countryId) => ["ttf", "states", countryId],
|
|
@@ -17362,22 +17362,22 @@ var useWaiverSigning = (eventId, waiver, attach, hold) => {
|
|
|
17362
17362
|
sign
|
|
17363
17363
|
};
|
|
17364
17364
|
};
|
|
17365
|
-
var useTrips = (
|
|
17365
|
+
var useTrips = (accountKey2, query = {}, options) => {
|
|
17366
17366
|
var _a2;
|
|
17367
17367
|
return useSessionQuery({
|
|
17368
17368
|
...options,
|
|
17369
|
-
queryKey: ttfKeys.trips(
|
|
17369
|
+
queryKey: ttfKeys.trips(accountKey2 != null ? accountKey2 : "", query),
|
|
17370
17370
|
queryFn: () => ttf.trips.list(query),
|
|
17371
|
-
enabled:
|
|
17371
|
+
enabled: accountKey2 ? (_a2 = options == null ? void 0 : options.enabled) != null ? _a2 : true : false
|
|
17372
17372
|
});
|
|
17373
17373
|
};
|
|
17374
|
-
var useTrip = (
|
|
17374
|
+
var useTrip = (accountKey2, eventId, query = {}, options) => {
|
|
17375
17375
|
var _a2;
|
|
17376
17376
|
return useSessionQuery({
|
|
17377
17377
|
...options,
|
|
17378
|
-
queryKey: ttfKeys.trip(
|
|
17378
|
+
queryKey: ttfKeys.trip(accountKey2 != null ? accountKey2 : "", eventId != null ? eventId : "", query),
|
|
17379
17379
|
queryFn: () => ttf.trips.get(eventId, query),
|
|
17380
|
-
enabled:
|
|
17380
|
+
enabled: accountKey2 && eventId ? (_a2 = options == null ? void 0 : options.enabled) != null ? _a2 : true : false
|
|
17381
17381
|
});
|
|
17382
17382
|
};
|
|
17383
17383
|
var useCheckoutPhoneIdentity = (options) => {
|
|
@@ -23498,6 +23498,9 @@ var translateAccountMessage = (translate2, english, vars) => {
|
|
|
23498
23498
|
return english.replace(/\{\{\s*(\w+)\s*\}\}/g, (whole, name) => (vars == null ? void 0 : vars[name]) === void 0 ? whole : String(vars[name]));
|
|
23499
23499
|
};
|
|
23500
23500
|
|
|
23501
|
+
// src/useCheckout.ts
|
|
23502
|
+
import { useState as useState35 } from "react";
|
|
23503
|
+
|
|
23501
23504
|
// src/CardInput.tsx
|
|
23502
23505
|
import { useEffect as useEffect26, useRef as useRef29, useState as useState34 } from "react";
|
|
23503
23506
|
import { Platform, StyleSheet as StyleSheet4 } from "react-native";
|
|
@@ -24035,7 +24038,10 @@ var getQueryClient = () => {
|
|
|
24035
24038
|
}
|
|
24036
24039
|
return sharedQueryClient;
|
|
24037
24040
|
};
|
|
24038
|
-
var CheckoutThemeProvider = ({
|
|
24041
|
+
var CheckoutThemeProvider = ({
|
|
24042
|
+
theme,
|
|
24043
|
+
children
|
|
24044
|
+
}) => {
|
|
24039
24045
|
const resolved = useMemo17(() => resolveTheme(theme), [theme]);
|
|
24040
24046
|
return /* @__PURE__ */ jsx5(ThemeCtx.Provider, { value: resolved, children });
|
|
24041
24047
|
};
|
|
@@ -24058,7 +24064,8 @@ var SelfProvidedCheckout = ({
|
|
|
24058
24064
|
const { providerPage, page: page2 } = useProviderPages();
|
|
24059
24065
|
const checkout = useCheckout2({
|
|
24060
24066
|
ports: { onInstallmentOffers, providerPage },
|
|
24061
|
-
options: rest.options
|
|
24067
|
+
options: rest.options,
|
|
24068
|
+
paymentSheet: rest.paymentSheet
|
|
24062
24069
|
});
|
|
24063
24070
|
return /* @__PURE__ */ jsxs4(CheckoutRoot, { checkout, ...rest, children: [
|
|
24064
24071
|
children,
|
|
@@ -24166,9 +24173,113 @@ import {
|
|
|
24166
24173
|
createPaymentMethod,
|
|
24167
24174
|
handleNextAction,
|
|
24168
24175
|
initStripe,
|
|
24176
|
+
initPaymentSheet,
|
|
24177
|
+
presentPaymentSheet,
|
|
24178
|
+
LinkDisplay,
|
|
24169
24179
|
PlatformPay,
|
|
24170
24180
|
retrievePaymentIntent
|
|
24171
24181
|
} from "@stripe/stripe-react-native";
|
|
24182
|
+
|
|
24183
|
+
// src/paymentSheet.ts
|
|
24184
|
+
var nativePaymentSheetAvailable = (snapshot) => {
|
|
24185
|
+
var _a2;
|
|
24186
|
+
return snapshot.gateway === "stripe_payment_intents" && typeof ((_a2 = snapshot.breakdown) == null ? void 0 : _a2.currencyCode) === "string" && /^[A-Z]{3}$/.test(snapshot.breakdown.currencyCode) && snapshot.breakdown.currencyCode !== "MXN";
|
|
24187
|
+
};
|
|
24188
|
+
var NATIVE_SHEET_CARD_FIELD_REQUIRED = "NATIVE_SHEET_CARD_FIELD_REQUIRED";
|
|
24189
|
+
var NATIVE_SHEET_CARD_FIELD_MESSAGE = "Enter your card details below, then select Pay to continue.";
|
|
24190
|
+
var NATIVE_SHEET_REVIEW_REQUIRED = "The original payment details changed. Review this order before paying.";
|
|
24191
|
+
var nativeSheetIntentIdentity = (intent, intentId, reviewed) => {
|
|
24192
|
+
if (!intent || typeof intent !== "object" || !reviewed || !Number.isSafeInteger(reviewed.amountMinor) || reviewed.amountMinor <= 0 || !/^[A-Z]{3}$/.test(reviewed.currency))
|
|
24193
|
+
return false;
|
|
24194
|
+
const own = (key5) => {
|
|
24195
|
+
var _a2;
|
|
24196
|
+
return (_a2 = Object.getOwnPropertyDescriptor(intent, key5)) == null ? void 0 : _a2.value;
|
|
24197
|
+
};
|
|
24198
|
+
const amount2 = own("amount");
|
|
24199
|
+
const currency = own("currency");
|
|
24200
|
+
return own("id") === intentId && Number.isSafeInteger(amount2) && amount2 === reviewed.amountMinor && typeof currency === "string" && /^[A-Za-z]{3}$/.test(currency) && currency.toUpperCase() === reviewed.currency;
|
|
24201
|
+
};
|
|
24202
|
+
var nativeSheetCardMethods = (intent) => {
|
|
24203
|
+
var _a2;
|
|
24204
|
+
if (!intent || typeof intent !== "object") return false;
|
|
24205
|
+
const methods = (_a2 = Object.getOwnPropertyDescriptor(intent, "paymentMethodTypes")) == null ? void 0 : _a2.value;
|
|
24206
|
+
return Array.isArray(methods) && methods.length === 1 && methods[0] === "card";
|
|
24207
|
+
};
|
|
24208
|
+
var createPaymentSheetConfirmation = (sdk, options) => {
|
|
24209
|
+
let active2 = false;
|
|
24210
|
+
const assertAfterPresentation = () => {
|
|
24211
|
+
try {
|
|
24212
|
+
options.assertCurrent();
|
|
24213
|
+
} catch (e) {
|
|
24214
|
+
throw paymentProviderError("The original payment owner changed.", "unknown");
|
|
24215
|
+
}
|
|
24216
|
+
};
|
|
24217
|
+
return async (clientSecret, billing) => {
|
|
24218
|
+
var _a2;
|
|
24219
|
+
if (active2)
|
|
24220
|
+
throw paymentProviderError("Another payment sheet is active.", "notStarted");
|
|
24221
|
+
const intentId = (_a2 = /^(pi_[A-Za-z0-9]+)_secret_[A-Za-z0-9]+$/.exec(clientSecret)) == null ? void 0 : _a2[1];
|
|
24222
|
+
if (!intentId || !options.merchantDisplayName.trim() || !options.returnURL)
|
|
24223
|
+
throw paymentProviderError("Payment sheet details are unavailable.", "notStarted");
|
|
24224
|
+
options.assertCurrent();
|
|
24225
|
+
active2 = true;
|
|
24226
|
+
try {
|
|
24227
|
+
const before = await sdk.retrievePaymentIntent(clientSecret);
|
|
24228
|
+
options.assertCurrent();
|
|
24229
|
+
const requireAdmittedIntent = (result4) => {
|
|
24230
|
+
if (result4.error || !nativeSheetIntentIdentity(result4.paymentIntent, intentId, options.reviewed))
|
|
24231
|
+
throw paymentProviderError(NATIVE_SHEET_REVIEW_REQUIRED, "notStarted");
|
|
24232
|
+
if (!nativeSheetCardMethods(result4.paymentIntent))
|
|
24233
|
+
throw paymentProviderError(NATIVE_SHEET_CARD_FIELD_MESSAGE, "notStarted", {
|
|
24234
|
+
code: NATIVE_SHEET_CARD_FIELD_REQUIRED
|
|
24235
|
+
});
|
|
24236
|
+
};
|
|
24237
|
+
requireAdmittedIntent(before);
|
|
24238
|
+
if (CONFIRMED_INTENT_STATUSES.includes(before.paymentIntent.status))
|
|
24239
|
+
return confirmedStripeIntentStatus(before.paymentIntent);
|
|
24240
|
+
const initialized = await sdk.initPaymentSheet({
|
|
24241
|
+
paymentIntentClientSecret: clientSecret,
|
|
24242
|
+
merchantDisplayName: options.merchantDisplayName,
|
|
24243
|
+
returnURL: options.returnURL,
|
|
24244
|
+
defaultBillingDetails: billing,
|
|
24245
|
+
customFlow: false,
|
|
24246
|
+
allowsDelayedPaymentMethods: false,
|
|
24247
|
+
// A native Link selection can have a different canonical fee class.
|
|
24248
|
+
// Do not infer equivalence from PI eligibility or a display preference.
|
|
24249
|
+
link: { display: sdk.LinkDisplay.NEVER }
|
|
24250
|
+
});
|
|
24251
|
+
if (initialized.error)
|
|
24252
|
+
throw paymentProviderError(NATIVE_SHEET_CARD_FIELD_MESSAGE, "notStarted", {
|
|
24253
|
+
code: NATIVE_SHEET_CARD_FIELD_REQUIRED
|
|
24254
|
+
});
|
|
24255
|
+
options.assertCurrent();
|
|
24256
|
+
const ready = await sdk.retrievePaymentIntent(clientSecret);
|
|
24257
|
+
options.assertCurrent();
|
|
24258
|
+
requireAdmittedIntent(ready);
|
|
24259
|
+
if (CONFIRMED_INTENT_STATUSES.includes(ready.paymentIntent.status))
|
|
24260
|
+
return confirmedStripeIntentStatus(ready.paymentIntent);
|
|
24261
|
+
const presented = await sdk.presentPaymentSheet();
|
|
24262
|
+
if (presented.error)
|
|
24263
|
+
throw paymentProviderError(
|
|
24264
|
+
presented.error.message || "Payment failed.",
|
|
24265
|
+
nativeStripeErrorOutcome(presented.error)
|
|
24266
|
+
);
|
|
24267
|
+
assertAfterPresentation();
|
|
24268
|
+
const result3 = await sdk.retrievePaymentIntent(clientSecret);
|
|
24269
|
+
if (result3.error || !nativeSheetIntentIdentity(result3.paymentIntent, intentId, options.reviewed) || !nativeSheetCardMethods(result3.paymentIntent))
|
|
24270
|
+
throw paymentProviderError(
|
|
24271
|
+
"The original payment could not be verified.",
|
|
24272
|
+
"unknown"
|
|
24273
|
+
);
|
|
24274
|
+
assertAfterPresentation();
|
|
24275
|
+
return confirmedStripeIntentStatus(result3.paymentIntent);
|
|
24276
|
+
} finally {
|
|
24277
|
+
active2 = false;
|
|
24278
|
+
}
|
|
24279
|
+
};
|
|
24280
|
+
};
|
|
24281
|
+
|
|
24282
|
+
// src/confirmer.ts
|
|
24172
24283
|
var toBillingDetails = (billing) => ({
|
|
24173
24284
|
email: billing.email,
|
|
24174
24285
|
name: `${billing.firstName} ${billing.lastName}`.trim(),
|
|
@@ -24191,23 +24302,169 @@ var stripeFailure = (error, fallback) => {
|
|
|
24191
24302
|
code: (_a2 = error.stripeErrorCode) != null ? _a2 : error.code
|
|
24192
24303
|
});
|
|
24193
24304
|
};
|
|
24305
|
+
var initKey = null;
|
|
24306
|
+
var accountKey = null;
|
|
24307
|
+
var listeners4 = /* @__PURE__ */ new Set();
|
|
24308
|
+
var initializedScheme;
|
|
24309
|
+
var initializing = false;
|
|
24310
|
+
var sheetPresenting = false;
|
|
24311
|
+
var nativeOperationActive = false;
|
|
24312
|
+
var sheetOwner = null;
|
|
24313
|
+
var assertNativeLeaseFree = () => {
|
|
24314
|
+
if (sheetOwner || initializing || nativeOperationActive)
|
|
24315
|
+
throw paymentProviderError(
|
|
24316
|
+
"The payment SDK is owned by another operation.",
|
|
24317
|
+
"notStarted"
|
|
24318
|
+
);
|
|
24319
|
+
};
|
|
24320
|
+
var nativeSdkCall = async (operation) => {
|
|
24321
|
+
assertNativeLeaseFree();
|
|
24322
|
+
nativeOperationActive = true;
|
|
24323
|
+
try {
|
|
24324
|
+
return await operation();
|
|
24325
|
+
} finally {
|
|
24326
|
+
nativeOperationActive = false;
|
|
24327
|
+
}
|
|
24328
|
+
};
|
|
24194
24329
|
var createRnStripeConfirmer = () => {
|
|
24195
|
-
|
|
24196
|
-
let accountKey = null;
|
|
24197
|
-
const listeners4 = /* @__PURE__ */ new Set();
|
|
24198
|
-
return {
|
|
24330
|
+
const adapter = {
|
|
24199
24331
|
init: async ({ publishableKey, accountId, merchantIdentifier, urlScheme }) => {
|
|
24200
|
-
const key5 =
|
|
24201
|
-
if (initKey === key5) return;
|
|
24202
|
-
await initStripe({
|
|
24332
|
+
const key5 = JSON.stringify([
|
|
24203
24333
|
publishableKey,
|
|
24204
|
-
|
|
24205
|
-
|
|
24206
|
-
|
|
24207
|
-
|
|
24208
|
-
|
|
24209
|
-
|
|
24210
|
-
|
|
24334
|
+
accountId != null ? accountId : null,
|
|
24335
|
+
merchantIdentifier != null ? merchantIdentifier : null,
|
|
24336
|
+
urlScheme != null ? urlScheme : null
|
|
24337
|
+
]);
|
|
24338
|
+
if (initializing || sheetOwner && sheetOwner.key !== key5)
|
|
24339
|
+
throw paymentProviderError(
|
|
24340
|
+
"The payment SDK is owned by another operation.",
|
|
24341
|
+
"notStarted"
|
|
24342
|
+
);
|
|
24343
|
+
if (initKey === key5) return;
|
|
24344
|
+
if (nativeOperationActive)
|
|
24345
|
+
throw paymentProviderError(
|
|
24346
|
+
"The payment SDK is owned by another operation.",
|
|
24347
|
+
"notStarted"
|
|
24348
|
+
);
|
|
24349
|
+
initializing = true;
|
|
24350
|
+
initKey = null;
|
|
24351
|
+
accountKey = null;
|
|
24352
|
+
initializedScheme = void 0;
|
|
24353
|
+
try {
|
|
24354
|
+
await initStripe({
|
|
24355
|
+
publishableKey,
|
|
24356
|
+
...accountId ? { stripeAccountId: accountId } : {},
|
|
24357
|
+
...merchantIdentifier ? { merchantIdentifier } : {},
|
|
24358
|
+
...urlScheme ? { urlScheme } : {}
|
|
24359
|
+
});
|
|
24360
|
+
initKey = key5;
|
|
24361
|
+
initializedScheme = urlScheme;
|
|
24362
|
+
accountKey = `${publishableKey}:${accountId != null ? accountId : ""}`;
|
|
24363
|
+
listeners4.forEach((listener) => listener());
|
|
24364
|
+
} finally {
|
|
24365
|
+
initializing = false;
|
|
24366
|
+
}
|
|
24367
|
+
},
|
|
24368
|
+
createPaymentSheetSession: (options) => {
|
|
24369
|
+
let running = false;
|
|
24370
|
+
let owner = null;
|
|
24371
|
+
let requiresCardField = false;
|
|
24372
|
+
let reviewed;
|
|
24373
|
+
return {
|
|
24374
|
+
requiresCardField: () => requiresCardField,
|
|
24375
|
+
cardFieldOperation: async (operation) => {
|
|
24376
|
+
if (running) {
|
|
24377
|
+
requiresCardField = true;
|
|
24378
|
+
throw paymentProviderError("Use the card form for this order.", "notStarted");
|
|
24379
|
+
}
|
|
24380
|
+
return operation();
|
|
24381
|
+
},
|
|
24382
|
+
confirmer: {
|
|
24383
|
+
...adapter,
|
|
24384
|
+
prepareCardPayment: async (context) => {
|
|
24385
|
+
if (!running) return;
|
|
24386
|
+
reviewed = stripeElementsPaymentContext(
|
|
24387
|
+
context == null ? void 0 : context.amountMinor,
|
|
24388
|
+
context == null ? void 0 : context.currency
|
|
24389
|
+
);
|
|
24390
|
+
if (!reviewed || !owner || sheetOwner !== owner) {
|
|
24391
|
+
throw paymentProviderError(NATIVE_SHEET_REVIEW_REQUIRED, "notStarted");
|
|
24392
|
+
}
|
|
24393
|
+
},
|
|
24394
|
+
confirmCard: async (clientSecret, billing) => {
|
|
24395
|
+
if (!running) return adapter.confirmCard(clientSecret, billing);
|
|
24396
|
+
if (requiresCardField)
|
|
24397
|
+
throw paymentProviderError(
|
|
24398
|
+
"Use the card form for this order.",
|
|
24399
|
+
"notStarted"
|
|
24400
|
+
);
|
|
24401
|
+
if (!owner || sheetOwner !== owner)
|
|
24402
|
+
throw paymentProviderError(
|
|
24403
|
+
"The payment sheet was not claimed.",
|
|
24404
|
+
"notStarted"
|
|
24405
|
+
);
|
|
24406
|
+
{
|
|
24407
|
+
if (sheetPresenting)
|
|
24408
|
+
throw paymentProviderError(
|
|
24409
|
+
"Another payment sheet is active.",
|
|
24410
|
+
"notStarted"
|
|
24411
|
+
);
|
|
24412
|
+
const confirm = createPaymentSheetConfirmation(
|
|
24413
|
+
{
|
|
24414
|
+
initPaymentSheet,
|
|
24415
|
+
presentPaymentSheet,
|
|
24416
|
+
retrievePaymentIntent,
|
|
24417
|
+
LinkDisplay
|
|
24418
|
+
},
|
|
24419
|
+
{
|
|
24420
|
+
...owner.options,
|
|
24421
|
+
reviewed,
|
|
24422
|
+
assertCurrent: () => {
|
|
24423
|
+
if (sheetOwner !== owner || initKey !== owner.key || initializing)
|
|
24424
|
+
throw paymentProviderError(
|
|
24425
|
+
"The original payment owner changed.",
|
|
24426
|
+
"notStarted"
|
|
24427
|
+
);
|
|
24428
|
+
}
|
|
24429
|
+
}
|
|
24430
|
+
);
|
|
24431
|
+
sheetPresenting = true;
|
|
24432
|
+
try {
|
|
24433
|
+
return await confirm(clientSecret, toBillingDetails(billing));
|
|
24434
|
+
} catch (error) {
|
|
24435
|
+
if ((error == null ? void 0 : error.providerCode) === NATIVE_SHEET_CARD_FIELD_REQUIRED)
|
|
24436
|
+
requiresCardField = true;
|
|
24437
|
+
throw error;
|
|
24438
|
+
} finally {
|
|
24439
|
+
sheetPresenting = false;
|
|
24440
|
+
}
|
|
24441
|
+
}
|
|
24442
|
+
}
|
|
24443
|
+
},
|
|
24444
|
+
run: async (operation) => {
|
|
24445
|
+
if (running)
|
|
24446
|
+
throw paymentProviderError("This payment is already active.", "notStarted");
|
|
24447
|
+
running = true;
|
|
24448
|
+
reviewed = void 0;
|
|
24449
|
+
let admitted = true;
|
|
24450
|
+
const claim = () => {
|
|
24451
|
+
if (!admitted || nativeOperationActive || initializing || !initKey || sheetOwner || !initializedScheme || options.returnURL !== `${initializedScheme}://stripe-redirect` || !options.merchantDisplayName.trim())
|
|
24452
|
+
return "unavailable";
|
|
24453
|
+
owner = { key: initKey, options: { ...options } };
|
|
24454
|
+
sheetOwner = owner;
|
|
24455
|
+
return "attached";
|
|
24456
|
+
};
|
|
24457
|
+
try {
|
|
24458
|
+
return await operation(claim);
|
|
24459
|
+
} finally {
|
|
24460
|
+
admitted = false;
|
|
24461
|
+
if (owner && sheetOwner === owner) sheetOwner = null;
|
|
24462
|
+
owner = null;
|
|
24463
|
+
reviewed = void 0;
|
|
24464
|
+
running = false;
|
|
24465
|
+
}
|
|
24466
|
+
}
|
|
24467
|
+
};
|
|
24211
24468
|
},
|
|
24212
24469
|
// `publishableKey:accountId`, the shape `bundleConfirmerKey` expects.
|
|
24213
24470
|
currentKey: () => accountKey,
|
|
@@ -24219,19 +24476,25 @@ var createRnStripeConfirmer = () => {
|
|
|
24219
24476
|
},
|
|
24220
24477
|
// Native statuses are already the port's PascalCase vocabulary — no normalize.
|
|
24221
24478
|
getIntentStatus: async (clientSecret) => {
|
|
24222
|
-
|
|
24479
|
+
assertNativeLeaseFree();
|
|
24480
|
+
const { paymentIntent } = await nativeSdkCall(
|
|
24481
|
+
() => retrievePaymentIntent(clientSecret)
|
|
24482
|
+
);
|
|
24223
24483
|
return paymentIntent == null ? void 0 : paymentIntent.status;
|
|
24224
24484
|
},
|
|
24225
24485
|
confirmCard: async (clientSecret, billing) => {
|
|
24226
|
-
|
|
24227
|
-
|
|
24228
|
-
|
|
24229
|
-
|
|
24486
|
+
assertNativeLeaseFree();
|
|
24487
|
+
const { error, paymentIntent } = await nativeSdkCall(
|
|
24488
|
+
() => confirmPayment(clientSecret, {
|
|
24489
|
+
paymentMethodType: "Card",
|
|
24490
|
+
paymentMethodData: { billingDetails: toBillingDetails(billing) }
|
|
24491
|
+
})
|
|
24492
|
+
);
|
|
24230
24493
|
if (error) throw stripeFailure(error, "Payment failed.");
|
|
24231
24494
|
return confirmedStripeIntentStatus(paymentIntent);
|
|
24232
24495
|
},
|
|
24233
24496
|
confirmApplePay: async (clientSecret, total, currencyCode, merchant) => {
|
|
24234
|
-
|
|
24497
|
+
assertNativeLeaseFree();
|
|
24235
24498
|
const context = stripeWalletPaymentContext(
|
|
24236
24499
|
total,
|
|
24237
24500
|
currencyCode,
|
|
@@ -24242,24 +24505,29 @@ var createRnStripeConfirmer = () => {
|
|
|
24242
24505
|
"The order wallet details are unavailable.",
|
|
24243
24506
|
"notStarted"
|
|
24244
24507
|
);
|
|
24245
|
-
const { error, paymentIntent } = await
|
|
24246
|
-
|
|
24247
|
-
|
|
24248
|
-
|
|
24249
|
-
|
|
24250
|
-
|
|
24251
|
-
|
|
24252
|
-
|
|
24253
|
-
|
|
24508
|
+
const { error, paymentIntent } = await nativeSdkCall(
|
|
24509
|
+
() => {
|
|
24510
|
+
var _a2;
|
|
24511
|
+
return confirmPlatformPayPayment(clientSecret, {
|
|
24512
|
+
applePay: {
|
|
24513
|
+
merchantCountryCode: context.merchantCountry,
|
|
24514
|
+
currencyCode: context.currency,
|
|
24515
|
+
cartItems: [
|
|
24516
|
+
{
|
|
24517
|
+
label: (_a2 = merchant.merchantName) != null ? _a2 : "Order",
|
|
24518
|
+
amount: context.amount,
|
|
24519
|
+
paymentType: PlatformPay.PaymentType.Immediate
|
|
24520
|
+
}
|
|
24521
|
+
]
|
|
24254
24522
|
}
|
|
24255
|
-
|
|
24523
|
+
});
|
|
24256
24524
|
}
|
|
24257
|
-
|
|
24525
|
+
);
|
|
24258
24526
|
if (error) throw stripeFailure(error, "Apple Pay failed.");
|
|
24259
24527
|
return confirmedStripeIntentStatus(paymentIntent);
|
|
24260
24528
|
},
|
|
24261
24529
|
confirmGooglePay: async (clientSecret, total, currencyCode, merchant) => {
|
|
24262
|
-
|
|
24530
|
+
assertNativeLeaseFree();
|
|
24263
24531
|
const context = stripeWalletPaymentContext(
|
|
24264
24532
|
total,
|
|
24265
24533
|
currencyCode,
|
|
@@ -24270,88 +24538,118 @@ var createRnStripeConfirmer = () => {
|
|
|
24270
24538
|
"The order wallet details are unavailable.",
|
|
24271
24539
|
"notStarted"
|
|
24272
24540
|
);
|
|
24273
|
-
const { error, paymentIntent } = await
|
|
24274
|
-
|
|
24275
|
-
|
|
24276
|
-
|
|
24277
|
-
|
|
24278
|
-
|
|
24541
|
+
const { error, paymentIntent } = await nativeSdkCall(
|
|
24542
|
+
() => {
|
|
24543
|
+
var _a2;
|
|
24544
|
+
return confirmPlatformPayPayment(clientSecret, {
|
|
24545
|
+
googlePay: {
|
|
24546
|
+
testEnv: merchant.testEnv === true,
|
|
24547
|
+
merchantCountryCode: context.merchantCountry,
|
|
24548
|
+
currencyCode: context.currency,
|
|
24549
|
+
merchantName: (_a2 = merchant.merchantName) != null ? _a2 : "Order"
|
|
24550
|
+
}
|
|
24551
|
+
});
|
|
24279
24552
|
}
|
|
24280
|
-
|
|
24553
|
+
);
|
|
24281
24554
|
if (error) throw stripeFailure(error, "Google Pay failed.");
|
|
24282
24555
|
return confirmedStripeIntentStatus(paymentIntent);
|
|
24283
24556
|
}
|
|
24284
24557
|
};
|
|
24558
|
+
return adapter;
|
|
24285
24559
|
};
|
|
24286
24560
|
var createRnPorts = () => ({
|
|
24287
24561
|
// The promise is handed back: a URL the device cannot open rejects, and the
|
|
24288
24562
|
// caller shows its failure (for example "We could not open the payment page").
|
|
24289
24563
|
openUrl: (url2) => Linking2.openURL(url2).then(() => void 0),
|
|
24290
24564
|
createCardPaymentMethod: async (billing) => {
|
|
24291
|
-
|
|
24292
|
-
|
|
24293
|
-
|
|
24294
|
-
|
|
24565
|
+
assertNativeLeaseFree();
|
|
24566
|
+
const { paymentMethod, error } = await nativeSdkCall(
|
|
24567
|
+
() => createPaymentMethod({
|
|
24568
|
+
paymentMethodType: "Card",
|
|
24569
|
+
paymentMethodData: { billingDetails: toBillingDetails(billing) }
|
|
24570
|
+
})
|
|
24571
|
+
);
|
|
24295
24572
|
if (error || !(paymentMethod == null ? void 0 : paymentMethod.id)) throw failed(error == null ? void 0 : error.message, "Payment failed");
|
|
24296
24573
|
return paymentMethod.id;
|
|
24297
24574
|
},
|
|
24298
24575
|
createRedirectPaymentMethod: async (methodType, billing) => {
|
|
24299
24576
|
var _a2, _b;
|
|
24577
|
+
assertNativeLeaseFree();
|
|
24300
24578
|
const details = toBillingDetails(billing);
|
|
24301
24579
|
const result3 = await (() => {
|
|
24302
24580
|
switch (methodType) {
|
|
24303
24581
|
case "klarna":
|
|
24304
|
-
return
|
|
24305
|
-
|
|
24306
|
-
|
|
24307
|
-
|
|
24582
|
+
return nativeSdkCall(
|
|
24583
|
+
() => createPaymentMethod({
|
|
24584
|
+
paymentMethodType: "Klarna",
|
|
24585
|
+
paymentMethodData: { billingDetails: details }
|
|
24586
|
+
})
|
|
24587
|
+
);
|
|
24308
24588
|
case "afterpay_clearpay":
|
|
24309
|
-
return
|
|
24310
|
-
|
|
24311
|
-
|
|
24312
|
-
|
|
24589
|
+
return nativeSdkCall(
|
|
24590
|
+
() => createPaymentMethod({
|
|
24591
|
+
paymentMethodType: "AfterpayClearpay",
|
|
24592
|
+
paymentMethodData: { billingDetails: details, shippingDetails: details }
|
|
24593
|
+
})
|
|
24594
|
+
);
|
|
24313
24595
|
case "affirm":
|
|
24314
|
-
return
|
|
24315
|
-
|
|
24316
|
-
|
|
24317
|
-
|
|
24596
|
+
return nativeSdkCall(
|
|
24597
|
+
() => createPaymentMethod({
|
|
24598
|
+
paymentMethodType: "Affirm",
|
|
24599
|
+
paymentMethodData: { billingDetails: details }
|
|
24600
|
+
})
|
|
24601
|
+
);
|
|
24318
24602
|
case "ideal":
|
|
24319
|
-
return
|
|
24320
|
-
|
|
24321
|
-
|
|
24322
|
-
|
|
24603
|
+
return nativeSdkCall(
|
|
24604
|
+
() => createPaymentMethod({
|
|
24605
|
+
paymentMethodType: "Ideal",
|
|
24606
|
+
paymentMethodData: { billingDetails: details }
|
|
24607
|
+
})
|
|
24608
|
+
);
|
|
24323
24609
|
case "bancontact":
|
|
24324
|
-
return
|
|
24325
|
-
|
|
24326
|
-
|
|
24327
|
-
|
|
24610
|
+
return nativeSdkCall(
|
|
24611
|
+
() => createPaymentMethod({
|
|
24612
|
+
paymentMethodType: "Bancontact",
|
|
24613
|
+
paymentMethodData: { billingDetails: details }
|
|
24614
|
+
})
|
|
24615
|
+
);
|
|
24328
24616
|
case "eps":
|
|
24329
|
-
return
|
|
24330
|
-
|
|
24331
|
-
|
|
24332
|
-
|
|
24617
|
+
return nativeSdkCall(
|
|
24618
|
+
() => createPaymentMethod({
|
|
24619
|
+
paymentMethodType: "Eps",
|
|
24620
|
+
paymentMethodData: { billingDetails: details }
|
|
24621
|
+
})
|
|
24622
|
+
);
|
|
24333
24623
|
case "p24":
|
|
24334
|
-
return
|
|
24335
|
-
|
|
24336
|
-
|
|
24337
|
-
|
|
24624
|
+
return nativeSdkCall(
|
|
24625
|
+
() => createPaymentMethod({
|
|
24626
|
+
paymentMethodType: "P24",
|
|
24627
|
+
paymentMethodData: { billingDetails: details }
|
|
24628
|
+
})
|
|
24629
|
+
);
|
|
24338
24630
|
case "alipay":
|
|
24339
|
-
return createPaymentMethod({ paymentMethodType: "Alipay" });
|
|
24631
|
+
return nativeSdkCall(() => createPaymentMethod({ paymentMethodType: "Alipay" }));
|
|
24340
24632
|
case "grabpay":
|
|
24341
|
-
return
|
|
24342
|
-
|
|
24343
|
-
|
|
24344
|
-
|
|
24633
|
+
return nativeSdkCall(
|
|
24634
|
+
() => createPaymentMethod({
|
|
24635
|
+
paymentMethodType: "GrabPay",
|
|
24636
|
+
paymentMethodData: { billingDetails: details }
|
|
24637
|
+
})
|
|
24638
|
+
);
|
|
24345
24639
|
case "cashapp":
|
|
24346
|
-
return
|
|
24347
|
-
|
|
24348
|
-
|
|
24349
|
-
|
|
24640
|
+
return nativeSdkCall(
|
|
24641
|
+
() => createPaymentMethod({
|
|
24642
|
+
paymentMethodType: "CashApp",
|
|
24643
|
+
paymentMethodData: { billingDetails: details }
|
|
24644
|
+
})
|
|
24645
|
+
);
|
|
24350
24646
|
case "paypal":
|
|
24351
|
-
return
|
|
24352
|
-
|
|
24353
|
-
|
|
24354
|
-
|
|
24647
|
+
return nativeSdkCall(
|
|
24648
|
+
() => createPaymentMethod({
|
|
24649
|
+
paymentMethodType: "PayPal",
|
|
24650
|
+
paymentMethodData: { billingDetails: details }
|
|
24651
|
+
})
|
|
24652
|
+
);
|
|
24355
24653
|
default:
|
|
24356
24654
|
throw new Error("This payment method is not available on this device.");
|
|
24357
24655
|
}
|
|
@@ -24361,24 +24659,31 @@ var createRnPorts = () => ({
|
|
|
24361
24659
|
return result3.paymentMethod.id;
|
|
24362
24660
|
},
|
|
24363
24661
|
handleNextAction: async (clientSecret) => {
|
|
24364
|
-
|
|
24662
|
+
assertNativeLeaseFree();
|
|
24663
|
+
const { error } = await nativeSdkCall(() => handleNextAction(clientSecret));
|
|
24365
24664
|
if (error) throw stripeFailure(error, "Payment failed");
|
|
24366
24665
|
},
|
|
24367
24666
|
confirmOxxo: async (clientSecret, billing) => {
|
|
24368
|
-
|
|
24369
|
-
|
|
24370
|
-
|
|
24371
|
-
|
|
24667
|
+
assertNativeLeaseFree();
|
|
24668
|
+
const { error, paymentIntent } = await nativeSdkCall(
|
|
24669
|
+
() => confirmPayment(clientSecret, {
|
|
24670
|
+
paymentMethodType: "Oxxo",
|
|
24671
|
+
paymentMethodData: { billingDetails: toBillingDetails(billing) }
|
|
24672
|
+
})
|
|
24673
|
+
);
|
|
24372
24674
|
return { error: error == null ? void 0 : error.message, nextAction: paymentIntent == null ? void 0 : paymentIntent.nextAction };
|
|
24373
24675
|
},
|
|
24374
24676
|
// Payment plan (new card): confirm the SetupIntent to SAVE the card (nothing
|
|
24375
24677
|
// charged) and return its PaymentMethod id for the server-side plan.
|
|
24376
24678
|
confirmPaymentPlanSetup: async (clientSecret, billing) => {
|
|
24377
24679
|
var _a2;
|
|
24378
|
-
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24680
|
+
assertNativeLeaseFree();
|
|
24681
|
+
const { setupIntent, error } = await nativeSdkCall(
|
|
24682
|
+
() => confirmSetupIntent(clientSecret, {
|
|
24683
|
+
paymentMethodType: "Card",
|
|
24684
|
+
paymentMethodData: { billingDetails: toBillingDetails(billing) }
|
|
24685
|
+
})
|
|
24686
|
+
);
|
|
24382
24687
|
const paymentMethodId = (_a2 = setupIntent == null ? void 0 : setupIntent.paymentMethod) == null ? void 0 : _a2.id;
|
|
24383
24688
|
if (error || !paymentMethodId) throw failed(error == null ? void 0 : error.message, "Card setup failed");
|
|
24384
24689
|
return paymentMethodId;
|
|
@@ -24386,10 +24691,13 @@ var createRnPorts = () => ({
|
|
|
24386
24691
|
// Payment plan (saved-card 3DS): confirm the pending charge against the
|
|
24387
24692
|
// existing PaymentMethod when the plan comes back requires_action.
|
|
24388
24693
|
confirmSavedCardPayment: async (clientSecret, paymentMethodId) => {
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24694
|
+
assertNativeLeaseFree();
|
|
24695
|
+
const { error } = await nativeSdkCall(
|
|
24696
|
+
() => confirmPayment(clientSecret, {
|
|
24697
|
+
paymentMethodType: "Card",
|
|
24698
|
+
paymentMethodData: { paymentMethodId }
|
|
24699
|
+
})
|
|
24700
|
+
);
|
|
24393
24701
|
if (error) throw stripeFailure(error, "Payment failed");
|
|
24394
24702
|
}
|
|
24395
24703
|
});
|
|
@@ -24399,11 +24707,61 @@ var rnConfirmer = createRnStripeConfirmer();
|
|
|
24399
24707
|
var rnPorts = createRnPorts();
|
|
24400
24708
|
|
|
24401
24709
|
// src/useCheckout.ts
|
|
24402
|
-
var useCheckout2 = (opts = {}) =>
|
|
24403
|
-
|
|
24404
|
-
|
|
24405
|
-
|
|
24406
|
-
|
|
24710
|
+
var useCheckout2 = (opts = {}) => {
|
|
24711
|
+
var _a2;
|
|
24712
|
+
const [sheetConfig] = useState35(
|
|
24713
|
+
() => opts.paymentSheet ? { ...opts.paymentSheet } : void 0
|
|
24714
|
+
);
|
|
24715
|
+
const [sheetScheme] = useState35(() => {
|
|
24716
|
+
var _a3;
|
|
24717
|
+
return (_a3 = opts.options) == null ? void 0 : _a3.urlScheme;
|
|
24718
|
+
});
|
|
24719
|
+
const [sheet] = useState35(
|
|
24720
|
+
() => sheetConfig ? rnConfirmer.createPaymentSheetSession(sheetConfig) : void 0
|
|
24721
|
+
);
|
|
24722
|
+
const nativePorts = { ...rnPorts, ...opts.ports };
|
|
24723
|
+
const checkout = useCheckout({
|
|
24724
|
+
// A Pay without its own claim uses the default ticket field (`checkout`).
|
|
24725
|
+
ports: {
|
|
24726
|
+
confirmer: (_a2 = sheet == null ? void 0 : sheet.confirmer) != null ? _a2 : rnConfirmer,
|
|
24727
|
+
claimDefaultCardField,
|
|
24728
|
+
...nativePorts,
|
|
24729
|
+
...sheet && nativePorts.createCardPaymentMethod ? {
|
|
24730
|
+
createCardPaymentMethod: (billing) => sheet.cardFieldOperation(
|
|
24731
|
+
() => nativePorts.createCardPaymentMethod(billing)
|
|
24732
|
+
)
|
|
24733
|
+
} : {}
|
|
24734
|
+
},
|
|
24735
|
+
options: opts.options
|
|
24736
|
+
});
|
|
24737
|
+
return {
|
|
24738
|
+
...checkout,
|
|
24739
|
+
paymentSheet: sheet && !sheet.requiresCardField() ? {
|
|
24740
|
+
placeOrder: () => {
|
|
24741
|
+
var _a3, _b, _c, _d;
|
|
24742
|
+
if (sheet.requiresCardField())
|
|
24743
|
+
return Promise.reject(
|
|
24744
|
+
paymentProviderError(NATIVE_SHEET_CARD_FIELD_MESSAGE, "notStarted")
|
|
24745
|
+
);
|
|
24746
|
+
if (!((_a3 = opts.options) == null ? void 0 : _a3.urlScheme) || !(sheetConfig == null ? void 0 : sheetConfig.merchantDisplayName.trim()) || opts.options.urlScheme !== sheetScheme || ((_b = opts.paymentSheet) == null ? void 0 : _b.merchantDisplayName) !== (sheetConfig == null ? void 0 : sheetConfig.merchantDisplayName) || ((_c = opts.paymentSheet) == null ? void 0 : _c.returnURL) !== (sheetConfig == null ? void 0 : sheetConfig.returnURL) || ((_d = opts.paymentSheet) == null ? void 0 : _d.returnURL) !== `${opts.options.urlScheme}://stripe-redirect`)
|
|
24747
|
+
return Promise.reject(
|
|
24748
|
+
paymentProviderError(
|
|
24749
|
+
"The payment return route is not configured.",
|
|
24750
|
+
"notStarted"
|
|
24751
|
+
)
|
|
24752
|
+
);
|
|
24753
|
+
if (!nativePaymentSheetAvailable(checkout.store.getState()))
|
|
24754
|
+
return Promise.reject(
|
|
24755
|
+
paymentProviderError(
|
|
24756
|
+
"Use the installment card form for this currency.",
|
|
24757
|
+
"notStarted"
|
|
24758
|
+
)
|
|
24759
|
+
);
|
|
24760
|
+
return sheet.run((claimCard) => checkout.placeOrder("card", { claimCard }));
|
|
24761
|
+
}
|
|
24762
|
+
} : void 0
|
|
24763
|
+
};
|
|
24764
|
+
};
|
|
24407
24765
|
|
|
24408
24766
|
// src/storage.ts
|
|
24409
24767
|
import { MMKV } from "react-native-mmkv";
|
|
@@ -24440,7 +24798,7 @@ var configureCheckout = (config) => configure({
|
|
|
24440
24798
|
});
|
|
24441
24799
|
|
|
24442
24800
|
// src/ui/Field.tsx
|
|
24443
|
-
import { useMemo as useMemo18, useState as
|
|
24801
|
+
import { useMemo as useMemo18, useState as useState36 } from "react";
|
|
24444
24802
|
import {
|
|
24445
24803
|
Pressable as Pressable3,
|
|
24446
24804
|
StyleSheet as StyleSheet5,
|
|
@@ -24477,7 +24835,7 @@ var Input = ({
|
|
|
24477
24835
|
const editable = editableProp && !frozen;
|
|
24478
24836
|
const theme = useTheme();
|
|
24479
24837
|
const s9 = useFieldStyles(theme);
|
|
24480
|
-
const [focused, setFocused] =
|
|
24838
|
+
const [focused, setFocused] = useState36(false);
|
|
24481
24839
|
return /* @__PURE__ */ jsx7(
|
|
24482
24840
|
TextInput,
|
|
24483
24841
|
{
|
|
@@ -24584,7 +24942,7 @@ var useFieldStyles = (theme) => useMemo18(
|
|
|
24584
24942
|
);
|
|
24585
24943
|
|
|
24586
24944
|
// src/ui/Select.tsx
|
|
24587
|
-
import { useMemo as useMemo19, useState as
|
|
24945
|
+
import { useCallback as useCallback15, useEffect as useEffect27, useMemo as useMemo19, useRef as useRef30, useState as useState37 } from "react";
|
|
24588
24946
|
import { FlatList, Modal as Modal3, Pressable as Pressable4, StyleSheet as StyleSheet6, Text as Text5, View as View5 } from "react-native";
|
|
24589
24947
|
import { Fragment, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
24590
24948
|
function Select({
|
|
@@ -24599,7 +24957,18 @@ function Select({
|
|
|
24599
24957
|
const disabled = disabledProp || frozen;
|
|
24600
24958
|
const theme = useTheme();
|
|
24601
24959
|
const s9 = useSelectStyles(theme);
|
|
24602
|
-
const [open, setOpen] =
|
|
24960
|
+
const [open, setOpen] = useState37(false);
|
|
24961
|
+
const interaction = useRef30({ disabled, open: false, revision: 0 });
|
|
24962
|
+
interaction.current.disabled = disabled;
|
|
24963
|
+
const revision = interaction.current.revision;
|
|
24964
|
+
const close = useCallback15(() => {
|
|
24965
|
+
interaction.current.open = false;
|
|
24966
|
+
interaction.current.revision += 1;
|
|
24967
|
+
setOpen(false);
|
|
24968
|
+
}, []);
|
|
24969
|
+
useEffect27(() => {
|
|
24970
|
+
if (disabled && interaction.current.open) close();
|
|
24971
|
+
}, [disabled, close]);
|
|
24603
24972
|
const selected = options.find((o) => o.value === value6);
|
|
24604
24973
|
return /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
24605
24974
|
/* @__PURE__ */ jsxs6(
|
|
@@ -24607,7 +24976,12 @@ function Select({
|
|
|
24607
24976
|
{
|
|
24608
24977
|
accessibilityRole: "button",
|
|
24609
24978
|
disabled,
|
|
24610
|
-
onPress: () =>
|
|
24979
|
+
onPress: () => {
|
|
24980
|
+
if (interaction.current.disabled) return;
|
|
24981
|
+
interaction.current.open = true;
|
|
24982
|
+
interaction.current.revision += 1;
|
|
24983
|
+
setOpen(true);
|
|
24984
|
+
},
|
|
24611
24985
|
style: [s9.control, invalid3 && s9.controlInvalid, disabled && s9.controlDisabled],
|
|
24612
24986
|
children: [
|
|
24613
24987
|
/* @__PURE__ */ jsx8(Text5, { style: [s9.value, !selected && s9.placeholder], numberOfLines: 1, children: selected ? selected.label : placeholder }),
|
|
@@ -24618,11 +24992,11 @@ function Select({
|
|
|
24618
24992
|
/* @__PURE__ */ jsx8(
|
|
24619
24993
|
Modal3,
|
|
24620
24994
|
{
|
|
24621
|
-
visible: open,
|
|
24995
|
+
visible: open && !disabled,
|
|
24622
24996
|
transparent: true,
|
|
24623
24997
|
animationType: "fade",
|
|
24624
|
-
onRequestClose:
|
|
24625
|
-
children: /* @__PURE__ */ jsx8(Pressable4, { style: s9.backdrop, onPress:
|
|
24998
|
+
onRequestClose: close,
|
|
24999
|
+
children: /* @__PURE__ */ jsx8(Pressable4, { style: s9.backdrop, onPress: close, children: /* @__PURE__ */ jsx8(Pressable4, { style: s9.sheet, onPress: () => {
|
|
24626
25000
|
}, children: /* @__PURE__ */ jsx8(
|
|
24627
25001
|
FlatList,
|
|
24628
25002
|
{
|
|
@@ -24635,9 +25009,13 @@ function Select({
|
|
|
24635
25009
|
Pressable4,
|
|
24636
25010
|
{
|
|
24637
25011
|
style: s9.option,
|
|
25012
|
+
disabled,
|
|
24638
25013
|
onPress: () => {
|
|
25014
|
+
const current5 = interaction.current;
|
|
25015
|
+
if (current5.disabled || !current5.open || current5.revision !== revision)
|
|
25016
|
+
return;
|
|
24639
25017
|
onChange(item.value);
|
|
24640
|
-
|
|
25018
|
+
close();
|
|
24641
25019
|
},
|
|
24642
25020
|
children: [
|
|
24643
25021
|
/* @__PURE__ */ jsx8(Text5, { style: [s9.optionLabel, isSelected && s9.optionLabelSelected], children: item.label }),
|
|
@@ -24853,7 +25231,7 @@ var useTimerStyles = (theme) => useMemo21(
|
|
|
24853
25231
|
);
|
|
24854
25232
|
|
|
24855
25233
|
// src/ui/TimerBanner.tsx
|
|
24856
|
-
import { useMemo as useMemo22, useState as
|
|
25234
|
+
import { useMemo as useMemo22, useState as useState38 } from "react";
|
|
24857
25235
|
import { Pressable as Pressable6, StyleSheet as StyleSheet9, Text as Text8, View as View8 } from "react-native";
|
|
24858
25236
|
import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
24859
25237
|
var clock2 = (s9) => {
|
|
@@ -24868,7 +25246,7 @@ var TimerBanner = ({
|
|
|
24868
25246
|
}) => {
|
|
24869
25247
|
const theme = useTheme();
|
|
24870
25248
|
const s9 = useBannerStyles(theme);
|
|
24871
|
-
const [dismissed, setDismissed] =
|
|
25249
|
+
const [dismissed, setDismissed] = useState38(false);
|
|
24872
25250
|
if (seconds2 === void 0 || seconds2 <= 0 || dismissed) return null;
|
|
24873
25251
|
const urgent = seconds2 <= urgentAt;
|
|
24874
25252
|
return (
|
|
@@ -25056,18 +25434,18 @@ var useStyles3 = (theme) => useMemo23(
|
|
|
25056
25434
|
// src/sections/Tickets.tsx
|
|
25057
25435
|
import {
|
|
25058
25436
|
Fragment as Fragment2,
|
|
25059
|
-
useEffect as
|
|
25437
|
+
useEffect as useEffect28,
|
|
25060
25438
|
useMemo as useMemo24,
|
|
25061
|
-
useRef as
|
|
25062
|
-
useState as
|
|
25439
|
+
useRef as useRef31,
|
|
25440
|
+
useState as useState39
|
|
25063
25441
|
} from "react";
|
|
25064
25442
|
import { Pressable as Pressable8, StyleSheet as StyleSheet11, Text as Text10, View as View10 } from "react-native";
|
|
25065
25443
|
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
25066
25444
|
var money = (sym, n) => `${sym} ${Number(n).toFixed(2)}`;
|
|
25067
25445
|
var WaitingListForm = ({ ticket, onJoin }) => {
|
|
25068
|
-
const [form, setForm] =
|
|
25069
|
-
const [state, setState] =
|
|
25070
|
-
const [error, setError] =
|
|
25446
|
+
const [form, setForm] = useState39({ firstName: "", lastName: "", email: "" });
|
|
25447
|
+
const [state, setState] = useState39("idle");
|
|
25448
|
+
const [error, setError] = useState39("");
|
|
25071
25449
|
const ok = Boolean(form.firstName.trim() && form.lastName.trim() && form.email.trim());
|
|
25072
25450
|
if (state === "done")
|
|
25073
25451
|
return /* @__PURE__ */ jsx13(MutedText, { children: "You\u2019re on the waiting list \u2014 we\u2019ll email you if a spot opens." });
|
|
@@ -25141,8 +25519,8 @@ var Tickets = ({
|
|
|
25141
25519
|
const bundleStarting = bundleWait !== null;
|
|
25142
25520
|
const promoMeta = (_a2 = ticketsQuery.data) == null ? void 0 : _a2.promo;
|
|
25143
25521
|
const showWaitingList = (_c = (_b = ticketsQuery.data) == null ? void 0 : _b.showWaitingList) != null ? _c : false;
|
|
25144
|
-
const [qty, setQty] =
|
|
25145
|
-
const [slotDate, setSlotDate] =
|
|
25522
|
+
const [qty, setQty] = useState39({});
|
|
25523
|
+
const [slotDate, setSlotDate] = useState39("");
|
|
25146
25524
|
const eventInfo = hooks_exports.useEvent(eventId).data;
|
|
25147
25525
|
const isTimeSlot = Boolean((timeSlotDates == null ? void 0 : timeSlotDates.length) || (eventInfo == null ? void 0 : eventInfo.isTimeSlotEvent));
|
|
25148
25526
|
const dates = useMemo24(
|
|
@@ -25152,7 +25530,7 @@ var Tickets = ({
|
|
|
25152
25530
|
},
|
|
25153
25531
|
[timeSlotDates, eventInfo == null ? void 0 : eventInfo.availableDates]
|
|
25154
25532
|
);
|
|
25155
|
-
|
|
25533
|
+
useEffect28(() => {
|
|
25156
25534
|
if (isTimeSlot && !slotDate && dates.length) setSlotDate(dates[0]);
|
|
25157
25535
|
}, [isTimeSlot, slotDate, dates]);
|
|
25158
25536
|
const slotQuery = hooks_exports.useTimeSlotTickets(eventId, isTimeSlot ? slotDate : void 0);
|
|
@@ -25163,10 +25541,10 @@ var Tickets = ({
|
|
|
25163
25541
|
},
|
|
25164
25542
|
[isTimeSlot, slotQuery.data, (_d = ticketsQuery.data) == null ? void 0 : _d.tickets]
|
|
25165
25543
|
);
|
|
25166
|
-
const [error, setError] =
|
|
25167
|
-
const [code, setCode] =
|
|
25168
|
-
const [codeState, setCodeState] =
|
|
25169
|
-
const [promoOpen, setPromoOpen] =
|
|
25544
|
+
const [error, setError] = useState39("");
|
|
25545
|
+
const [code, setCode] = useState39("");
|
|
25546
|
+
const [codeState, setCodeState] = useState39("idle");
|
|
25547
|
+
const [promoOpen, setPromoOpen] = useState39(false);
|
|
25170
25548
|
hooks_exports.useOnEventChange(eventId, () => {
|
|
25171
25549
|
setQty({});
|
|
25172
25550
|
setSlotDate("");
|
|
@@ -25174,10 +25552,10 @@ var Tickets = ({
|
|
|
25174
25552
|
setPromoOpen(false);
|
|
25175
25553
|
setError("");
|
|
25176
25554
|
});
|
|
25177
|
-
const [wlOpen, setWlOpen] =
|
|
25178
|
-
const [visibleDescription, setVisibleDescription] =
|
|
25179
|
-
const attributionEvent =
|
|
25180
|
-
|
|
25555
|
+
const [wlOpen, setWlOpen] = useState39({});
|
|
25556
|
+
const [visibleDescription, setVisibleDescription] = useState39(null);
|
|
25557
|
+
const attributionEvent = useRef31(null);
|
|
25558
|
+
useEffect28(() => {
|
|
25181
25559
|
var _a3;
|
|
25182
25560
|
if (attributionEvent.current === eventId) return;
|
|
25183
25561
|
attributionEvent.current = eventId;
|
|
@@ -25195,7 +25573,7 @@ var Tickets = ({
|
|
|
25195
25573
|
});
|
|
25196
25574
|
}
|
|
25197
25575
|
}, [eventId, initialPromoCode, referrer, readAttributionFromUrl]);
|
|
25198
|
-
|
|
25576
|
+
useEffect28(() => {
|
|
25199
25577
|
checkout.syncCurrency(eventId, void 0, { seed: true }).catch(() => void 0);
|
|
25200
25578
|
}, [eventId]);
|
|
25201
25579
|
const changeCurrency = (nextCode) => {
|
|
@@ -25206,8 +25584,8 @@ var Tickets = ({
|
|
|
25206
25584
|
}
|
|
25207
25585
|
}).catch(() => void 0);
|
|
25208
25586
|
};
|
|
25209
|
-
const originals =
|
|
25210
|
-
|
|
25587
|
+
const originals = useRef31({});
|
|
25588
|
+
useEffect28(() => {
|
|
25211
25589
|
for (const t of tickets)
|
|
25212
25590
|
if (originals.current[t.id] == null) originals.current[t.id] = t.price;
|
|
25213
25591
|
}, [tickets]);
|
|
@@ -25691,7 +26069,7 @@ var SeatsIoMap = ({ eventId, initial, onContinue }) => {
|
|
|
25691
26069
|
};
|
|
25692
26070
|
|
|
25693
26071
|
// src/sections/SeatMap.tsx
|
|
25694
|
-
import { useEffect as
|
|
26072
|
+
import { useEffect as useEffect29, useMemo as useMemo26, useRef as useRef32, useState as useState40 } from "react";
|
|
25695
26073
|
import { StyleSheet as StyleSheet12, Text as Text11, View as View12 } from "react-native";
|
|
25696
26074
|
import { WebView as WebView3 } from "react-native-webview";
|
|
25697
26075
|
|
|
@@ -25707,9 +26085,9 @@ var SeatMap = ({ eventId, onContinue }) => {
|
|
|
25707
26085
|
const theme = useTheme();
|
|
25708
26086
|
const flow = hooks_exports.useSeatSelection(eventId, checkout, onContinue);
|
|
25709
26087
|
const bundleStarting = hooks_exports.useBundleStarting(checkout.store);
|
|
25710
|
-
const webview =
|
|
25711
|
-
const [rendererError, setRendererError] =
|
|
25712
|
-
const [size, setSize] =
|
|
26088
|
+
const webview = useRef32(null);
|
|
26089
|
+
const [rendererError, setRendererError] = useState40(false);
|
|
26090
|
+
const [size, setSize] = useState40(320);
|
|
25713
26091
|
const properties = flow.chart.state === "ready" ? {
|
|
25714
26092
|
seatData: flow.chart.data.seatData,
|
|
25715
26093
|
statuses: flow.statuses,
|
|
@@ -25736,7 +26114,7 @@ var SeatMap = ({ eventId, onContinue }) => {
|
|
|
25736
26114
|
`window.__tfSeatMapUpdate&&window.__tfSeatMapUpdate(${safeJson2(properties)});true;`
|
|
25737
26115
|
);
|
|
25738
26116
|
};
|
|
25739
|
-
|
|
26117
|
+
useEffect29(update, [properties && safeJson2(properties)]);
|
|
25740
26118
|
if (flow.chart.state === "provider") return /* @__PURE__ */ jsx15(SeatsIoMap, { eventId, initial: flow.chart.data, onContinue });
|
|
25741
26119
|
return /* @__PURE__ */ jsx15(FrozenFields, { frozen: checkout.orderFixed, children: /* @__PURE__ */ jsxs13(Card, { children: [
|
|
25742
26120
|
/* @__PURE__ */ jsx15(SectionHeader, { title: "Select your seats" }),
|
|
@@ -25923,7 +26301,15 @@ var CustomFieldInput = ({
|
|
|
25923
26301
|
case "textarea":
|
|
25924
26302
|
return /* @__PURE__ */ jsxs14(Field, { label: field.label, required: field.required, error, children: [
|
|
25925
26303
|
desc,
|
|
25926
|
-
/* @__PURE__ */ jsx16(
|
|
26304
|
+
/* @__PURE__ */ jsx16(
|
|
26305
|
+
Input,
|
|
26306
|
+
{
|
|
26307
|
+
multiline: true,
|
|
26308
|
+
value: asString(value6),
|
|
26309
|
+
onChangeText: onChange,
|
|
26310
|
+
invalid: invalid3
|
|
26311
|
+
}
|
|
26312
|
+
)
|
|
25927
26313
|
] });
|
|
25928
26314
|
case "select":
|
|
25929
26315
|
case "radio": {
|
|
@@ -26536,10 +26922,10 @@ var useBundleStyles = (theme) => useMemo28(
|
|
|
26536
26922
|
// src/sections/BillingInfo.tsx
|
|
26537
26923
|
import {
|
|
26538
26924
|
Fragment as Fragment10,
|
|
26539
|
-
useEffect as
|
|
26925
|
+
useEffect as useEffect30,
|
|
26540
26926
|
useMemo as useMemo29,
|
|
26541
|
-
useRef as
|
|
26542
|
-
useState as
|
|
26927
|
+
useRef as useRef33,
|
|
26928
|
+
useState as useState43
|
|
26543
26929
|
} from "react";
|
|
26544
26930
|
import { Linking as Linking3, Pressable as Pressable10, StyleSheet as StyleSheet17, Text as Text15, View as View20 } from "react-native";
|
|
26545
26931
|
|
|
@@ -26648,11 +27034,11 @@ var styles4 = StyleSheet15.create({
|
|
|
26648
27034
|
});
|
|
26649
27035
|
|
|
26650
27036
|
// src/sections/billing/PhoneIdentity.tsx
|
|
26651
|
-
import { useState as
|
|
27037
|
+
import { useState as useState42 } from "react";
|
|
26652
27038
|
import { Text as Text14, View as View18 } from "react-native";
|
|
26653
27039
|
|
|
26654
27040
|
// src/auth/TwoFactorForm.tsx
|
|
26655
|
-
import { useState as
|
|
27041
|
+
import { useState as useState41 } from "react";
|
|
26656
27042
|
import { View as View17 } from "react-native";
|
|
26657
27043
|
import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
26658
27044
|
var TwoFactorForm = ({
|
|
@@ -26665,7 +27051,7 @@ var TwoFactorForm = ({
|
|
|
26665
27051
|
onSendSms,
|
|
26666
27052
|
onCancel
|
|
26667
27053
|
}) => {
|
|
26668
|
-
const [code, setCode] =
|
|
27054
|
+
const [code, setCode] = useState41("");
|
|
26669
27055
|
return /* @__PURE__ */ jsxs18(View17, { style: { gap: 14 }, children: [
|
|
26670
27056
|
/* @__PURE__ */ jsx20(MutedText, { children: "Enter the six-digit code from your authenticator app or registered phone to complete sign-in." }),
|
|
26671
27057
|
error ? /* @__PURE__ */ jsx20(ErrorText, { children: error }) : null,
|
|
@@ -26717,8 +27103,8 @@ var PhoneIdentity = ({
|
|
|
26717
27103
|
}) => {
|
|
26718
27104
|
var _a2;
|
|
26719
27105
|
const identity = hooks_exports.useCheckoutPhoneIdentity(options);
|
|
26720
|
-
const [code, setCode] =
|
|
26721
|
-
const [emailInstead, setEmailInstead] =
|
|
27106
|
+
const [code, setCode] = useState42("");
|
|
27107
|
+
const [emailInstead, setEmailInstead] = useState42(false);
|
|
26722
27108
|
if (emailInstead) return null;
|
|
26723
27109
|
if (identity.challenge)
|
|
26724
27110
|
return /* @__PURE__ */ jsx21(
|
|
@@ -27033,17 +27419,17 @@ var BillingInfo = ({
|
|
|
27033
27419
|
const profile = hooks_exports.useCheckoutBuyerProfile(eventId);
|
|
27034
27420
|
const event = hooks_exports.useEvent(eventId);
|
|
27035
27421
|
const combined = !onContinue;
|
|
27036
|
-
const [billing, setBilling] =
|
|
27422
|
+
const [billing, setBilling] = useState43(
|
|
27037
27423
|
() => billingDraftFrom(checkout.billing)
|
|
27038
27424
|
);
|
|
27039
|
-
const [dataCapture, setDataCapture] =
|
|
27425
|
+
const [dataCapture, setDataCapture] = useState43(
|
|
27040
27426
|
(_b = (_a2 = checkout.billing) == null ? void 0 : _a2.dataCapture) != null ? _b : {}
|
|
27041
27427
|
);
|
|
27042
|
-
const [holders, setHolders] =
|
|
27428
|
+
const [holders, setHolders] = useState43(
|
|
27043
27429
|
() => holderDraftsFrom(checkout.holders, checkout.backfilledHolderIndexes)
|
|
27044
27430
|
);
|
|
27045
|
-
const [consent, setConsent] =
|
|
27046
|
-
const [dob, setDob] =
|
|
27431
|
+
const [consent, setConsent] = useState43({ ttfOptIn: false, brandOptIn: false });
|
|
27432
|
+
const [dob, setDob] = useState43(() => billingDobIso(checkout.billing));
|
|
27047
27433
|
hooks_exports.useOnOrderReleased(checkout.orderFixed, () => {
|
|
27048
27434
|
var _a3, _b2;
|
|
27049
27435
|
setBilling(billingDraftFrom(checkout.billing));
|
|
@@ -27054,14 +27440,14 @@ var BillingInfo = ({
|
|
|
27054
27440
|
(prev) => holderDraftsReloaded(prev, checkout.holders, checkout.backfilledHolderIndexes)
|
|
27055
27441
|
);
|
|
27056
27442
|
});
|
|
27057
|
-
const restoredHolders =
|
|
27443
|
+
const restoredHolders = useRef33(checkout.holders);
|
|
27058
27444
|
hooks_exports.useOnEventChange(checkout.eventId, () => {
|
|
27059
27445
|
restoredHolders.current = [];
|
|
27060
27446
|
setHolders([]);
|
|
27061
27447
|
setDataCapture({});
|
|
27062
27448
|
});
|
|
27063
|
-
const profileSeeded =
|
|
27064
|
-
const countryDefaultApplied =
|
|
27449
|
+
const profileSeeded = useRef33(false);
|
|
27450
|
+
const countryDefaultApplied = useRef33(Boolean((_c = checkout.billing) == null ? void 0 : _c.countryId));
|
|
27065
27451
|
const {
|
|
27066
27452
|
setBilling: commitBilling,
|
|
27067
27453
|
setHolders: commitHolders,
|
|
@@ -27095,7 +27481,7 @@ var BillingInfo = ({
|
|
|
27095
27481
|
}
|
|
27096
27482
|
return out;
|
|
27097
27483
|
}, [checkout.breakdown, checkout.selections]);
|
|
27098
|
-
|
|
27484
|
+
useEffect30(() => {
|
|
27099
27485
|
const p = profile.data;
|
|
27100
27486
|
if (!p || profileSeeded.current) return;
|
|
27101
27487
|
profileSeeded.current = true;
|
|
@@ -27118,10 +27504,10 @@ var BillingInfo = ({
|
|
|
27118
27504
|
return keys.every((k) => next[k] === prev[k]) ? prev : next;
|
|
27119
27505
|
});
|
|
27120
27506
|
}, [profile.data, checkout.isLoggedIn]);
|
|
27121
|
-
|
|
27507
|
+
useEffect30(() => {
|
|
27122
27508
|
setHolders((prev) => holderDraftsForSlots(prev, slots, restoredHolders.current));
|
|
27123
27509
|
}, [slots]);
|
|
27124
|
-
|
|
27510
|
+
useEffect30(() => {
|
|
27125
27511
|
if (!showHolders) return;
|
|
27126
27512
|
setHolders(
|
|
27127
27513
|
(prev) => holderDraftsMirroringBuyer(prev, {
|
|
@@ -27132,7 +27518,7 @@ var BillingInfo = ({
|
|
|
27132
27518
|
})
|
|
27133
27519
|
);
|
|
27134
27520
|
}, [showHolders, billing.firstName, billing.lastName, billing.email, billing.phone]);
|
|
27135
|
-
|
|
27521
|
+
useEffect30(() => {
|
|
27136
27522
|
const email = billing.email.trim();
|
|
27137
27523
|
if (checkout.isLoggedIn || !isEmail(email)) return;
|
|
27138
27524
|
const t = setTimeout(
|
|
@@ -27157,7 +27543,7 @@ var BillingInfo = ({
|
|
|
27157
27543
|
var _a3;
|
|
27158
27544
|
return (_a3 = statesQuery.data) != null ? _a3 : [];
|
|
27159
27545
|
}, [statesQuery.data]);
|
|
27160
|
-
|
|
27546
|
+
useEffect30(() => {
|
|
27161
27547
|
var _a3, _b2, _c2, _d2;
|
|
27162
27548
|
if (countryDefaultApplied.current || billing.countryId || countries.length === 0 || profile.isLoading || eventId && event.isLoading) {
|
|
27163
27549
|
return;
|
|
@@ -27196,7 +27582,7 @@ var BillingInfo = ({
|
|
|
27196
27582
|
event.isLoading,
|
|
27197
27583
|
(_e = event.data) == null ? void 0 : _e.countryCode
|
|
27198
27584
|
]);
|
|
27199
|
-
|
|
27585
|
+
useEffect30(() => {
|
|
27200
27586
|
var _a3;
|
|
27201
27587
|
if (!billing.countryId) return;
|
|
27202
27588
|
const country = countries.find(
|
|
@@ -27207,7 +27593,7 @@ var BillingInfo = ({
|
|
|
27207
27593
|
setBilling((current5) => ({ ...current5, countryCode }));
|
|
27208
27594
|
}
|
|
27209
27595
|
}, [billing.countryId, billing.countryCode, countries]);
|
|
27210
|
-
|
|
27596
|
+
useEffect30(() => {
|
|
27211
27597
|
if (!billing.stateId) return;
|
|
27212
27598
|
const state = states.find(
|
|
27213
27599
|
(candidate) => String(candidate.id) === String(billing.stateId)
|
|
@@ -27267,7 +27653,7 @@ var BillingInfo = ({
|
|
|
27267
27653
|
});
|
|
27268
27654
|
if (ttfOptInLabel || brandOptInLabel) commitConsent(consent);
|
|
27269
27655
|
};
|
|
27270
|
-
|
|
27656
|
+
useEffect30(() => {
|
|
27271
27657
|
if (combined) commit();
|
|
27272
27658
|
}, [
|
|
27273
27659
|
combined,
|
|
@@ -27734,7 +28120,7 @@ var Accommodation = ({ eventId }) => {
|
|
|
27734
28120
|
var styles7 = StyleSheet19.create({ room: { gap: 12, paddingVertical: 12 }, title: { fontSize: 16, fontWeight: "600" } });
|
|
27735
28121
|
|
|
27736
28122
|
// src/sections/Payment.tsx
|
|
27737
|
-
import { useEffect as
|
|
28123
|
+
import { useEffect as useEffect31, useMemo as useMemo30, useState as useState44 } from "react";
|
|
27738
28124
|
import { Platform as Platform2, View as View23 } from "react-native";
|
|
27739
28125
|
import { isPlatformPaySupported } from "@stripe/stripe-react-native";
|
|
27740
28126
|
import { Fragment as Fragment12, jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
@@ -27788,14 +28174,14 @@ var Payment = ({
|
|
|
27788
28174
|
const bundleWait = hooks_exports.useTicketGatewayWait(checkout.store);
|
|
27789
28175
|
const bundleStarting = bundleWait !== null;
|
|
27790
28176
|
const validation = useCheckoutValidation();
|
|
27791
|
-
const [error, setError] =
|
|
28177
|
+
const [error, setError] = useState44("");
|
|
27792
28178
|
const paymentMethods = hooks_exports.useCheckoutPaymentMethods(checkout.store);
|
|
27793
28179
|
const methods = (_a2 = paymentMethods.data) != null ? _a2 : null;
|
|
27794
|
-
const [selected, setSelected] =
|
|
27795
|
-
const [extras, setExtras] =
|
|
27796
|
-
const [useSavedCard, setUseSavedCard] =
|
|
27797
|
-
const [nativeWalletSupported, setNativeWalletSupported] =
|
|
27798
|
-
|
|
28180
|
+
const [selected, setSelected] = useState44("");
|
|
28181
|
+
const [extras, setExtras] = useState44({});
|
|
28182
|
+
const [useSavedCard, setUseSavedCard] = useState44(true);
|
|
28183
|
+
const [nativeWalletSupported, setNativeWalletSupported] = useState44(false);
|
|
28184
|
+
useEffect31(() => {
|
|
27799
28185
|
let mounted = true;
|
|
27800
28186
|
const env = getConfig().env;
|
|
27801
28187
|
isPlatformPaySupported({ googlePay: { testEnv: env === "STAG" || env === "DEV" } }).then((supported) => {
|
|
@@ -27868,7 +28254,7 @@ var Payment = ({
|
|
|
27868
28254
|
nativeWalletSupported,
|
|
27869
28255
|
offersOxxo
|
|
27870
28256
|
]);
|
|
27871
|
-
|
|
28257
|
+
useEffect31(() => {
|
|
27872
28258
|
if (options.length && !options.some((o) => o.value === selected))
|
|
27873
28259
|
setSelected(options[0].value);
|
|
27874
28260
|
}, [options, selected]);
|
|
@@ -27878,7 +28264,10 @@ var Payment = ({
|
|
|
27878
28264
|
const isPlanSelected = (selectedOption == null ? void 0 : selectedOption.id.kind) === "paymentPlan";
|
|
27879
28265
|
const savedLast4 = methods == null ? void 0 : methods.savedPlanCardLast4;
|
|
27880
28266
|
const reuseSavedCard = planUsesSavedCard(savedLast4, useSavedCard);
|
|
27881
|
-
const
|
|
28267
|
+
const useStripeSheet = Boolean(
|
|
28268
|
+
checkout.paymentSheet && isCardSelected && nativePaymentSheetAvailable(checkout)
|
|
28269
|
+
);
|
|
28270
|
+
const showStripeCardField = !isXendit && (!useStripeSheet && isCardSelected || isPlanSelected && !reuseSavedCard);
|
|
27882
28271
|
const showXenditCardNote = isXendit && isCardSelected;
|
|
27883
28272
|
const ticketCard = hooks_exports.useTicketCardForm({
|
|
27884
28273
|
confirmer: rnConfirmer,
|
|
@@ -27940,14 +28329,16 @@ var Payment = ({
|
|
|
27940
28329
|
req = { method: "xenditEWallet", walletKey: id2.walletKey, extra: extras[selected] };
|
|
27941
28330
|
else if (id2.kind === "redirect")
|
|
27942
28331
|
req = { method: "redirect", methodType: id2.methodType };
|
|
27943
|
-
else if (id2.kind === "paymentPlan")
|
|
28332
|
+
else if (id2.kind === "paymentPlan")
|
|
28333
|
+
req = { method: "paymentPlan", useSavedCard: reuseSavedCard };
|
|
27944
28334
|
else req = { method: id2.kind };
|
|
27945
|
-
checkout.placeOrder(
|
|
28335
|
+
const payment = useStripeSheet && checkout.paymentSheet && !isFree ? checkout.paymentSheet.placeOrder() : checkout.placeOrder(
|
|
27946
28336
|
req,
|
|
27947
28337
|
usesOwnCardField ? {
|
|
27948
28338
|
claimCard: cardClaimStep("nativeCard", () => claimCardField(cardOwner))
|
|
27949
28339
|
} : void 0
|
|
27950
|
-
)
|
|
28340
|
+
);
|
|
28341
|
+
payment.then((order) => onComplete == null ? void 0 : onComplete(order)).catch(
|
|
27951
28342
|
(e) => setError(
|
|
27952
28343
|
e instanceof CartChangedError ? t("checkout.error.cartChanged") : e instanceof CardClaimError || e instanceof ConfirmerBusyError ? createTranslator()(e.message) : errorMessage(e)
|
|
27953
28344
|
)
|
|
@@ -27960,6 +28351,7 @@ var Payment = ({
|
|
|
27960
28351
|
/* @__PURE__ */ jsx27(MutedText, { children: createTranslator()("bundles.payingElsewhere") }),
|
|
27961
28352
|
/* @__PURE__ */ jsx27(Button, { variant: "ghost", onPress: ticketCard.payHere, children: createTranslator()("bundles.payHere") })
|
|
27962
28353
|
] }) : showStripeCardField ? /* @__PURE__ */ jsx27(CardInput, { owner: cardOwner }) : null,
|
|
28354
|
+
useStripeSheet && !isFree ? /* @__PURE__ */ jsx27(MutedText, { children: "Choose your payment details securely with Stripe when you pay." }) : null,
|
|
27963
28355
|
showXenditCardNote ? (
|
|
27964
28356
|
// Xendit card tokenizes in a WebView sheet (deferred — see confirmer.ts).
|
|
27965
28357
|
/* @__PURE__ */ jsx27(MutedText, { children: "Card details are entered in a secure Xendit window when you pay." })
|
|
@@ -28038,11 +28430,11 @@ var Payment = ({
|
|
|
28038
28430
|
};
|
|
28039
28431
|
|
|
28040
28432
|
// src/sections/WaiverSigning.tsx
|
|
28041
|
-
import { useMemo as useMemo32, useRef as
|
|
28433
|
+
import { useMemo as useMemo32, useRef as useRef35, useState as useState46 } from "react";
|
|
28042
28434
|
import { Pressable as Pressable12, ScrollView, StyleSheet as StyleSheet21, Text as Text18, View as View25 } from "react-native";
|
|
28043
28435
|
|
|
28044
28436
|
// src/ui/SignaturePad.tsx
|
|
28045
|
-
import { memo, useEffect as
|
|
28437
|
+
import { memo, useEffect as useEffect32, useMemo as useMemo31, useRef as useRef34, useState as useState45 } from "react";
|
|
28046
28438
|
import { PanResponder, Pressable as Pressable11, StyleSheet as StyleSheet20, Text as Text17, View as View24 } from "react-native";
|
|
28047
28439
|
import { Fragment as Fragment13, jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
28048
28440
|
var LINE_WIDTH = 2.5;
|
|
@@ -28088,13 +28480,13 @@ var SignaturePad = ({
|
|
|
28088
28480
|
disabled
|
|
28089
28481
|
}) => {
|
|
28090
28482
|
const theme = useTheme();
|
|
28091
|
-
const strokesRef =
|
|
28092
|
-
const [, setFrame] =
|
|
28093
|
-
const frameRequest =
|
|
28094
|
-
const size =
|
|
28095
|
-
const report =
|
|
28483
|
+
const strokesRef = useRef34([]);
|
|
28484
|
+
const [, setFrame] = useState45(0);
|
|
28485
|
+
const frameRequest = useRef34(null);
|
|
28486
|
+
const size = useRef34({ width: 0, height: PAD_HEIGHT });
|
|
28487
|
+
const report = useRef34(onChange);
|
|
28096
28488
|
report.current = onChange;
|
|
28097
|
-
const disabledRef =
|
|
28489
|
+
const disabledRef = useRef34(disabled);
|
|
28098
28490
|
disabledRef.current = disabled;
|
|
28099
28491
|
const render = () => {
|
|
28100
28492
|
if (frameRequest.current !== null) cancelAnimationFrame(frameRequest.current);
|
|
@@ -28105,7 +28497,7 @@ var SignaturePad = ({
|
|
|
28105
28497
|
if (frameRequest.current !== null) return;
|
|
28106
28498
|
frameRequest.current = requestAnimationFrame(render);
|
|
28107
28499
|
};
|
|
28108
|
-
|
|
28500
|
+
useEffect32(
|
|
28109
28501
|
() => () => {
|
|
28110
28502
|
if (frameRequest.current !== null) cancelAnimationFrame(frameRequest.current);
|
|
28111
28503
|
},
|
|
@@ -28232,8 +28624,8 @@ var WaiverSigning = ({
|
|
|
28232
28624
|
checkout.setWaiverSignature,
|
|
28233
28625
|
checkout.holdWaiverSigning
|
|
28234
28626
|
);
|
|
28235
|
-
const [open, setOpen] =
|
|
28236
|
-
const [reloading, setReloading] =
|
|
28627
|
+
const [open, setOpen] = useState46({});
|
|
28628
|
+
const [reloading, setReloading] = useState46(false);
|
|
28237
28629
|
if ((_a2 = checkout.unavailableDetails) == null ? void 0 : _a2.includes("waiver")) {
|
|
28238
28630
|
return /* @__PURE__ */ jsxs26(Card, { children: [
|
|
28239
28631
|
/* @__PURE__ */ jsx29(SectionHeader, { title: t("waivers.heading") }),
|
|
@@ -28327,17 +28719,17 @@ var TicketForm = ({ ticket, consentText, t, methods, busy, locked = false, error
|
|
|
28327
28719
|
var _a2, _b, _c, _d;
|
|
28328
28720
|
const theme = useTheme();
|
|
28329
28721
|
const s9 = useWaiverStyles(theme);
|
|
28330
|
-
const [heldDraft, setDraft] =
|
|
28722
|
+
const [heldDraft, setDraft] = useState46(
|
|
28331
28723
|
() => emptyWaiverDraft(
|
|
28332
28724
|
{ firstName: ticket.holderFirstName, lastName: ticket.holderLastName },
|
|
28333
28725
|
{ signatureMethods: methods }
|
|
28334
28726
|
)
|
|
28335
28727
|
);
|
|
28336
28728
|
const draft = draftWithAllowedMethod(heldDraft, methods);
|
|
28337
|
-
const [problems, setProblems] =
|
|
28338
|
-
const [pressed, setPressed] =
|
|
28729
|
+
const [problems, setProblems] = useState46([]);
|
|
28730
|
+
const [pressed, setPressed] = useState46(false);
|
|
28339
28731
|
const frozen = busy || locked;
|
|
28340
|
-
const draftRef =
|
|
28732
|
+
const draftRef = useRef35(draft);
|
|
28341
28733
|
draftRef.current = draft;
|
|
28342
28734
|
const patch2 = (next) => {
|
|
28343
28735
|
if (!frozen) setDraft((d) => ({ ...d, ...next }));
|
|
@@ -28536,7 +28928,7 @@ var useWaiverStyles = (theme) => useMemo32(
|
|
|
28536
28928
|
);
|
|
28537
28929
|
|
|
28538
28930
|
// src/sections/IDVerification.tsx
|
|
28539
|
-
import { useState as
|
|
28931
|
+
import { useState as useState47 } from "react";
|
|
28540
28932
|
import { Linking as Linking4 } from "react-native";
|
|
28541
28933
|
import { jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
28542
28934
|
var MESSAGE = {
|
|
@@ -28551,8 +28943,8 @@ var IDVerification = () => {
|
|
|
28551
28943
|
const checkout = useCheckoutContext();
|
|
28552
28944
|
const theme = useTheme();
|
|
28553
28945
|
const order = checkout.order;
|
|
28554
|
-
const [phase, setPhase] =
|
|
28555
|
-
const [error, setError] =
|
|
28946
|
+
const [phase, setPhase] = useState47("idle");
|
|
28947
|
+
const [error, setError] = useState47("");
|
|
28556
28948
|
if (!(order == null ? void 0 : order.needIdVerification)) return null;
|
|
28557
28949
|
const done = phase === "verified";
|
|
28558
28950
|
const running = phase === "starting" || phase === "polling";
|
|
@@ -28579,7 +28971,7 @@ var IDVerification = () => {
|
|
|
28579
28971
|
};
|
|
28580
28972
|
|
|
28581
28973
|
// src/sections/Confirmation.tsx
|
|
28582
|
-
import { useState as
|
|
28974
|
+
import { useState as useState48 } from "react";
|
|
28583
28975
|
import { Linking as Linking5, Share, StyleSheet as StyleSheet22, Text as Text19, View as View26 } from "react-native";
|
|
28584
28976
|
import Clipboard from "@react-native-clipboard/clipboard";
|
|
28585
28977
|
import { jsx as jsx31, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
@@ -28593,7 +28985,7 @@ var Confirmation = ({
|
|
|
28593
28985
|
const checkout = useCheckoutContext();
|
|
28594
28986
|
const theme = useTheme();
|
|
28595
28987
|
const order = checkout.order;
|
|
28596
|
-
const [copied, setCopied] =
|
|
28988
|
+
const [copied, setCopied] = useState48(false);
|
|
28597
28989
|
if (!order) return null;
|
|
28598
28990
|
const pending3 = order.pending;
|
|
28599
28991
|
const url2 = shareUrl != null ? shareUrl : "";
|
|
@@ -28647,12 +29039,12 @@ var styles9 = StyleSheet22.create({
|
|
|
28647
29039
|
});
|
|
28648
29040
|
|
|
28649
29041
|
// src/sections/Rewards.tsx
|
|
28650
|
-
import { useEffect as
|
|
29042
|
+
import { useEffect as useEffect33, useState as useState50 } from "react";
|
|
28651
29043
|
import { Alert, Image as Image3, Share as Share2, StyleSheet as StyleSheet25, View as View29 } from "react-native";
|
|
28652
29044
|
import Clipboard2 from "@react-native-clipboard/clipboard";
|
|
28653
29045
|
|
|
28654
29046
|
// src/sections/rewards/RewardsLadder.tsx
|
|
28655
|
-
import { useState as
|
|
29047
|
+
import { useState as useState49 } from "react";
|
|
28656
29048
|
import { StyleSheet as StyleSheet23, View as View27 } from "react-native";
|
|
28657
29049
|
import { jsx as jsx32, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
28658
29050
|
var AWARD_STATUS_KEYS = {
|
|
@@ -28662,9 +29054,9 @@ var AWARD_STATUS_KEYS = {
|
|
|
28662
29054
|
cancelled: "rewards.awards.cancelled"
|
|
28663
29055
|
};
|
|
28664
29056
|
var DeliveryDetails = ({ fields, translate: t, onSubmit }) => {
|
|
28665
|
-
const [values2, setValues] =
|
|
28666
|
-
const [saving, setSaving] =
|
|
28667
|
-
const [failure, setFailure] =
|
|
29057
|
+
const [values2, setValues] = useState49({});
|
|
29058
|
+
const [saving, setSaving] = useState49(false);
|
|
29059
|
+
const [failure, setFailure] = useState49("");
|
|
28668
29060
|
return /* @__PURE__ */ jsxs29(View27, { style: { gap: 10 }, children: [
|
|
28669
29061
|
fields.map((field) => {
|
|
28670
29062
|
var _a2;
|
|
@@ -28855,10 +29247,10 @@ var RewardsView = ({
|
|
|
28855
29247
|
var _a2, _b, _c, _d, _e, _f;
|
|
28856
29248
|
const t = translate2 != null ? translate2 : createTranslator({ locale, messages });
|
|
28857
29249
|
const { rewards, failure, busy, hash } = flow;
|
|
28858
|
-
const [packName, setPackName] =
|
|
28859
|
-
const [packCode, setPackCode] =
|
|
28860
|
-
const [copied, setCopied] =
|
|
28861
|
-
|
|
29250
|
+
const [packName, setPackName] = useState50("");
|
|
29251
|
+
const [packCode, setPackCode] = useState50("");
|
|
29252
|
+
const [copied, setCopied] = useState50(false);
|
|
29253
|
+
useEffect33(() => {
|
|
28862
29254
|
setCopied(false);
|
|
28863
29255
|
}, [rewards == null ? void 0 : rewards.share_link]);
|
|
28864
29256
|
if (!rewards)
|
|
@@ -29352,7 +29744,7 @@ var Trips = ({
|
|
|
29352
29744
|
};
|
|
29353
29745
|
|
|
29354
29746
|
// src/sections/EventDiscussionView.tsx
|
|
29355
|
-
import { useRef as
|
|
29747
|
+
import { useRef as useRef37, useState as useState52 } from "react";
|
|
29356
29748
|
import {
|
|
29357
29749
|
ActivityIndicator as ActivityIndicator4,
|
|
29358
29750
|
Alert as Alert2,
|
|
@@ -29370,7 +29762,7 @@ import {
|
|
|
29370
29762
|
} from "react-native";
|
|
29371
29763
|
|
|
29372
29764
|
// src/sections/discussion/CommentImages.tsx
|
|
29373
|
-
import { useEffect as
|
|
29765
|
+
import { useEffect as useEffect34, useState as useState51 } from "react";
|
|
29374
29766
|
import {
|
|
29375
29767
|
ActivityIndicator as ActivityIndicator3,
|
|
29376
29768
|
Image as Image4,
|
|
@@ -29449,8 +29841,8 @@ var CommentImages = ({
|
|
|
29449
29841
|
const t = useAccountT(locale);
|
|
29450
29842
|
const theme = useTheme();
|
|
29451
29843
|
const white = [s.white, { fontFamily: theme.fontFamily }];
|
|
29452
|
-
const [selected, setSelected] =
|
|
29453
|
-
|
|
29844
|
+
const [selected, setSelected] = useState51(null);
|
|
29845
|
+
useEffect34(() => {
|
|
29454
29846
|
if (selected === null) return;
|
|
29455
29847
|
onPreviewChange(true);
|
|
29456
29848
|
return () => onPreviewChange(false);
|
|
@@ -29706,7 +30098,7 @@ var s = StyleSheet27.create({
|
|
|
29706
30098
|
});
|
|
29707
30099
|
|
|
29708
30100
|
// src/sections/discussion/SwipeReply.tsx
|
|
29709
|
-
import { useMemo as useMemo36, useRef as
|
|
30101
|
+
import { useMemo as useMemo36, useRef as useRef36 } from "react";
|
|
29710
30102
|
import { Animated, PanResponder as PanResponder2, StyleSheet as StyleSheet28, Text as Text22, View as View33 } from "react-native";
|
|
29711
30103
|
import { jsx as jsx38, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
29712
30104
|
var SwipeReply = ({
|
|
@@ -29717,7 +30109,7 @@ var SwipeReply = ({
|
|
|
29717
30109
|
children
|
|
29718
30110
|
}) => {
|
|
29719
30111
|
const theme = useTheme();
|
|
29720
|
-
const offset =
|
|
30112
|
+
const offset = useRef36(new Animated.Value(0)).current;
|
|
29721
30113
|
const gesture = useMemo36(() => {
|
|
29722
30114
|
const reset = () => Animated.spring(offset, { toValue: 0, useNativeDriver: true }).start();
|
|
29723
30115
|
return PanResponder2.create({
|
|
@@ -29798,17 +30190,17 @@ var EventDiscussionBody = ({
|
|
|
29798
30190
|
var _a2, _b, _c;
|
|
29799
30191
|
const theme = useTheme();
|
|
29800
30192
|
const t = useAccountT(locale);
|
|
29801
|
-
const list2 =
|
|
29802
|
-
const firstContent =
|
|
29803
|
-
const [actions, setActions] =
|
|
29804
|
-
const [reporting, setReporting] =
|
|
29805
|
-
const [moderating, setModerating] =
|
|
29806
|
-
const [reason, setReason] =
|
|
29807
|
-
const [blocksVisible, setBlocksVisible] =
|
|
29808
|
-
const [pickerError, setPickerError] =
|
|
29809
|
-
const [imageOpen, setImageOpen] =
|
|
29810
|
-
const [pickerBusy, setPickerBusy] =
|
|
29811
|
-
const picking =
|
|
30193
|
+
const list2 = useRef37(null);
|
|
30194
|
+
const firstContent = useRef37(true);
|
|
30195
|
+
const [actions, setActions] = useState52(null);
|
|
30196
|
+
const [reporting, setReporting] = useState52(null);
|
|
30197
|
+
const [moderating, setModerating] = useState52(null);
|
|
30198
|
+
const [reason, setReason] = useState52("");
|
|
30199
|
+
const [blocksVisible, setBlocksVisible] = useState52(false);
|
|
30200
|
+
const [pickerError, setPickerError] = useState52("");
|
|
30201
|
+
const [imageOpen, setImageOpen] = useState52(false);
|
|
30202
|
+
const [pickerBusy, setPickerBusy] = useState52(false);
|
|
30203
|
+
const picking = useRef37(false);
|
|
29812
30204
|
const text6 = { color: theme.text, fontFamily: theme.fontFamily };
|
|
29813
30205
|
const muted = { color: theme.muted, fontFamily: theme.fontFamily };
|
|
29814
30206
|
const closeActions = (work) => {
|
|
@@ -30822,7 +31214,7 @@ var styles13 = StyleSheet30.create({
|
|
|
30822
31214
|
});
|
|
30823
31215
|
|
|
30824
31216
|
// src/sections/Streaming.tsx
|
|
30825
|
-
import { useMemo as useMemo37, useRef as
|
|
31217
|
+
import { useMemo as useMemo37, useRef as useRef38, useState as useState53 } from "react";
|
|
30826
31218
|
import {
|
|
30827
31219
|
ActivityIndicator as ActivityIndicator5,
|
|
30828
31220
|
Alert as Alert4,
|
|
@@ -30857,8 +31249,8 @@ var StreamingView = ({
|
|
|
30857
31249
|
);
|
|
30858
31250
|
const session = hooks_exports.useAuthSession();
|
|
30859
31251
|
const assertOwner = hooks_exports.useSessionAction();
|
|
30860
|
-
const pendingBrowser =
|
|
30861
|
-
const [stored, setStored] =
|
|
31252
|
+
const pendingBrowser = useRef38({ scope: session.sessionScope, locked: false });
|
|
31253
|
+
const [stored, setStored] = useState53({
|
|
30862
31254
|
scope: session.sessionScope,
|
|
30863
31255
|
busy: false,
|
|
30864
31256
|
error: ""
|
|
@@ -31282,7 +31674,7 @@ var s5 = StyleSheet32.create({
|
|
|
31282
31674
|
});
|
|
31283
31675
|
|
|
31284
31676
|
// src/sections/ProfileSettings.tsx
|
|
31285
|
-
import { useEffect as
|
|
31677
|
+
import { useEffect as useEffect35, useMemo as useMemo39 } from "react";
|
|
31286
31678
|
import {
|
|
31287
31679
|
ActivityIndicator as ActivityIndicator7,
|
|
31288
31680
|
KeyboardAvoidingView as KeyboardAvoidingView2,
|
|
@@ -31329,7 +31721,7 @@ var ProfileSettingsView = ({
|
|
|
31329
31721
|
} catch (e) {
|
|
31330
31722
|
}
|
|
31331
31723
|
};
|
|
31332
|
-
|
|
31724
|
+
useEffect35(() => {
|
|
31333
31725
|
if (flow.settings) flow.open(mode);
|
|
31334
31726
|
}, [mode, flow.scopeKey, Boolean(flow.settings)]);
|
|
31335
31727
|
const text6 = { color: theme.text, fontFamily: theme.fontFamily };
|
|
@@ -31834,7 +32226,7 @@ var AccountPaymentPlanSection = ({
|
|
|
31834
32226
|
};
|
|
31835
32227
|
|
|
31836
32228
|
// src/sections/NotificationPreferences.tsx
|
|
31837
|
-
import { useEffect as
|
|
32229
|
+
import { useEffect as useEffect36, useMemo as useMemo40 } from "react";
|
|
31838
32230
|
import {
|
|
31839
32231
|
ActivityIndicator as ActivityIndicator8,
|
|
31840
32232
|
Pressable as Pressable21,
|
|
@@ -31875,7 +32267,7 @@ var NotificationPreferencesView = ({
|
|
|
31875
32267
|
} catch (e) {
|
|
31876
32268
|
}
|
|
31877
32269
|
};
|
|
31878
|
-
|
|
32270
|
+
useEffect36(() => {
|
|
31879
32271
|
var _a3;
|
|
31880
32272
|
if ((_a3 = flow.preferences) == null ? void 0 : _a3.available) flow.begin();
|
|
31881
32273
|
}, [flow.scopeKey, Boolean(flow.preferences), (_a2 = flow.preferences) == null ? void 0 : _a2.available]);
|
|
@@ -32045,15 +32437,15 @@ import {
|
|
|
32045
32437
|
} from "react-native";
|
|
32046
32438
|
|
|
32047
32439
|
// src/auth/LoginForm.tsx
|
|
32048
|
-
import { useEffect as
|
|
32440
|
+
import { useEffect as useEffect37, useState as useState55 } from "react";
|
|
32049
32441
|
import { Pressable as Pressable23, StyleSheet as StyleSheet36, Text as Text30, View as View47 } from "react-native";
|
|
32050
32442
|
|
|
32051
32443
|
// src/auth/PasswordInput.tsx
|
|
32052
|
-
import { useState as
|
|
32444
|
+
import { useState as useState54 } from "react";
|
|
32053
32445
|
import { Pressable as Pressable22, StyleSheet as StyleSheet35, Text as Text29, View as View46 } from "react-native";
|
|
32054
32446
|
import { jsx as jsx51, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
32055
32447
|
var PasswordInput = (props) => {
|
|
32056
|
-
const [visible, setVisible] =
|
|
32448
|
+
const [visible, setVisible] = useState54(false);
|
|
32057
32449
|
return /* @__PURE__ */ jsxs48(View46, { style: styles14.wrap, children: [
|
|
32058
32450
|
/* @__PURE__ */ jsx51(Input, { ...props, autoCapitalize: "none", secureTextEntry: !visible }),
|
|
32059
32451
|
/* @__PURE__ */ jsx51(
|
|
@@ -32095,9 +32487,9 @@ var LoginForm = ({
|
|
|
32095
32487
|
onFieldChange
|
|
32096
32488
|
}) => {
|
|
32097
32489
|
const theme = useTheme();
|
|
32098
|
-
const [email, setEmail] =
|
|
32099
|
-
const [password, setPassword] =
|
|
32100
|
-
|
|
32490
|
+
const [email, setEmail] = useState55(initialEmail);
|
|
32491
|
+
const [password, setPassword] = useState55("");
|
|
32492
|
+
useEffect37(() => {
|
|
32101
32493
|
if (initialEmail && !email) setEmail(initialEmail);
|
|
32102
32494
|
}, [email, initialEmail]);
|
|
32103
32495
|
const submit = () => void onSubmit({ email, password });
|
|
@@ -32149,7 +32541,7 @@ var styles15 = StyleSheet36.create({
|
|
|
32149
32541
|
});
|
|
32150
32542
|
|
|
32151
32543
|
// src/auth/EmailCodeForm.tsx
|
|
32152
|
-
import { useState as
|
|
32544
|
+
import { useState as useState56 } from "react";
|
|
32153
32545
|
import { View as View48 } from "react-native";
|
|
32154
32546
|
import { Fragment as Fragment28, jsx as jsx53, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
32155
32547
|
var EmailCodeForm = ({
|
|
@@ -32164,8 +32556,8 @@ var EmailCodeForm = ({
|
|
|
32164
32556
|
onVerify,
|
|
32165
32557
|
onBack
|
|
32166
32558
|
}) => {
|
|
32167
|
-
const [email, setEmail] =
|
|
32168
|
-
const [code, setCode] =
|
|
32559
|
+
const [email, setEmail] = useState56(initialEmail);
|
|
32560
|
+
const [code, setCode] = useState56("");
|
|
32169
32561
|
return /* @__PURE__ */ jsxs50(View48, { style: { gap: 14 }, children: [
|
|
32170
32562
|
/* @__PURE__ */ jsx53(MutedText, { children: sent ? `Enter the sign-in code sent to ${target}.` : "Receive a one-time sign-in code by email." }),
|
|
32171
32563
|
error ? /* @__PURE__ */ jsx53(ErrorText, { children: error }) : null,
|
|
@@ -32221,7 +32613,7 @@ var EmailCodeForm = ({
|
|
|
32221
32613
|
};
|
|
32222
32614
|
|
|
32223
32615
|
// src/auth/ForgotPasswordForm.tsx
|
|
32224
|
-
import { useEffect as
|
|
32616
|
+
import { useEffect as useEffect38, useState as useState57 } from "react";
|
|
32225
32617
|
import { Pressable as Pressable24, StyleSheet as StyleSheet37, Text as Text31, View as View49 } from "react-native";
|
|
32226
32618
|
import { jsx as jsx54, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
32227
32619
|
var ForgotPasswordForm = ({
|
|
@@ -32235,8 +32627,8 @@ var ForgotPasswordForm = ({
|
|
|
32235
32627
|
onFieldChange
|
|
32236
32628
|
}) => {
|
|
32237
32629
|
const theme = useTheme();
|
|
32238
|
-
const [email, setEmail] =
|
|
32239
|
-
|
|
32630
|
+
const [email, setEmail] = useState57(initialEmail);
|
|
32631
|
+
useEffect38(() => {
|
|
32240
32632
|
if (initialEmail && !email) setEmail(initialEmail);
|
|
32241
32633
|
}, [email, initialEmail]);
|
|
32242
32634
|
const submit = () => void onSubmit(email);
|
|
@@ -32284,7 +32676,7 @@ var styles16 = StyleSheet37.create({
|
|
|
32284
32676
|
});
|
|
32285
32677
|
|
|
32286
32678
|
// src/auth/RegisterForm.tsx
|
|
32287
|
-
import { useEffect as
|
|
32679
|
+
import { useEffect as useEffect39, useMemo as useMemo41, useState as useState58 } from "react";
|
|
32288
32680
|
import { Linking as Linking8, Pressable as Pressable25, StyleSheet as StyleSheet38, View as View50 } from "react-native";
|
|
32289
32681
|
import { Fragment as Fragment29, jsx as jsx55, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
32290
32682
|
var emptyRegistration = (email) => ({
|
|
@@ -32314,12 +32706,12 @@ var RegisterForm = ({
|
|
|
32314
32706
|
}) => {
|
|
32315
32707
|
var _a2, _b, _c, _d, _e, _f;
|
|
32316
32708
|
const t = useMemo41(() => createTranslator({ locale }), [locale]);
|
|
32317
|
-
const [values2, setValues] =
|
|
32709
|
+
const [values2, setValues] = useState58(
|
|
32318
32710
|
() => emptyRegistration(initialEmail)
|
|
32319
32711
|
);
|
|
32320
|
-
const [termsAccepted, setTermsAccepted] =
|
|
32321
|
-
const [refreshingProof, setRefreshingProof] =
|
|
32322
|
-
const [refreshCode, setRefreshCode] =
|
|
32712
|
+
const [termsAccepted, setTermsAccepted] = useState58(false);
|
|
32713
|
+
const [refreshingProof, setRefreshingProof] = useState58(false);
|
|
32714
|
+
const [refreshCode, setRefreshCode] = useState58("");
|
|
32323
32715
|
const countriesQuery = hooks_exports.useCountries();
|
|
32324
32716
|
const countries = useMemo41(() => {
|
|
32325
32717
|
var _a3;
|
|
@@ -32332,11 +32724,11 @@ var RegisterForm = ({
|
|
|
32332
32724
|
var _a3;
|
|
32333
32725
|
return (_a3 = statesQuery.data) != null ? _a3 : [];
|
|
32334
32726
|
}, [statesQuery.data]);
|
|
32335
|
-
|
|
32727
|
+
useEffect39(() => {
|
|
32336
32728
|
if (initialEmail && !values2.email)
|
|
32337
32729
|
setValues((current5) => ({ ...current5, email: initialEmail }));
|
|
32338
32730
|
}, [initialEmail, values2.email]);
|
|
32339
|
-
|
|
32731
|
+
useEffect39(() => {
|
|
32340
32732
|
var _a3;
|
|
32341
32733
|
if (!requireAddress || values2.countryId || countries.length === 0) return;
|
|
32342
32734
|
const preferred = (_a3 = countries.find((country) => {
|
|
@@ -32960,7 +33352,7 @@ function AccountEmailEnrichment({
|
|
|
32960
33352
|
}
|
|
32961
33353
|
|
|
32962
33354
|
// src/auth/AuthModal.tsx
|
|
32963
|
-
import { useCallback as
|
|
33355
|
+
import { useCallback as useCallback16, useEffect as useEffect40, useRef as useRef39 } from "react";
|
|
32964
33356
|
import { Image as Image8, Modal as Modal7, Pressable as Pressable26, ScrollView as ScrollView4, StyleSheet as StyleSheet40, Text as Text33, View as View53 } from "react-native";
|
|
32965
33357
|
import { jsx as jsx58, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
32966
33358
|
var Tab = ({
|
|
@@ -32995,7 +33387,7 @@ var CredentialAuthModal = ({
|
|
|
32995
33387
|
}) => {
|
|
32996
33388
|
const theme = useTheme();
|
|
32997
33389
|
const t = useAccountT();
|
|
32998
|
-
const closeAfterAuth =
|
|
33390
|
+
const closeAfterAuth = useCallback16(
|
|
32999
33391
|
(profile) => {
|
|
33000
33392
|
onAuthenticated == null ? void 0 : onAuthenticated(profile);
|
|
33001
33393
|
onClose();
|
|
@@ -33187,8 +33579,8 @@ var PhoneAccountModal = ({
|
|
|
33187
33579
|
},
|
|
33188
33580
|
onCancelled: onClose
|
|
33189
33581
|
});
|
|
33190
|
-
const prepared =
|
|
33191
|
-
|
|
33582
|
+
const prepared = useRef39(false);
|
|
33583
|
+
useEffect40(() => {
|
|
33192
33584
|
if (prepared.current) return;
|
|
33193
33585
|
prepared.current = true;
|
|
33194
33586
|
if (initialEmail) flow.emailAuth.showLogin(initialEmail);
|
|
@@ -33278,7 +33670,7 @@ var styles18 = StyleSheet40.create({
|
|
|
33278
33670
|
});
|
|
33279
33671
|
|
|
33280
33672
|
// src/auth/ResetPasswordForm.tsx
|
|
33281
|
-
import { useMemo as useMemo42, useState as
|
|
33673
|
+
import { useMemo as useMemo42, useState as useState59 } from "react";
|
|
33282
33674
|
import { StyleSheet as StyleSheet41, Text as Text34, View as View54 } from "react-native";
|
|
33283
33675
|
import { jsx as jsx59, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
33284
33676
|
var ResetPasswordForm = ({
|
|
@@ -33287,10 +33679,10 @@ var ResetPasswordForm = ({
|
|
|
33287
33679
|
onBackToLogin
|
|
33288
33680
|
}) => {
|
|
33289
33681
|
const theme = useTheme();
|
|
33290
|
-
const [password, setPassword] =
|
|
33291
|
-
const [confirmation, setConfirmation] =
|
|
33292
|
-
const [submitted, setSubmitted] =
|
|
33293
|
-
const [success, setSuccess] =
|
|
33682
|
+
const [password, setPassword] = useState59("");
|
|
33683
|
+
const [confirmation, setConfirmation] = useState59("");
|
|
33684
|
+
const [submitted, setSubmitted] = useState59(false);
|
|
33685
|
+
const [success, setSuccess] = useState59(false);
|
|
33294
33686
|
const validation = useMemo42(() => {
|
|
33295
33687
|
if (!submitted)
|
|
33296
33688
|
return {};
|
|
@@ -33350,7 +33742,7 @@ var styles19 = StyleSheet41.create({
|
|
|
33350
33742
|
});
|
|
33351
33743
|
|
|
33352
33744
|
// src/EmbeddedCheckout.tsx
|
|
33353
|
-
import { useEffect as
|
|
33745
|
+
import { useEffect as useEffect41, useRef as useRef40, useState as useState60 } from "react";
|
|
33354
33746
|
import { Pressable as Pressable27, ScrollView as ScrollView5, StyleSheet as StyleSheet42, Text as Text35, View as View55 } from "react-native";
|
|
33355
33747
|
import { Fragment as Fragment32, jsx as jsx60, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
33356
33748
|
var Flow = ({
|
|
@@ -33378,13 +33770,13 @@ var Flow = ({
|
|
|
33378
33770
|
var _a2;
|
|
33379
33771
|
const checkout = useCheckoutContext();
|
|
33380
33772
|
const theme = useTheme();
|
|
33381
|
-
const [view, setView] =
|
|
33382
|
-
const [selectionView, setSelectionView] =
|
|
33383
|
-
const editedDetailsRef =
|
|
33384
|
-
const [authRequest, setAuthRequest] =
|
|
33773
|
+
const [view, setView] = useState60(initialView);
|
|
33774
|
+
const [selectionView, setSelectionView] = useState60(initialView);
|
|
33775
|
+
const editedDetailsRef = useRef40(null);
|
|
33776
|
+
const [authRequest, setAuthRequest] = useState60(
|
|
33385
33777
|
null
|
|
33386
33778
|
);
|
|
33387
|
-
const [privacyAttempted, setPrivacyAttempted] =
|
|
33779
|
+
const [privacyAttempted, setPrivacyAttempted] = useState60(false);
|
|
33388
33780
|
const openBuiltInAuth = (email) => setAuthRequest((current5) => {
|
|
33389
33781
|
var _a3;
|
|
33390
33782
|
return { email, key: ((_a3 = current5 == null ? void 0 : current5.key) != null ? _a3 : 0) + 1 };
|
|
@@ -33397,7 +33789,7 @@ var Flow = ({
|
|
|
33397
33789
|
orderFixed: checkout.orderFixed
|
|
33398
33790
|
});
|
|
33399
33791
|
const leaveAllowed = canLeavePayment(checkout);
|
|
33400
|
-
|
|
33792
|
+
useEffect41(() => {
|
|
33401
33793
|
if (visibleView === view) return;
|
|
33402
33794
|
if (visibleView === "checkout") setView("checkout");
|
|
33403
33795
|
else {
|
|
@@ -33405,7 +33797,7 @@ var Flow = ({
|
|
|
33405
33797
|
setSelectionView("tickets");
|
|
33406
33798
|
}
|
|
33407
33799
|
}, [view, visibleView]);
|
|
33408
|
-
|
|
33800
|
+
useEffect41(() => {
|
|
33409
33801
|
onViewChange == null ? void 0 : onViewChange(visibleView);
|
|
33410
33802
|
}, [onViewChange, visibleView]);
|
|
33411
33803
|
const enterCheckout = (from) => {
|