@funkit/connect 1.2.6 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/components/Box/Box.d.ts +3 -3
  3. package/dist/components/CloseButton/CloseButton.d.ts +1 -1
  4. package/dist/components/FunButton/FunIconButton.d.ts +7 -7
  5. package/dist/components/FunCheckoutHistoryModal/FunCheckoutHistoryDetail.d.ts +1 -1
  6. package/dist/components/FunNotification/FunCheckoutNotification.d.ts +1 -1
  7. package/dist/components/FunTransactionSummary/FunTxSummaryHistory.d.ts +1 -1
  8. package/dist/components/FunkitProvider/AppContext.d.ts +3 -3
  9. package/dist/components/FunkitProvider/CoolModeContext.d.ts +0 -1
  10. package/dist/components/FunkitProvider/FunkitCheckoutContext.d.ts +2 -7
  11. package/dist/components/FunkitProvider/FunkitConfigContext.d.ts +1 -1
  12. package/dist/components/FunkitProvider/FunkitSandboxContext.d.ts +0 -1
  13. package/dist/components/FunkitProvider/FunkitWeb2Provider.d.ts +2 -15
  14. package/dist/components/FunkitProvider/GeneralWalletProvider.d.ts +8 -8
  15. package/dist/components/FunkitProvider/ShowRecentTransactionsContext.d.ts +0 -1
  16. package/dist/components/FunkitProvider/provideFunkitConnectChains.d.ts +1 -1
  17. package/dist/components/FunkitProvider/useCoolMode.d.ts +0 -1
  18. package/dist/components/InfoButton/InfoButton.d.ts +1 -1
  19. package/dist/config/getDefaultConfig.d.ts +510 -510
  20. package/dist/consts/funkit.d.ts +30 -9
  21. package/dist/css/atoms.d.ts +0 -1
  22. package/dist/hooks/useCheckoutAccountBalanceTransfer.d.ts +10 -10
  23. package/dist/hooks/useCheckoutStateBooleans.d.ts +1 -1
  24. package/dist/index.css +3 -3
  25. package/dist/index.d.ts +1 -2
  26. package/dist/index.js +547 -191
  27. package/dist/themes/baseTheme.d.ts +1 -1
  28. package/dist/utils/checkout.d.ts +25 -25
  29. package/dist/utils/flags/config.d.ts +24 -0
  30. package/dist/utils/flags/endpoint.d.ts +22 -0
  31. package/dist/utils/flags/hash.d.ts +13 -0
  32. package/dist/utils/flags/impl.d.ts +26 -0
  33. package/dist/utils/flags/index.d.ts +9 -0
  34. package/dist/utils/flags/types.d.ts +39 -0
  35. package/dist/utils/funLogger.d.ts +7 -1
  36. package/dist/utils/memoize.d.ts +3 -0
  37. package/dist/utils/mesh.d.ts +0 -1
  38. package/dist/wallets/computeWalletConnectMetaData.d.ts +1 -1
  39. package/dist/wallets/walletConnectors/bifrostWallet/bifrostWallet.js +2 -2
  40. package/dist/wallets/walletConnectors/bitgetWallet/bitgetWallet.js +2 -2
  41. package/dist/wallets/walletConnectors/bybitWallet/bybitWallet.js +2 -2
  42. package/dist/wallets/walletConnectors/chunk-2DWBVWFI.js +87 -0
  43. package/dist/wallets/walletConnectors/chunk-32KBKKGT.js +182 -0
  44. package/dist/wallets/walletConnectors/chunk-3CLNL7LR.js +73 -0
  45. package/dist/wallets/walletConnectors/chunk-5L2OLU3J.js +102 -0
  46. package/dist/wallets/walletConnectors/chunk-7GGRZNT3.js +96 -0
  47. package/dist/wallets/walletConnectors/chunk-7YDZTPO4.js +100 -0
  48. package/dist/wallets/walletConnectors/chunk-BCXBFAL4.js +98 -0
  49. package/dist/wallets/walletConnectors/chunk-CMXZK5RR.js +94 -0
  50. package/dist/wallets/walletConnectors/chunk-F4EJ42XO.js +105 -0
  51. package/dist/wallets/walletConnectors/chunk-FL2VIO76.js +71 -0
  52. package/dist/wallets/walletConnectors/chunk-IIJOJ6AD.js +102 -0
  53. package/dist/wallets/walletConnectors/chunk-KZFAL4RZ.js +27 -0
  54. package/dist/wallets/walletConnectors/chunk-LJRV5JY7.js +95 -0
  55. package/dist/wallets/walletConnectors/chunk-M4SPCKW4.js +66 -0
  56. package/dist/wallets/walletConnectors/chunk-MSRKKVDE.js +98 -0
  57. package/dist/wallets/walletConnectors/chunk-NK3DYIAB.js +92 -0
  58. package/dist/wallets/walletConnectors/chunk-OMKARG6Y.js +94 -0
  59. package/dist/wallets/walletConnectors/chunk-R5GNFRXW.js +96 -0
  60. package/dist/wallets/walletConnectors/chunk-XB2GFXBL.js +107 -0
  61. package/dist/wallets/walletConnectors/clvWallet/clvWallet.js +2 -2
  62. package/dist/wallets/walletConnectors/coin98Wallet/coin98Wallet.js +2 -2
  63. package/dist/wallets/walletConnectors/coreWallet/coreWallet.js +2 -2
  64. package/dist/wallets/walletConnectors/dawnWallet/dawnWallet.js +2 -2
  65. package/dist/wallets/walletConnectors/foxWallet/foxWallet.js +2 -2
  66. package/dist/wallets/walletConnectors/frontierWallet/frontierWallet.js +2 -2
  67. package/dist/wallets/walletConnectors/funkitConnectWallet/funkitConnectWallet.js +4 -5
  68. package/dist/wallets/walletConnectors/gateWallet/gateWallet.js +2 -2
  69. package/dist/wallets/walletConnectors/index.js +72 -72
  70. package/dist/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.js +2 -2
  71. package/dist/wallets/walletConnectors/okxWallet/okxWallet.js +2 -2
  72. package/dist/wallets/walletConnectors/rainbowWallet/rainbowWallet.js +2 -2
  73. package/dist/wallets/walletConnectors/roninWallet/roninWallet.js +2 -2
  74. package/dist/wallets/walletConnectors/safepalWallet/safepalWallet.js +2 -2
  75. package/dist/wallets/walletConnectors/subWallet/subWallet.js +2 -2
  76. package/dist/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.js +2 -2
  77. package/dist/wallets/walletConnectors/trustWallet/trustWallet.js +2 -2
  78. package/dist/wallets/walletConnectors/zerionWallet/zerionWallet.js +2 -2
  79. package/package.json +11 -7
package/dist/index.js CHANGED
@@ -141,10 +141,8 @@ import React143, {
141
141
  import { useConfig as useConfig5, useConnect as useConnect2, useDisconnect as useDisconnect3 } from "wagmi";
142
142
 
143
143
  // src/consts/funkit.ts
144
- import {
145
- CheckoutState,
146
- FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS
147
- } from "@funkit/core";
144
+ import { CheckoutState } from "@funkit/api-base";
145
+ import { FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS } from "@funkit/core";
148
146
  var NATIVE_TOKEN = FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS;
149
147
  var FUNKIT_CONNECT_WALLET_ID = "funkitConnectWallet";
150
148
  var RESERVED_GROUP_NAME = "funkit-web2";
@@ -169,14 +167,24 @@ var IN_PROGRESS_CHECKOUT_STATES = [
169
167
  var TERMINAL_CHECKOUT_STATES = [
170
168
  CheckoutState.EXPIRED,
171
169
  CheckoutState.CHECKOUT_ERROR,
172
- CheckoutState.COMPLETED
170
+ CheckoutState.COMPLETED,
171
+ CheckoutState.CANCELLED
173
172
  ];
173
+ var FunkitSocialLoginMethod = /* @__PURE__ */ ((FunkitSocialLoginMethod2) => {
174
+ FunkitSocialLoginMethod2["GOOGLE"] = "google_oauth" /* google_oauth */;
175
+ FunkitSocialLoginMethod2["TWITTER"] = "twitter_oauth" /* twitter_oauth */;
176
+ FunkitSocialLoginMethod2["APPLE"] = "apple_oauth" /* apple_oauth */;
177
+ FunkitSocialLoginMethod2["FARCASTER"] = "farcaster" /* farcaster */;
178
+ return FunkitSocialLoginMethod2;
179
+ })(FunkitSocialLoginMethod || {});
174
180
  var PLACEHOLDER_FUNKIT_USER_INFO = {
175
- userId: null,
176
- accountLabel: "Email",
177
- accountName: "Loading...",
178
- accountNameDisplay: "Loading...",
179
- accountPicSrc: ""
181
+ id: "0x",
182
+ address: "0x",
183
+ name: "Guest",
184
+ nameTruncated: "Guest",
185
+ type: "unknown",
186
+ typeLabel: "",
187
+ iconSrc: ""
180
188
  };
181
189
 
182
190
  // src/utils/funLogger.ts
@@ -195,6 +203,9 @@ var FunLogger = class {
195
203
  this.apiKey = null;
196
204
  this.isDebugMode = false;
197
205
  this.userId = null;
206
+ this.userAddress = null;
207
+ this.userName = null;
208
+ this.userLoginType = null;
198
209
  this.sdkVersion = null;
199
210
  }
200
211
  getFunLogEnv() {
@@ -209,6 +220,9 @@ var FunLogger = class {
209
220
  data,
210
221
  apiKey: this.apiKey,
211
222
  userId: this.userId,
223
+ userName: this.userName,
224
+ userAddress: this.userAddress,
225
+ userLoginType: this.userLoginType,
212
226
  sdkVersion: this.sdkVersion
213
227
  };
214
228
  }
@@ -272,8 +286,20 @@ var FunLogger = class {
272
286
  getUserId() {
273
287
  return this.userId;
274
288
  }
275
- setUserId(userId) {
289
+ getUserAddress() {
290
+ return this.userAddress;
291
+ }
292
+ getUserName() {
293
+ return this.userName;
294
+ }
295
+ getUserLoginType() {
296
+ return this.userLoginType;
297
+ }
298
+ setUserInfo(userId, userAddress, userName, userLoginType) {
276
299
  this.userId = userId;
300
+ this.userAddress = userAddress;
301
+ this.userName = userName;
302
+ this.userLoginType = userLoginType;
277
303
  }
278
304
  };
279
305
  datadogLogs.init({
@@ -314,6 +340,287 @@ import React5, {
314
340
  } from "react";
315
341
  import { useConfig } from "wagmi";
316
342
 
343
+ // src/utils/memoize.ts
344
+ var memoize = (fn) => {
345
+ const cache = /* @__PURE__ */ new Map();
346
+ const memoizedFn = (...args) => {
347
+ const key = JSON.stringify(args);
348
+ if (cache.has(key)) {
349
+ return cache.get(key);
350
+ }
351
+ const result = fn(...args);
352
+ cache.set(key, result);
353
+ return result;
354
+ };
355
+ memoizedFn.cache = cache;
356
+ return memoizedFn;
357
+ };
358
+
359
+ // src/utils/flags/config.ts
360
+ var flagConfig = {
361
+ ["connect_sign_in_show_social_label" /* ConnectSignInShowSocialLabel */]: {
362
+ type: "boolean",
363
+ default_value: false,
364
+ overrides: [
365
+ {
366
+ if_any: [
367
+ {
368
+ key: "apiKey",
369
+ type: "isAnyOf",
370
+ values: ["hnHevQR0y394nBprGrvNx4HgoZHUwMet5mXTOBhf"]
371
+ }
372
+ ],
373
+ value: true
374
+ }
375
+ ]
376
+ },
377
+ ["select_payment_method_text" /* SelectPaymentMethodText */]: {
378
+ type: "string",
379
+ default_value: "Select Payment Method",
380
+ overrides: [
381
+ {
382
+ if_any: [
383
+ {
384
+ key: "userId",
385
+ type: "pctRollout",
386
+ pct: 50
387
+ }
388
+ ],
389
+ value: "Pay With"
390
+ }
391
+ ]
392
+ },
393
+ ["payment_method_copy_v1" /* PaymentMethodCopyV1 */]: {
394
+ type: "boolean",
395
+ default_value: false,
396
+ overrides: [
397
+ {
398
+ if_any: [
399
+ {
400
+ key: "userId",
401
+ type: "pctRollout",
402
+ pct: 100
403
+ }
404
+ ],
405
+ value: true
406
+ }
407
+ ]
408
+ }
409
+ };
410
+
411
+ // src/utils/flags/impl.ts
412
+ import { datadogLogs as datadogLogs2 } from "@datadog/browser-logs";
413
+ import fetch2 from "node-fetch";
414
+
415
+ // src/utils/flags/endpoint.ts
416
+ var FLAG_ENDPOINT_HOST = "sdk-cdn.fun.xyz";
417
+ var FLAG_PROD_ENDPOINT_PATH = "flags/v0/config.json";
418
+ var FLAG_PROD_ENDPOINT = `https://${FLAG_ENDPOINT_HOST}/${FLAG_PROD_ENDPOINT_PATH}`;
419
+
420
+ // src/utils/flags/hash.ts
421
+ var cyrb53 = (str, seed = 0) => {
422
+ let h1 = 3735928559 ^ seed;
423
+ let h2 = 1103547991 ^ seed;
424
+ for (let i = 0; i < str.length; i++) {
425
+ const ch = str.charCodeAt(i);
426
+ h1 = Math.imul(h1 ^ ch, 2654435761);
427
+ h2 = Math.imul(h2 ^ ch, 1597334677);
428
+ }
429
+ h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507);
430
+ h1 ^= Math.imul(h2 ^ h2 >>> 13, 3266489909);
431
+ h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507);
432
+ h2 ^= Math.imul(h1 ^ h1 >>> 13, 3266489909);
433
+ return 4294967296 * (2097151 & h2) + (h1 >>> 0);
434
+ };
435
+ var hashPct = (flag_key, value, pct) => {
436
+ const hashKey = `${flag_key}__${value}`;
437
+ return cyrb53(hashKey) % 100 < pct;
438
+ };
439
+
440
+ // src/utils/flags/impl.ts
441
+ async function fetchWithTimeout(url, options = {}, timeout = 15e3) {
442
+ const controller = new AbortController();
443
+ const id = setTimeout(() => controller.abort(), timeout);
444
+ options.signal = controller.signal;
445
+ try {
446
+ const response = await fetch2(url, options);
447
+ clearTimeout(id);
448
+ return response;
449
+ } catch (error) {
450
+ if (error.name === "AbortError") {
451
+ throw new Error(`Request timed out after ${timeout / 1e3} seconds`);
452
+ }
453
+ throw error;
454
+ }
455
+ }
456
+ var warn = (...args) => {
457
+ };
458
+ var fetchConfigFromServer = async () => {
459
+ const response = await fetchWithTimeout(FLAG_PROD_ENDPOINT, {}, 5e3);
460
+ const configData = await response.json();
461
+ logger.log("flag_fetchConfigFromServer", {
462
+ configData
463
+ });
464
+ return configData.flags;
465
+ };
466
+ var FeatureFlag = class {
467
+ constructor(_config, fetchFlagConfig = fetchConfigFromServer) {
468
+ this._config = _config;
469
+ this.userContext = null;
470
+ this.derivedFlags = null;
471
+ this.isUsingOnlineConfig = false;
472
+ this.flagConfig = _config;
473
+ this.fetchFlagConfig = memoize(fetchFlagConfig);
474
+ }
475
+ static createForTesting(flags2, fetchFlagConfig) {
476
+ return new FeatureFlag(flags2, fetchFlagConfig);
477
+ }
478
+ async init(userContext) {
479
+ try {
480
+ if (!this.isUsingOnlineConfig) {
481
+ this.flagConfig = await this.fetchFlagConfig();
482
+ this.isUsingOnlineConfig = true;
483
+ this.deriveAllFlags(userContext);
484
+ }
485
+ } catch (err) {
486
+ warn("Failed to fetch config:", err);
487
+ this.flagConfig = this._config;
488
+ this.isUsingOnlineConfig = false;
489
+ this.deriveAllFlags(userContext);
490
+ } finally {
491
+ }
492
+ }
493
+ deriveAllFlags(userContext) {
494
+ if (this.userContext && this.userContext.apiKey === userContext.apiKey && this.userContext.userId === userContext.userId) {
495
+ return;
496
+ }
497
+ this.derivedFlags = Object.fromEntries(
498
+ Object.entries(this.flagConfig).map(([key, flag]) => [
499
+ key,
500
+ this.deriveFlag(key, flag, userContext)
501
+ ])
502
+ );
503
+ this.userContext = userContext;
504
+ logger.log("flag_deriveAllFlags", {
505
+ flags: this.derivedFlags,
506
+ userContext
507
+ });
508
+ datadogLogs2.setGlobalContextProperty("flags", this.derivedFlags);
509
+ }
510
+ deriveFlag(flagKey, flagConfig2, context) {
511
+ let finalValue = flagConfig2.default_value;
512
+ for (const override of flagConfig2.overrides || []) {
513
+ if (override.if_any.some(
514
+ (condition) => this.evalCondition(flagKey, condition, context)
515
+ )) {
516
+ finalValue = override.value;
517
+ break;
518
+ }
519
+ }
520
+ return finalValue;
521
+ }
522
+ evalCondition(flagKey, condition, context) {
523
+ var _a, _b;
524
+ const needle = condition.key === "userId" ? context.userId : context.apiKey;
525
+ if (!needle) {
526
+ return false;
527
+ }
528
+ switch (condition.type) {
529
+ case "pctRollout": {
530
+ return hashPct(flagKey, needle, condition.pct);
531
+ }
532
+ case "isAnyOf": {
533
+ return (_b = (_a = condition.values) == null ? void 0 : _a.includes(needle)) != null ? _b : false;
534
+ }
535
+ default: {
536
+ }
537
+ }
538
+ const _ = condition;
539
+ throw new Error(`Unknown condition type: ${JSON.stringify(_)}`);
540
+ }
541
+ getBool(flagKey, fallback) {
542
+ var _a;
543
+ if (this.derivedFlags === null) {
544
+ logger.warn("flag_notInitialized", {
545
+ flagKey,
546
+ fallback
547
+ });
548
+ return fallback;
549
+ }
550
+ const flagValue = (_a = this.derivedFlags) == null ? void 0 : _a[flagKey];
551
+ return typeof flagValue === "boolean" ? flagValue : fallback;
552
+ }
553
+ getNumber(flagKey, fallback) {
554
+ var _a;
555
+ if (this.derivedFlags === null) {
556
+ logger.warn("flag_notInitialized", {
557
+ flagKey,
558
+ fallback
559
+ });
560
+ return fallback;
561
+ }
562
+ const flagValue = (_a = this.derivedFlags) == null ? void 0 : _a[flagKey];
563
+ return typeof flagValue === "number" ? flagValue : fallback;
564
+ }
565
+ getString(flagKey, fallback) {
566
+ var _a;
567
+ if (this.derivedFlags === null) {
568
+ logger.warn("flag_notInitialized", {
569
+ flagKey,
570
+ fallback
571
+ });
572
+ return fallback;
573
+ }
574
+ const flagValue = (_a = this.derivedFlags) == null ? void 0 : _a[flagKey];
575
+ return typeof flagValue === "string" ? flagValue : fallback;
576
+ }
577
+ };
578
+
579
+ // src/utils/flags/index.ts
580
+ var singleton = new FeatureFlag(flagConfig);
581
+ var getBool = memoize((...args) => {
582
+ const result = singleton.getBool(...args);
583
+ logger.log("flag_exposure", {
584
+ flagKey: args[0],
585
+ fallback: args[1],
586
+ flagValue: result,
587
+ type: "bool"
588
+ });
589
+ return result;
590
+ });
591
+ var getNumber = memoize((...args) => {
592
+ const result = singleton.getNumber(...args);
593
+ logger.log("flag_exposure", {
594
+ flagKey: args[0],
595
+ fallback: args[1],
596
+ flagValue: result,
597
+ type: "number"
598
+ });
599
+ return result;
600
+ });
601
+ var getString = memoize((...args) => {
602
+ const result = singleton.getString(...args);
603
+ logger.log("flag_exposure", {
604
+ flagKey: args[0],
605
+ fallback: args[1],
606
+ flagValue: result,
607
+ type: "string"
608
+ });
609
+ return result;
610
+ });
611
+ var init = (context) => {
612
+ singleton.init(context);
613
+ getBool.cache = /* @__PURE__ */ new Map();
614
+ getNumber.cache = /* @__PURE__ */ new Map();
615
+ getString.cache = /* @__PURE__ */ new Map();
616
+ };
617
+ var flags = {
618
+ init,
619
+ getBool,
620
+ getNumber,
621
+ getString
622
+ };
623
+
317
624
  // src/components/FunkitProvider/FunkitConfigContext.tsx
318
625
  import React4, { createContext as createContext2, useContext as useContext2, useMemo as useMemo2 } from "react";
319
626
 
@@ -793,7 +1100,12 @@ function FunkitConnectChainProvider({
793
1100
  configureEnvironment({
794
1101
  chain: initialChainFinal,
795
1102
  apiKey
796
- }).then(() => logger.log("Core configured"));
1103
+ }).then(() => {
1104
+ logger.log("Core configured");
1105
+ void flags.init({
1106
+ apiKey
1107
+ });
1108
+ });
797
1109
  }
798
1110
  }, [apiKey, initialChainFinal]);
799
1111
  return /* @__PURE__ */ React5.createElement(FunkitConnectChainContext.Provider, {
@@ -1497,7 +1809,7 @@ var GeneralWalletContext = createContext7({
1497
1809
  isUserLoggedIn: false,
1498
1810
  isWeb2Login: false,
1499
1811
  isWeb3Login: false,
1500
- userInfo: { ...PLACEHOLDER_FUNKIT_USER_INFO, globalFunkitUserId: "" },
1812
+ userInfo: PLACEHOLDER_FUNKIT_USER_INFO,
1501
1813
  isFetchingAssets: false,
1502
1814
  walletAssets: null,
1503
1815
  startAssetsListener: () => void 0,
@@ -1511,7 +1823,7 @@ function GeneralWalletProvider({ children }) {
1511
1823
  const { address, connector, isConnected, chain: activeChain } = useAccount2();
1512
1824
  const { connectors, disconnectAsync } = useDisconnect();
1513
1825
  const ensName = useMainnetEnsName(address);
1514
- const { web2AccountInfo, handleFunkitWeb2Logout } = useFunkitWeb2Login();
1826
+ const { web2UserInfo, handleFunkitWeb2Logout } = useFunkitWeb2Login();
1515
1827
  const { apiKey, accountModalConfig, paymentsConfig } = useFunkitConfig();
1516
1828
  const isWeb2Login = useMemo4(() => {
1517
1829
  return connector && connector.id === FUNKIT_CONNECT_WALLET_ID;
@@ -1523,37 +1835,46 @@ function GeneralWalletProvider({ children }) {
1523
1835
  return isWeb2Login || isWeb3Login;
1524
1836
  }, [isWeb2Login, isWeb3Login]);
1525
1837
  const userInfo = useMemo4(() => {
1526
- let baseInfo;
1527
- if (isWeb2Login) {
1528
- baseInfo = web2AccountInfo;
1529
- } else if (isWeb3Login) {
1530
- baseInfo = {
1531
- userId: address,
1532
- accountLabel: connector == null ? void 0 : connector.name,
1533
- accountName: ensName ? ensName : address,
1534
- accountNameDisplay: ensName ? formatENS(ensName) : formatAddress(address || "")
1838
+ if (!address)
1839
+ return PLACEHOLDER_FUNKIT_USER_INFO;
1840
+ if (isWeb2Login)
1841
+ return {
1842
+ ...web2UserInfo,
1843
+ address
1844
+ };
1845
+ if (isWeb3Login) {
1846
+ return {
1847
+ id: address,
1848
+ address,
1849
+ name: ensName ? ensName : address,
1850
+ nameTruncated: ensName ? formatENS(ensName) : formatAddress(address || ""),
1851
+ type: "eoa",
1852
+ typeLabel: (connector == null ? void 0 : connector.name) || "",
1853
+ iconSrc: ""
1535
1854
  };
1536
- } else {
1537
- baseInfo = PLACEHOLDER_FUNKIT_USER_INFO;
1538
1855
  }
1539
- return {
1540
- ...baseInfo,
1541
- globalFunkitUserId: isUserLoggedIn ? `${address}|${baseInfo.accountName}|${apiKey}` : `0x|UnknownGuest|${apiKey}`
1542
- };
1856
+ return PLACEHOLDER_FUNKIT_USER_INFO;
1543
1857
  }, [
1544
1858
  address,
1545
- apiKey,
1546
1859
  connector == null ? void 0 : connector.name,
1547
1860
  ensName,
1548
- isUserLoggedIn,
1549
1861
  isWeb2Login,
1550
1862
  isWeb3Login,
1551
- web2AccountInfo
1863
+ web2UserInfo
1552
1864
  ]);
1553
1865
  useEffect6(() => {
1554
- if (userInfo.globalFunkitUserId !== logger.getUserId()) {
1555
- logger.log("settingUserId", { newUserId: userInfo.globalFunkitUserId });
1556
- logger.setUserId(userInfo.globalFunkitUserId);
1866
+ if (userInfo.id !== logger.getUserId() || userInfo.address !== logger.getUserAddress() || userInfo.name !== logger.getUserName() || userInfo.type !== logger.getUserLoginType()) {
1867
+ logger.log("settingUserInfo", userInfo);
1868
+ logger.setUserInfo(
1869
+ userInfo.id,
1870
+ userInfo.address,
1871
+ userInfo.name,
1872
+ userInfo.type
1873
+ );
1874
+ void flags.init({
1875
+ apiKey,
1876
+ userId: userInfo.id
1877
+ });
1557
1878
  }
1558
1879
  }, [userInfo]);
1559
1880
  const intervalRef = useRef2();
@@ -1600,7 +1921,7 @@ function GeneralWalletProvider({ children }) {
1600
1921
  setIsFetchingAssets(false);
1601
1922
  }
1602
1923
  }
1603
- }, [isConnected, address, accountModalConfig.showUnknownTokens]);
1924
+ }, [isConnected, address, apiKey, accountModalConfig.showUnknownTokens]);
1604
1925
  useEffect6(() => {
1605
1926
  _fetchAssetsIfPossible();
1606
1927
  }, [refreshSymbol, activeChain]);
@@ -1861,10 +2182,11 @@ import React91, { useCallback as useCallback22, useMemo as useMemo26, useState a
1861
2182
 
1862
2183
  // src/components/FunkitProvider/FunkitCheckoutContext.tsx
1863
2184
  import {
2185
+ CheckoutState as CheckoutState3,
1864
2186
  getAssetPriceInfo as getAssetPriceInfo2,
1865
2187
  getCheckoutByDepositAddress,
1866
2188
  getCheckoutQuote as getApiCheckoutQuote,
1867
- getCheckoutsByRecipientAddress,
2189
+ getCheckoutsByUserId,
1868
2190
  getMoonpayBuyQuoteForCreditCard,
1869
2191
  initializeCheckout as postApiInitializeCheckout,
1870
2192
  meshPreviewTransfer
@@ -1966,10 +2288,12 @@ function generateQuoteApiErrorForDisplay(errorMessage = "") {
1966
2288
  }
1967
2289
 
1968
2290
  // src/utils/checkout.ts
1969
- import { getAssetPriceInfo } from "@funkit/api-base";
1970
2291
  import {
1971
- CHECKOUT_SPONSOR_SUPPORT_CHAINS,
1972
2292
  CheckoutState as CheckoutState2,
2293
+ getAssetPriceInfo
2294
+ } from "@funkit/api-base";
2295
+ import {
2296
+ CHECKOUT_SPONSOR_SUPPORT_CHAINS,
1973
2297
  CONTRACT_ADDRESSES,
1974
2298
  FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS as FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS2,
1975
2299
  FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO3,
@@ -2294,12 +2618,6 @@ function validateCheckoutConfig(config, isUserLoggedIn) {
2294
2618
  message: `Invalid customRecipient configuration: Has to be a valid address.`
2295
2619
  };
2296
2620
  }
2297
- if (config.customRecipient && isAddress(config.customRecipient) && isUserLoggedIn) {
2298
- return {
2299
- isValid: false,
2300
- message: `Invalid customRecipient configuration: Unsupported when a user is logged in.`
2301
- };
2302
- }
2303
2621
  if (config.customRecipient && !!config.actionsParams.length) {
2304
2622
  return {
2305
2623
  isValid: false,
@@ -2551,7 +2869,8 @@ function FunkitCheckoutProvider({ children }) {
2551
2869
  logoutSymbol,
2552
2870
  isWeb2Login,
2553
2871
  isWeb3Login,
2554
- isUserLoggedIn
2872
+ isUserLoggedIn,
2873
+ userInfo
2555
2874
  } = useGeneralWallet();
2556
2875
  const { switchChainAsync } = useFunkitSwitchChains({});
2557
2876
  const [activeCheckouts, setActiveCheckouts] = useState8({});
@@ -2578,9 +2897,9 @@ function FunkitCheckoutProvider({ children }) {
2578
2897
  let newCheckoutHistoryList = [];
2579
2898
  setIsRefreshingCheckoutHistory(true);
2580
2899
  if (isUserLoggedIn) {
2581
- logger.log("getCheckoutsByRecipientAddress");
2582
- newCheckoutHistoryList = await getCheckoutsByRecipientAddress({
2583
- recipientAddress: walletAddress,
2900
+ logger.log("getCheckoutsByUserId");
2901
+ newCheckoutHistoryList = await getCheckoutsByUserId({
2902
+ userId: userInfo.id,
2584
2903
  apiKey: funkitConfig.apiKey
2585
2904
  });
2586
2905
  } else if (isGuestUserOnCheckoutHistory) {
@@ -2592,7 +2911,7 @@ function FunkitCheckoutProvider({ children }) {
2592
2911
  newCheckoutHistoryList = singleCheckoutHistory ? [singleCheckoutHistory] : [];
2593
2912
  }
2594
2913
  setCheckoutHistoryList(
2595
- newCheckoutHistoryList.sort((a, b) => b.createdTimeMs - a.createdTimeMs)
2914
+ newCheckoutHistoryList.filter((item) => item.state !== CheckoutState3.CANCELLED).sort((a, b) => b.createdTimeMs - a.createdTimeMs)
2596
2915
  );
2597
2916
  setIsCheckoutHistoryInited(true);
2598
2917
  } catch (err) {
@@ -2605,7 +2924,8 @@ function FunkitCheckoutProvider({ children }) {
2605
2924
  historyDepositAddress,
2606
2925
  isGuestUserOnCheckoutHistory,
2607
2926
  isUserLoggedIn,
2608
- walletAddress
2927
+ walletAddress,
2928
+ userInfo
2609
2929
  ]);
2610
2930
  useEffect7(() => {
2611
2931
  if (isUserLoggedIn || isGuestUserOnCheckoutHistory) {
@@ -2864,6 +3184,7 @@ function FunkitCheckoutProvider({ children }) {
2864
3184
  ]);
2865
3185
  const inputCustomRecipient = checkoutItem.initSettings.config.customRecipient;
2866
3186
  const baseQuote = await getApiCheckoutQuote({
3187
+ userId: userInfo.id,
2867
3188
  fromChainId,
2868
3189
  fromTokenAddress,
2869
3190
  fromTokenDecimals,
@@ -2885,10 +3206,12 @@ function FunkitCheckoutProvider({ children }) {
2885
3206
  ...checkoutItem,
2886
3207
  quoteStepMessage: newPaymentMethodInfo.paymentMethod === "balance" /* ACCOUNT_BALANCE */ && isWeb2Login ? PENDING_QUOTE_MESSAGE_GENERATOR[3 /* FINALIZING */]() : newPaymentMethodInfo.paymentMethod === "balance" /* ACCOUNT_BALANCE */ && isWeb3Login ? PENDING_QUOTE_MESSAGE_GENERATOR[2 /* ESTIMATING_GAS */]() : PENDING_QUOTE_MESSAGE_GENERATOR[1 /* VERIFYING_PROVIDER */](newPaymentMethodInfo.title)
2887
3208
  };
2888
- setActiveCheckouts((prev) => ({
2889
- ...prev,
2890
- [checkoutId]: checkoutItem
2891
- }));
3209
+ setActiveCheckouts(
3210
+ (prev) => ({
3211
+ ...prev,
3212
+ [checkoutId]: checkoutItem
3213
+ })
3214
+ );
2892
3215
  }
2893
3216
  const newFinalDollarValue = baseQuote.estSubtotalUsd;
2894
3217
  const networkFeesUsdBreakdown = {
@@ -2907,26 +3230,32 @@ function FunkitCheckoutProvider({ children }) {
2907
3230
  if (newPaymentMethodInfo.paymentMethod === "balance" /* ACCOUNT_BALANCE */ && isWeb3Login && checkoutItem.selectedSourceAssetInfo.chainId !== zkSync.id.toString()) {
2908
3231
  let gasEstimateResult = BigInt(0);
2909
3232
  const isNativeTokenTransfer = checkoutItem.selectedSourceAssetInfo.address === NATIVE_TOKEN;
2910
- if (isNativeTokenTransfer) {
2911
- gasEstimateResult = await estimateGas(wagmiConfig, {
2912
- to: DUMMY_TRANSFER_PARAMS.toAddress,
2913
- chainId: parseInt(checkoutItem.selectedSourceAssetInfo.chainId),
2914
- value: BigInt(baseQuote.estTotalFromAmountBaseUnit)
2915
- });
2916
- } else {
2917
- gasEstimateResult = await estimateGas(wagmiConfig, {
2918
- to: checkoutItem.selectedSourceAssetInfo.address,
2919
- chainId: parseInt(checkoutItem.selectedSourceAssetInfo.chainId),
2920
- data: encodeFunctionData({
2921
- abi: erc20Abi,
2922
- functionName: "transfer",
2923
- args: [
2924
- DUMMY_TRANSFER_PARAMS.toAddress,
2925
- BigInt(baseQuote.estTotalFromAmountBaseUnit)
2926
- ]
2927
- })
2928
- });
3233
+ logger.log("gasEstimateResult:before", { gasEstimateResult });
3234
+ try {
3235
+ if (isNativeTokenTransfer) {
3236
+ gasEstimateResult = await estimateGas(wagmiConfig, {
3237
+ to: DUMMY_TRANSFER_PARAMS.toAddress,
3238
+ chainId: parseInt(checkoutItem.selectedSourceAssetInfo.chainId),
3239
+ value: BigInt(baseQuote.estTotalFromAmountBaseUnit)
3240
+ });
3241
+ } else {
3242
+ gasEstimateResult = await estimateGas(wagmiConfig, {
3243
+ to: checkoutItem.selectedSourceAssetInfo.address,
3244
+ chainId: parseInt(checkoutItem.selectedSourceAssetInfo.chainId),
3245
+ data: encodeFunctionData({
3246
+ abi: erc20Abi,
3247
+ functionName: "transfer",
3248
+ args: [
3249
+ DUMMY_TRANSFER_PARAMS.toAddress,
3250
+ BigInt(baseQuote.estTotalFromAmountBaseUnit)
3251
+ ]
3252
+ })
3253
+ });
3254
+ }
3255
+ } catch (err) {
3256
+ logger.error("_getCheckoutQuote:estimateGas:error", err);
2929
3257
  }
3258
+ logger.log("gasEstimateResult:after", { gasEstimateResult });
2930
3259
  const gasInEthAmount = GAS_ESTIMATE_MULTIPLER * parseFloat(formatEther(gasEstimateResult));
2931
3260
  networkFeesUsdBreakdown.networkFeesUsdFromEoaGas = await _calculateAssetUsdValue(
2932
3261
  checkoutItem.selectedSourceAssetInfo.chainId,
@@ -3054,10 +3383,12 @@ function FunkitCheckoutProvider({ children }) {
3054
3383
  quoteStepMessage: "",
3055
3384
  quoteErrorMessage: ""
3056
3385
  };
3057
- setActiveCheckouts((prev) => ({
3058
- ...prev,
3059
- [checkoutId]: checkoutItem
3060
- }));
3386
+ setActiveCheckouts(
3387
+ (prev) => ({
3388
+ ...prev,
3389
+ [checkoutId]: checkoutItem
3390
+ })
3391
+ );
3061
3392
  return true;
3062
3393
  } catch (err) {
3063
3394
  const generatedErrorIfAny = generateQuoteApiErrorForDisplay(err.message);
@@ -3065,16 +3396,18 @@ function FunkitCheckoutProvider({ children }) {
3065
3396
  generatedErrorIfAny,
3066
3397
  checkoutItem
3067
3398
  });
3068
- setActiveCheckouts((prev) => ({
3069
- ...prev,
3070
- [checkoutId]: {
3071
- ...checkoutItem,
3072
- isQuoting: false,
3073
- latestQuote: null,
3074
- quoteStepMessage: "",
3075
- quoteErrorMessage: generatedErrorIfAny ? generatedErrorIfAny : "An error occured while generating the quote. Please try again with a different payment method or payment asset."
3076
- }
3077
- }));
3399
+ setActiveCheckouts(
3400
+ (prev) => ({
3401
+ ...prev,
3402
+ [checkoutId]: {
3403
+ ...checkoutItem,
3404
+ isQuoting: false,
3405
+ latestQuote: null,
3406
+ quoteStepMessage: "",
3407
+ quoteErrorMessage: generatedErrorIfAny ? generatedErrorIfAny : "An error occured while generating the quote. Please try again with a different payment method or payment asset."
3408
+ }
3409
+ })
3410
+ );
3078
3411
  return false;
3079
3412
  }
3080
3413
  },
@@ -3085,7 +3418,8 @@ function FunkitCheckoutProvider({ children }) {
3085
3418
  isWeb2Login,
3086
3419
  isWeb3Login,
3087
3420
  wagmiConfig,
3088
- walletAddress
3421
+ walletAddress,
3422
+ userInfo
3089
3423
  ]
3090
3424
  );
3091
3425
  const _generateSignedBatchOperation = useCallback7(
@@ -3696,12 +4030,12 @@ var animateContentInClass = "stgjxl2";
3696
4030
  var animateContentOutClass = "stgjxl3";
3697
4031
 
3698
4032
  // src/hooks/useCheckoutStateBooleans.ts
3699
- import { CheckoutState as CheckoutState3 } from "@funkit/core";
4033
+ import { CheckoutState as CheckoutState4 } from "@funkit/api-base";
3700
4034
  function useCheckoutStateBooleans(checkoutState) {
3701
4035
  const isProcessing = IN_PROGRESS_CHECKOUT_STATES.includes(checkoutState);
3702
- const isCompleted = checkoutState === CheckoutState3.COMPLETED;
3703
- const isError = checkoutState === CheckoutState3.CHECKOUT_ERROR;
3704
- const isExpired = checkoutState === CheckoutState3.EXPIRED;
4036
+ const isCompleted = checkoutState === CheckoutState4.COMPLETED;
4037
+ const isError = checkoutState === CheckoutState4.CHECKOUT_ERROR;
4038
+ const isExpired = checkoutState === CheckoutState4.EXPIRED;
3705
4039
  const isFailed = isError || isExpired;
3706
4040
  const isTerminal = TERMINAL_CHECKOUT_STATES.includes(checkoutState);
3707
4041
  return {
@@ -4543,7 +4877,6 @@ import {
4543
4877
  } from "@funkit/api-base";
4544
4878
  import { FUNKIT_CONNECT_SUPPORTED_CHAINS_ID_LIST } from "@funkit/core";
4545
4879
  var FUNKIT_MESH_CLIENT_ID = "8132aff4-56c9-4b1d-85b4-08dbdcc6199d";
4546
- var MESH_DEFAULT_USER_ID = "meshconnectkit";
4547
4880
  var MeshExchanges = /* @__PURE__ */ ((MeshExchanges4) => {
4548
4881
  MeshExchanges4["Robinhood"] = "Robinhood";
4549
4882
  MeshExchanges4["ETrade"] = "ETrade";
@@ -4726,6 +5059,7 @@ function useFunkitMesh({
4726
5059
  onMeshModalClose
4727
5060
  }) {
4728
5061
  const { apiKey } = useFunkitConfig();
5062
+ const { userInfo } = useGeneralWallet();
4729
5063
  const { meshBrokerDataMap, setDataMapAndCache } = useContext10(FunkitMeshContext);
4730
5064
  const handleIntegrationConnected = useCallback10(
4731
5065
  (brokerData) => {
@@ -4770,7 +5104,7 @@ function useFunkitMesh({
4770
5104
  onConnected == null ? void 0 : onConnected(meshBrokerDataMap[brokerage]);
4771
5105
  } else {
4772
5106
  const response = await fetchMeshLinkToken(
4773
- MESH_DEFAULT_USER_ID,
5107
+ userInfo.id,
4774
5108
  brokerage,
4775
5109
  apiKey
4776
5110
  );
@@ -4788,7 +5122,8 @@ function useFunkitMesh({
4788
5122
  hasActiveConnectionCheck,
4789
5123
  meshBrokerDataMap,
4790
5124
  onBeforeConnect,
4791
- onConnected
5125
+ onConnected,
5126
+ userInfo.id
4792
5127
  ]
4793
5128
  );
4794
5129
  const unlinkBrokerage = useCallback10(
@@ -6436,7 +6771,7 @@ function FunPaymentMoonpayType({
6436
6771
  },
6437
6772
  theme: active2.moonpayTheme,
6438
6773
  colorCode: moonpayButtonColor,
6439
- externalCustomerId: userInfo.globalFunkitUserId
6774
+ externalCustomerId: userInfo.id
6440
6775
  })), paymentFlow === 0 /* DEPOSIT */ ? /* @__PURE__ */ React59.createElement(Box, {
6441
6776
  width: "full"
6442
6777
  }, /* @__PURE__ */ React59.createElement(FunButton, {
@@ -6912,7 +7247,13 @@ var LightningIcon = ({ color }) => {
6912
7247
  var PAYMENT_METHOD_CONFIG = {
6913
7248
  ["balance" /* ACCOUNT_BALANCE */]: {
6914
7249
  label: DEFAULT_TEXT_CUSTOMIZATIONS.accountBalance,
6915
- labelDynamic: (textCustomizations, walletAddress) => `${textCustomizations.accountBalance}${walletAddress ? ` (${walletAddress})` : ""}`,
7250
+ labelDynamic: (textCustomizations, walletAddress) => {
7251
+ const walletSuffix = walletAddress ? ` (${walletAddress})` : "";
7252
+ if (textCustomizations.accountBalance !== DEFAULT_TEXT_CUSTOMIZATIONS.accountBalance) {
7253
+ return `${textCustomizations.accountBalance}${walletSuffix}`;
7254
+ }
7255
+ return flags.getBool("payment_method_copy_v1" /* PaymentMethodCopyV1 */, false) ? `Wallet${walletSuffix}` : `${textCustomizations.accountBalance}${walletSuffix}`;
7256
+ },
6916
7257
  timeIconDynamic: (color) => /* @__PURE__ */ React70.createElement(LightningIcon, {
6917
7258
  color
6918
7259
  }),
@@ -6923,7 +7264,12 @@ var PAYMENT_METHOD_CONFIG = {
6923
7264
  },
6924
7265
  ["card" /* CARD */]: {
6925
7266
  label: DEFAULT_TEXT_CUSTOMIZATIONS.debitOrCredit,
6926
- labelDynamic: (textCustomizations) => textCustomizations.debitOrCredit,
7267
+ labelDynamic: (textCustomizations) => {
7268
+ if (textCustomizations.debitOrCredit !== DEFAULT_TEXT_CUSTOMIZATIONS.debitOrCredit) {
7269
+ return textCustomizations.debitOrCredit;
7270
+ }
7271
+ return flags.getBool("payment_method_copy_v1" /* PaymentMethodCopyV1 */, false) ? "Card" : textCustomizations.debitOrCredit;
7272
+ },
6927
7273
  timeIconDynamic: (color) => /* @__PURE__ */ React70.createElement(ClockIcon, {
6928
7274
  color
6929
7275
  }),
@@ -6934,7 +7280,12 @@ var PAYMENT_METHOD_CONFIG = {
6934
7280
  },
6935
7281
  ["brokerage" /* BROKERAGE */]: {
6936
7282
  label: DEFAULT_TEXT_CUSTOMIZATIONS.brokerageOrExchange,
6937
- labelDynamic: (textCustomizations) => textCustomizations.brokerageOrExchange,
7283
+ labelDynamic: (textCustomizations) => {
7284
+ if (textCustomizations.brokerageOrExchange !== DEFAULT_TEXT_CUSTOMIZATIONS.brokerageOrExchange) {
7285
+ return textCustomizations.brokerageOrExchange;
7286
+ }
7287
+ return flags.getBool("payment_method_copy_v1" /* PaymentMethodCopyV1 */, false) ? "Exchange" : textCustomizations.brokerageOrExchange;
7288
+ },
6938
7289
  timeIconDynamic: (color) => /* @__PURE__ */ React70.createElement(ClockIcon, {
6939
7290
  color
6940
7291
  }),
@@ -7082,7 +7433,7 @@ function FunPaymentMethods({
7082
7433
  );
7083
7434
  const [isContinuing, setIsContinuing] = useState17(false);
7084
7435
  useWalletAssetsListener();
7085
- const { walletAssets, isWeb3Login, isWeb2Login } = useGeneralWallet();
7436
+ const { walletAssets, isWeb3Login, isWeb2Login, isUserLoggedIn } = useGeneralWallet();
7086
7437
  const {
7087
7438
  checkoutItem,
7088
7439
  reDraftSymbol,
@@ -7181,8 +7532,8 @@ function FunPaymentMethods({
7181
7532
  ]);
7182
7533
  const PaymentMethodListWithStatus = useMemo16(() => {
7183
7534
  return Object.keys(PAYMENT_METHOD_CONFIG).map((paymentMethod) => {
7184
- var _a2, _b2, _c2;
7185
- if (paymentFlow === 0 /* DEPOSIT */ && paymentMethod === "balance" /* ACCOUNT_BALANCE */ || paymentFlow === 1 /* CHECKOUT */ && paymentMethod === "transfer" /* TRANSFER */ || paymentFlow === 1 /* CHECKOUT */ && paymentMethod === "balance" /* ACCOUNT_BALANCE */ && !!((_b2 = (_a2 = checkoutItem == null ? void 0 : checkoutItem.initSettings) == null ? void 0 : _a2.config) == null ? void 0 : _b2.customRecipient) || paymentMethod === "otc" /* OTC */ && !((_c2 = paymentsConfig.otcConfig) == null ? void 0 : _c2.isEnabled)) {
7535
+ var _a2;
7536
+ if (paymentFlow === 0 /* DEPOSIT */ && paymentMethod === "balance" /* ACCOUNT_BALANCE */ || paymentFlow === 1 /* CHECKOUT */ && paymentMethod === "transfer" /* TRANSFER */ || paymentFlow === 1 /* CHECKOUT */ && paymentMethod === "balance" /* ACCOUNT_BALANCE */ && !isUserLoggedIn || paymentMethod === "otc" /* OTC */ && !((_a2 = paymentsConfig.otcConfig) == null ? void 0 : _a2.isEnabled)) {
7186
7537
  return {
7187
7538
  paymentMethod,
7188
7539
  status: false,
@@ -7238,6 +7589,15 @@ function FunPaymentMethods({
7238
7589
  });
7239
7590
  }
7240
7591
  }, [canContinue, onSelect, selectedOption]);
7592
+ const selectPaymentMethod = useMemo16(() => {
7593
+ if (textCustomizations.selectPaymentMethod !== DEFAULT_TEXT_CUSTOMIZATIONS.selectPaymentMethod) {
7594
+ return textCustomizations.selectPaymentMethod;
7595
+ }
7596
+ return flags.getString(
7597
+ "select_payment_method_text" /* SelectPaymentMethodText */,
7598
+ textCustomizations.selectPaymentMethod
7599
+ );
7600
+ }, [textCustomizations]);
7241
7601
  return /* @__PURE__ */ React70.createElement(Box, {
7242
7602
  display: "flex",
7243
7603
  flexDirection: "column",
@@ -7256,7 +7616,7 @@ function FunPaymentMethods({
7256
7616
  size: "18",
7257
7617
  weight: "semibold",
7258
7618
  color: "modalTextSecondary"
7259
- }, textCustomizations.selectPaymentMethod), /* @__PURE__ */ React70.createElement(Box, {
7619
+ }, selectPaymentMethod), /* @__PURE__ */ React70.createElement(Box, {
7260
7620
  id: "method-list",
7261
7621
  display: "flex",
7262
7622
  flexDirection: "column",
@@ -9720,9 +10080,7 @@ function CheckoutPrimaryInfo({
9720
10080
  }
9721
10081
 
9722
10082
  // src/components/FunTransactionSummary/FunTxSummaryHistory.tsx
9723
- import {
9724
- FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9
9725
- } from "@funkit/core";
10083
+ import { FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO9 } from "@funkit/core";
9726
10084
  import React87, { useMemo as useMemo24 } from "react";
9727
10085
 
9728
10086
  // src/components/Icons/RedirectIcon.tsx
@@ -10183,7 +10541,13 @@ function FunCheckoutHistoryHelp({
10183
10541
 
10184
10542
  App ID: ${apiKey}
10185
10543
 
10186
- User ID: ${userInfo.globalFunkitUserId}
10544
+ User ID: ${userInfo.id}
10545
+
10546
+ User Name: ${userInfo.name}
10547
+
10548
+ User Address: ${userInfo.address}
10549
+
10550
+ Checkout Recipient Address: ${checkoutHistoryInfo.recipientAddr}
10187
10551
 
10188
10552
  =========================
10189
10553
 
@@ -10390,7 +10754,7 @@ function FunCheckoutHistoryContent({
10390
10754
  }
10391
10755
 
10392
10756
  // src/components/ProfileDetails/FunProfileViews/ActivityHistory/ActivityHistory.tsx
10393
- import { CheckoutState as CheckoutState4 } from "@funkit/core";
10757
+ import { CheckoutState as CheckoutState5 } from "@funkit/api-base";
10394
10758
  import React95, { useEffect as useEffect22, useMemo as useMemo28, useState as useState27 } from "react";
10395
10759
 
10396
10760
  // src/components/FunNotification/FunCheckoutNotification.tsx
@@ -10654,11 +11018,11 @@ function ActivityHistory({
10654
11018
  });
10655
11019
  } else if (activeTab === "Failed" /* FAILED */) {
10656
11020
  sortedList = [
10657
- ...checkoutHistoryStateMap[CheckoutState4.EXPIRED],
10658
- ...checkoutHistoryStateMap[CheckoutState4.CHECKOUT_ERROR]
11021
+ ...checkoutHistoryStateMap[CheckoutState5.EXPIRED],
11022
+ ...checkoutHistoryStateMap[CheckoutState5.CHECKOUT_ERROR]
10659
11023
  ];
10660
11024
  } else if (activeTab === "Completed" /* COMPLETED */) {
10661
- sortedList = checkoutHistoryStateMap[CheckoutState4.COMPLETED];
11025
+ sortedList = checkoutHistoryStateMap[CheckoutState5.COMPLETED];
10662
11026
  }
10663
11027
  return sortedList.sort((a, b) => b.createdTimeMs - a.createdTimeMs);
10664
11028
  }, [activeTab, checkoutHistoryList, checkoutHistoryStateMap]);
@@ -11085,7 +11449,7 @@ var ProfileTitleSection = ({
11085
11449
  className: animateOut ? animateAvatarOutClass : animateAvatarInClass
11086
11450
  }, /* @__PURE__ */ React105.createElement(Avatar, {
11087
11451
  address: account.address,
11088
- imageUrl: account.ensAvatar || userInfo.accountPicSrc,
11452
+ imageUrl: account.ensAvatar || userInfo.iconSrc,
11089
11453
  loading: account.hasPendingTransactions,
11090
11454
  size: 24
11091
11455
  })), /* @__PURE__ */ React105.createElement(Text, {
@@ -11093,7 +11457,7 @@ var ProfileTitleSection = ({
11093
11457
  size: "16",
11094
11458
  weight: "semibold",
11095
11459
  className: animateOut ? animateTitleOutClass2 : animateTitleInClass2
11096
- }, userInfo.accountNameDisplay)), /* @__PURE__ */ React105.createElement(Box, {
11460
+ }, userInfo.nameTruncated)), /* @__PURE__ */ React105.createElement(Box, {
11097
11461
  display: "flex",
11098
11462
  alignItems: "center",
11099
11463
  flexDirection: "row",
@@ -11295,8 +11659,8 @@ function Settings({
11295
11659
  paddingBottom: "28",
11296
11660
  className: animateOut ? animateContentOutClass : animateContentInClass
11297
11661
  }, /* @__PURE__ */ React106.createElement(LineItem, {
11298
- label: isWeb3Login ? "Wallet" : userInfo.accountLabel,
11299
- value: isWeb3Login ? userInfo.accountLabel : userInfo.accountName
11662
+ label: isWeb3Login ? "Wallet" : userInfo.typeLabel,
11663
+ value: isWeb3Login ? userInfo.typeLabel : userInfo.name
11300
11664
  }), /* @__PURE__ */ React106.createElement(LineItem, {
11301
11665
  label: "Address",
11302
11666
  value: formatAddress(walletAddress),
@@ -12438,7 +12802,15 @@ function FunSignInStep({
12438
12802
  display: "flex",
12439
12803
  flexDirection: "column",
12440
12804
  gap: "14"
12441
- }, /* @__PURE__ */ React118.createElement(Box, {
12805
+ }, flags.getBool("connect_sign_in_show_social_label" /* ConnectSignInShowSocialLabel */, false) ? /* @__PURE__ */ React118.createElement(Box, {
12806
+ display: "flex",
12807
+ justifyContent: "center",
12808
+ width: "full"
12809
+ }, /* @__PURE__ */ React118.createElement(Text, {
12810
+ size: "14",
12811
+ color: "modalTextSecondary",
12812
+ weight: "medium"
12813
+ }, "or continue with")) : null, /* @__PURE__ */ React118.createElement(Box, {
12442
12814
  display: "flex",
12443
12815
  gap: "10"
12444
12816
  }, ENABLED_SOCIAL_ITEMS.map((socialItem) => /* @__PURE__ */ React118.createElement(FunIconButton, {
@@ -15097,7 +15469,7 @@ var FunkitWeb2Context = createContext19({
15097
15469
  loginErrorMessage: "",
15098
15470
  clearLoginError: () => void 0,
15099
15471
  handleFunkitWeb2Logout: () => Promise.resolve(void 0),
15100
- web2AccountInfo: PLACEHOLDER_FUNKIT_USER_INFO
15472
+ web2UserInfo: PLACEHOLDER_FUNKIT_USER_INFO
15101
15473
  });
15102
15474
  var LOGIN_METHOD_CACHE = "privy:login:method";
15103
15475
  var PRIVY_AUTH_URL = "https://auth.privy.io";
@@ -15105,13 +15477,6 @@ var PRIVY_IFRAME_ID = "privy-funkit-iframe";
15105
15477
  var PRIVY_OAUTH_CODE_URL_PARAM = "privy_oauth_code";
15106
15478
  var PRIVY_OAUTH_STATE_URL_PARAM = "privy_oauth_state";
15107
15479
  var RESEND_EMAIL_TIMEOUT_MS = 3e3;
15108
- var FunkitSocialLoginMethod = /* @__PURE__ */ ((FunkitSocialLoginMethod2) => {
15109
- FunkitSocialLoginMethod2["GOOGLE"] = "google_oauth" /* google_oauth */;
15110
- FunkitSocialLoginMethod2["TWITTER"] = "twitter_oauth" /* twitter_oauth */;
15111
- FunkitSocialLoginMethod2["APPLE"] = "apple_oauth" /* apple_oauth */;
15112
- FunkitSocialLoginMethod2["FARCASTER"] = "farcaster" /* farcaster */;
15113
- return FunkitSocialLoginMethod2;
15114
- })(FunkitSocialLoginMethod || {});
15115
15480
  var getLoginMethodFromCache = () => {
15116
15481
  try {
15117
15482
  return window.localStorage.getItem(LOGIN_METHOD_CACHE) || "";
@@ -15158,7 +15523,7 @@ var FunkitWeb2Provider = ({
15158
15523
  });
15159
15524
  setPrivyIframeUrl(newPrivy.embeddedWallet.getURL());
15160
15525
  setPrivy(newPrivy);
15161
- }, [funkitConfig.privyAppId]);
15526
+ }, [chains, funkitConfig.privyAppId]);
15162
15527
  const handleIframeMessage = useCallback31(
15163
15528
  (e) => {
15164
15529
  if (e.origin === PRIVY_AUTH_URL && privy) {
@@ -15470,69 +15835,60 @@ var FunkitWeb2Provider = ({
15470
15835
  },
15471
15836
  [privy]
15472
15837
  );
15473
- const userAccountInfo = useMemo35(() => {
15474
- if (loggedInUser && loggedInUser.linked_accounts && loggedInUser.linked_accounts.length > 0) {
15475
- const loggedInAccount = loggedInUser.linked_accounts.find(
15476
- (account) => (account == null ? void 0 : account.type) === loginMethod
15477
- );
15478
- if (!loggedInAccount)
15479
- return PLACEHOLDER_FUNKIT_USER_INFO;
15480
- switch (loggedInAccount.type) {
15481
- case "email" /* email */:
15482
- return {
15483
- userId: loggedInAccount.address,
15484
- accountLabel: "Email",
15485
- accountName: loggedInAccount.address,
15486
- accountNameDisplay: formatAccountName(
15487
- loggedInAccount.address,
15488
- true
15489
- ),
15490
- accountPicSrc: ""
15491
- };
15492
- case "farcaster" /* farcaster */:
15493
- return {
15494
- userId: `@${loggedInAccount.username}`,
15495
- accountLabel: "Farcaster ID",
15496
- accountName: `@${loggedInAccount.username}`,
15497
- accountNameDisplay: formatAccountName(
15498
- `@${loggedInAccount.username}`,
15499
- false
15500
- ),
15501
- accountPicSrc: loggedInAccount.profile_picture_url || ""
15502
- };
15503
- case "google_oauth" /* google_oauth */:
15504
- return {
15505
- userId: loggedInAccount.email,
15506
- accountLabel: "Email",
15507
- accountName: loggedInAccount.email,
15508
- accountNameDisplay: formatAccountName(loggedInAccount.email, true),
15509
- accountPicSrc: ""
15510
- };
15511
- case "twitter_oauth" /* twitter_oauth */:
15512
- return {
15513
- userId: `@${loggedInAccount.username}`,
15514
- accountLabel: "Twitter ID",
15515
- accountName: `@${loggedInAccount.username}`,
15516
- accountNameDisplay: formatAccountName(
15517
- `@${loggedInAccount.username}`,
15518
- false
15519
- ),
15520
- accountPicSrc: loggedInAccount.profile_picture_url || ""
15521
- };
15522
- case "apple_oauth" /* apple_oauth */:
15523
- return {
15524
- userId: loggedInAccount.email,
15525
- accountLabel: "Apple ID",
15526
- accountName: loggedInAccount.email,
15527
- accountNameDisplay: formatAccountName(loggedInAccount.email, true),
15528
- accountPicSrc: ""
15529
- };
15530
- default:
15531
- return PLACEHOLDER_FUNKIT_USER_INFO;
15532
- }
15533
- } else {
15838
+ const web2UserInfo = useMemo35(() => {
15839
+ var _a;
15840
+ if (!loggedInUser || !(loggedInUser == null ? void 0 : loggedInUser.linked_accounts) || !((_a = loggedInUser == null ? void 0 : loggedInUser.linked_accounts) == null ? void 0 : _a.length)) {
15534
15841
  return PLACEHOLDER_FUNKIT_USER_INFO;
15535
15842
  }
15843
+ const loggedInAccount = loggedInUser.linked_accounts.find(
15844
+ (account) => (account == null ? void 0 : account.type) === loginMethod
15845
+ );
15846
+ if (!loggedInAccount)
15847
+ return PLACEHOLDER_FUNKIT_USER_INFO;
15848
+ const id = loggedInUser.id;
15849
+ const type = loggedInAccount.type;
15850
+ let name = "";
15851
+ let nameTruncated = "";
15852
+ let iconSrc = "";
15853
+ let typeLabel = "";
15854
+ switch (loggedInAccount.type) {
15855
+ case "email" /* email */:
15856
+ name = loggedInAccount.address;
15857
+ nameTruncated = formatAccountName(loggedInAccount.address, true);
15858
+ typeLabel = "Email";
15859
+ break;
15860
+ case "google_oauth" /* google_oauth */:
15861
+ name = loggedInAccount.email;
15862
+ nameTruncated = formatAccountName(loggedInAccount.email, true);
15863
+ typeLabel = "Email";
15864
+ break;
15865
+ case "twitter_oauth" /* twitter_oauth */:
15866
+ name = `@${loggedInAccount.username}`;
15867
+ nameTruncated = formatAccountName(name, false);
15868
+ typeLabel = "Twitter ID";
15869
+ iconSrc = loggedInAccount.profile_picture_url || "";
15870
+ break;
15871
+ case "apple_oauth" /* apple_oauth */:
15872
+ name = loggedInAccount.email;
15873
+ nameTruncated = formatAccountName(loggedInAccount.email, true);
15874
+ typeLabel = "Apple ID";
15875
+ iconSrc = loggedInAccount.profile_picture_url || "";
15876
+ break;
15877
+ case "farcaster" /* farcaster */:
15878
+ name = `@${loggedInAccount.username}`;
15879
+ nameTruncated = formatAccountName(name, false);
15880
+ typeLabel = "Farcaster ID";
15881
+ iconSrc = loggedInAccount.profile_picture_url || "";
15882
+ break;
15883
+ }
15884
+ return {
15885
+ id,
15886
+ name,
15887
+ nameTruncated,
15888
+ type,
15889
+ typeLabel,
15890
+ iconSrc
15891
+ };
15536
15892
  }, [loggedInUser, loginMethod]);
15537
15893
  const contextValue = {
15538
15894
  isSendingOtpEmail,
@@ -15546,7 +15902,7 @@ var FunkitWeb2Provider = ({
15546
15902
  clearLoginError,
15547
15903
  handleFunkitWeb2Login,
15548
15904
  handleFunkitWeb2Logout,
15549
- web2AccountInfo: userAccountInfo
15905
+ web2UserInfo
15550
15906
  };
15551
15907
  return /* @__PURE__ */ React143.createElement(FunkitWeb2Context.Provider, {
15552
15908
  value: contextValue
@@ -16082,7 +16438,7 @@ function AccountButton({
16082
16438
  )
16083
16439
  }, /* @__PURE__ */ React148.createElement(Avatar, {
16084
16440
  address: account.address,
16085
- imageUrl: account.ensAvatar || userInfo.accountPicSrc,
16441
+ imageUrl: account.ensAvatar || userInfo.iconSrc,
16086
16442
  loading: account.hasPendingTransactions,
16087
16443
  size: 24
16088
16444
  })), /* @__PURE__ */ React148.createElement(Box, {
@@ -16095,7 +16451,7 @@ function AccountButton({
16095
16451
  (value) => value === "full" || value === "address" ? "block" : "none"
16096
16452
  ),
16097
16453
  style: { textWrap: "nowrap" }
16098
- }, userInfo.accountNameDisplay), /* @__PURE__ */ React148.createElement(DropdownIcon, null)))));
16454
+ }, userInfo.nameTruncated), /* @__PURE__ */ React148.createElement(DropdownIcon, null)))));
16099
16455
  }
16100
16456
  function ConnectButton({
16101
16457
  accountStatus = defaultProps.accountStatus,
@@ -16995,7 +17351,7 @@ function setFunkitConnectVersion({ version }) {
16995
17351
  localStorage.setItem(storageKey6, version);
16996
17352
  }
16997
17353
  function getCurrentSdkVersion() {
16998
- return "1.2.6";
17354
+ return "1.3.0";
16999
17355
  }
17000
17356
  function useFingerprint() {
17001
17357
  const fingerprint = useCallback33(() => {