@b3dotfun/sdk 0.0.87-alpha.1 → 0.0.87-alpha.3

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 (90) hide show
  1. package/README.md +2 -1
  2. package/dist/cjs/anyspend/react/components/AnySpend.js +18 -24
  3. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +0 -1
  4. package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
  5. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +2 -1
  6. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +17 -47
  7. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.native.js +6 -7
  8. package/dist/cjs/global-account/react/components/B3Provider/types.d.ts +0 -5
  9. package/dist/cjs/global-account/react/components/B3Provider/types.js +4 -4
  10. package/dist/cjs/global-account/react/components/B3Provider/useB3.d.ts +1 -0
  11. package/dist/cjs/global-account/react/components/B3Provider/useB3.js +1 -0
  12. package/dist/cjs/global-account/react/components/B3Provider/useB3Account.d.ts +1 -0
  13. package/dist/cjs/global-account/react/components/B3Provider/useB3Account.js +10 -0
  14. package/dist/cjs/global-account/react/components/B3Provider/useB3Config.d.ts +9 -0
  15. package/dist/cjs/global-account/react/components/B3Provider/useB3Config.js +23 -0
  16. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +1 -1
  17. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +1 -2
  18. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +2 -1
  19. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +2 -1
  20. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3.js +2 -1
  21. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +2 -1
  22. package/dist/cjs/global-account/react/components/index.d.ts +2 -0
  23. package/dist/cjs/global-account/react/components/index.js +7 -3
  24. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +3 -2
  25. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +1 -1
  26. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.d.ts +7 -0
  27. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.js +42 -0
  28. package/dist/cjs/global-account/react/hooks/useTurnkeyAuth.js +6 -4
  29. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +2 -2
  30. package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +1 -1
  31. package/dist/esm/anyspend/react/components/AnySpend.js +18 -24
  32. package/dist/esm/anyspend/react/components/AnySpendCustom.js +0 -1
  33. package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
  34. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -2
  35. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +21 -51
  36. package/dist/esm/global-account/react/components/B3Provider/B3Provider.native.js +6 -7
  37. package/dist/esm/global-account/react/components/B3Provider/types.d.ts +0 -5
  38. package/dist/esm/global-account/react/components/B3Provider/types.js +4 -4
  39. package/dist/esm/global-account/react/components/B3Provider/useB3.d.ts +1 -0
  40. package/dist/esm/global-account/react/components/B3Provider/useB3.js +1 -0
  41. package/dist/esm/global-account/react/components/B3Provider/useB3Account.d.ts +1 -0
  42. package/dist/esm/global-account/react/components/B3Provider/useB3Account.js +6 -0
  43. package/dist/esm/global-account/react/components/B3Provider/useB3Config.d.ts +9 -0
  44. package/dist/esm/global-account/react/components/B3Provider/useB3Config.js +19 -0
  45. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +2 -2
  46. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +2 -3
  47. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +3 -2
  48. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +3 -2
  49. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3.js +3 -2
  50. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +3 -2
  51. package/dist/esm/global-account/react/components/index.d.ts +2 -0
  52. package/dist/esm/global-account/react/components/index.js +2 -0
  53. package/dist/esm/global-account/react/hooks/useAccountWallet.js +4 -3
  54. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +1 -1
  55. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.d.ts +7 -0
  56. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.js +39 -0
  57. package/dist/esm/global-account/react/hooks/useTurnkeyAuth.js +6 -4
  58. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +2 -2
  59. package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +1 -1
  60. package/dist/styles/index.css +1 -1
  61. package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
  62. package/dist/types/global-account/react/components/B3Provider/types.d.ts +0 -5
  63. package/dist/types/global-account/react/components/B3Provider/useB3.d.ts +1 -0
  64. package/dist/types/global-account/react/components/B3Provider/useB3Account.d.ts +1 -0
  65. package/dist/types/global-account/react/components/B3Provider/useB3Config.d.ts +9 -0
  66. package/dist/types/global-account/react/components/index.d.ts +2 -0
  67. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +1 -1
  68. package/dist/types/global-account/react/hooks/useAutoSelectWallet.d.ts +7 -0
  69. package/dist/types/global-account/react/hooks/useUserQuery.d.ts +1 -1
  70. package/package.json +1 -1
  71. package/src/anyspend/react/components/AnySpend.tsx +37 -40
  72. package/src/anyspend/react/components/AnySpendCustom.tsx +0 -2
  73. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +10 -2
  74. package/src/global-account/react/components/B3Provider/B3Provider.native.tsx +6 -7
  75. package/src/global-account/react/components/B3Provider/B3Provider.tsx +20 -71
  76. package/src/global-account/react/components/B3Provider/types.ts +8 -9
  77. package/src/global-account/react/components/B3Provider/useB3.ts +1 -0
  78. package/src/global-account/react/components/B3Provider/useB3Account.ts +7 -0
  79. package/src/global-account/react/components/B3Provider/useB3Config.ts +34 -0
  80. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +2 -2
  81. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +2 -3
  82. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +10 -2
  83. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +3 -2
  84. package/src/global-account/react/components/SignInWithB3/SignInWithB3.tsx +2 -2
  85. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +5 -2
  86. package/src/global-account/react/components/index.ts +2 -0
  87. package/src/global-account/react/hooks/useAccountWallet.tsx +4 -3
  88. package/src/global-account/react/hooks/useAutoSelectWallet.ts +51 -0
  89. package/src/global-account/react/hooks/useTurnkeyAuth.ts +7 -5
  90. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +2 -2
package/README.md CHANGED
@@ -267,7 +267,8 @@ function PermissionsExample() {
267
267
  import { useB3 } from "@b3dotfun/sdk/global-account/react";
268
268
 
269
269
  function AccountStatus() {
270
- const { account, isAuthenticated } = useB3();
270
+ const isAuthenticated = useAuthStore(state => state.isAuthenticated);
271
+ const account = useB3Account();
271
272
 
272
273
  return <div>{isAuthenticated ? <p>Welcome, {account?.displayName}!</p> : <p>Please sign in</p>}</div>;
273
274
  }
@@ -840,30 +840,24 @@ function AnySpendInner({ sourceChainId, destinationTokenAddress, destinationToke
840
840
  else {
841
841
  setActivePanel(panelIndex);
842
842
  }
843
- }, _recipientAddress: effectiveRecipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward"), customUsdInputValues: customUsdInputValues }) })), (0, jsx_runtime_1.jsx)(react_2.Button, { variant: "ghost", className: (0, cn_1.cn)("border-as-stroke bg-as-surface-primary absolute left-1/2 top-1/2 z-10 h-10 w-10 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "top-[calc(50%+56px)] cursor-default", activeTab === "fiat" && "hidden", selectedDstChainId === anyspend_1.HYPERLIQUID_CHAIN_ID && "cursor-not-allowed opacity-50"), onClick: () => {
844
- if (activeTab === "fiat" || isBuyMode) {
845
- return;
846
- }
847
- // Prevent swapping if destination is Hyperliquid (only supported as destination, not source)
848
- if (selectedDstChainId === anyspend_1.HYPERLIQUID_CHAIN_ID) {
849
- return;
850
- }
851
- // Swap chain selections
852
- const tempSrcChainId = selectedSrcChainId;
853
- const tempDstChainId = selectedDstChainId;
854
- setSelectedSrcChainId(tempDstChainId);
855
- setSelectedDstChainId(tempSrcChainId);
856
- // Swap token selections
857
- const tempSrcToken = selectedSrcToken;
858
- const tempDstToken = selectedDstToken;
859
- setSelectedSrcToken(tempDstToken);
860
- setSelectedDstToken(tempSrcToken);
861
- // Swap amounts
862
- const tempSrcAmount = srcAmount;
863
- const tempDstAmount = dstAmount;
864
- setSrcAmount(tempDstAmount);
865
- setDstAmount(tempSrcAmount);
866
- }, children: (0, jsx_runtime_1.jsx)("div", { className: "relative flex items-center justify-center transition-opacity", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }), activeTab === "crypto" && ((0, jsx_runtime_1.jsx)(CryptoReceiveSection_1.CryptoReceiveSection, { isDepositMode: false, isBuyMode: isBuyMode, effectiveRecipientAddress: effectiveRecipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => navigateToPanel(PanelView.RECIPIENT_SELECTION, "forward"), dstAmount: dstAmount, dstToken: selectedDstToken, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: setSelectedDstChainId, setSelectedDstToken: setSelectedDstToken, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
843
+ }, _recipientAddress: effectiveRecipientAddress, destinationToken: selectedDstToken, destinationChainId: selectedDstChainId, destinationAmount: dstAmount, onDestinationTokenChange: setSelectedDstToken, onDestinationChainChange: setSelectedDstChainId, fiatPaymentMethodIndex: PanelView.FIAT_PAYMENT_METHOD, recipientSelectionPanelIndex: PanelView.RECIPIENT_SELECTION, hideDstToken: isBuyMode, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward"), customUsdInputValues: customUsdInputValues }) })), activeTab === "crypto" && ((0, jsx_runtime_1.jsx)("div", { className: "z-10 -my-6 flex justify-center", children: (0, jsx_runtime_1.jsx)(react_2.Button, { variant: "ghost", className: (0, cn_1.cn)("border-as-stroke bg-as-surface-primary h-10 w-10 rounded-xl border-2 sm:h-8 sm:w-8 sm:rounded-xl", isBuyMode && "cursor-default", selectedDstChainId === anyspend_1.HYPERLIQUID_CHAIN_ID && "cursor-not-allowed opacity-50"), onClick: () => {
844
+ if (isBuyMode) {
845
+ return;
846
+ }
847
+ // Prevent swapping if destination is Hyperliquid (only supported as destination, not source)
848
+ if (selectedDstChainId === anyspend_1.HYPERLIQUID_CHAIN_ID) {
849
+ return;
850
+ }
851
+ // Swap chain selections
852
+ setSelectedSrcChainId(selectedDstChainId);
853
+ setSelectedDstChainId(selectedSrcChainId);
854
+ // Swap token selections
855
+ setSelectedSrcToken(selectedDstToken);
856
+ setSelectedDstToken(selectedSrcToken);
857
+ // Swap amounts
858
+ setSrcAmount(dstAmount);
859
+ setDstAmount(srcAmount);
860
+ }, children: (0, jsx_runtime_1.jsx)("div", { className: "relative flex items-center justify-center transition-opacity", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ArrowDown, { className: "text-as-primary/50 h-5 w-5" }) }) }) })), activeTab === "crypto" && ((0, jsx_runtime_1.jsx)(CryptoReceiveSection_1.CryptoReceiveSection, { isDepositMode: false, isBuyMode: isBuyMode, effectiveRecipientAddress: effectiveRecipientAddress, recipientName: recipientName || undefined, onSelectRecipient: () => navigateToPanel(PanelView.RECIPIENT_SELECTION, "forward"), dstAmount: dstAmount, dstToken: selectedDstToken, selectedDstChainId: selectedDstChainId, setSelectedDstChainId: setSelectedDstChainId, setSelectedDstToken: setSelectedDstToken, isSrcInputDirty: isSrcInputDirty, onChangeDstAmount: value => {
867
861
  setIsSrcInputDirty(false);
868
862
  setDstAmount(value);
869
863
  }, anyspendQuote: anyspendQuote, onShowPointsDetail: () => navigateToPanel(PanelView.POINTS_DETAIL, "forward"), onShowFeeDetail: () => navigateToPanel(PanelView.FEE_DETAIL, "forward") }))] }), (0, jsx_runtime_1.jsxs)(react_3.motion.div, { initial: { opacity: 0, y: 20, filter: "blur(10px)" }, animate: { opacity: 1, y: 0, filter: "blur(0px)" }, transition: { duration: 0.3, delay: 0.2, ease: "easeInOut" }, className: (0, cn_1.cn)("mt-4 flex w-full max-w-[460px] flex-col gap-2"), children: [(0, jsx_runtime_1.jsx)(react_2.ShinyButton, { accentColor: "hsl(var(--as-brand))", disabled: btnInfo.disable, onClick: onMainButtonClick, className: (0, cn_1.cn)("as-main-button relative w-full", btnInfo.error ? "!bg-as-red" : btnInfo.disable ? "!bg-as-on-surface-2" : "!bg-as-brand"), textClassName: (0, cn_1.cn)(btnInfo.error ? "text-white" : btnInfo.disable ? "text-as-secondary" : "text-white"), children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [btnInfo.loading && (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-4 w-4 animate-spin" }), btnInfo.text] }) }), !hideTransactionHistoryButton && (globalAddress || effectiveRecipientAddress) ? ((0, jsx_runtime_1.jsxs)(react_2.Button, { variant: "link", onClick: onClickHistory, className: "text-as-primary/50 hover:text-as-primary flex items-center gap-1 transition-colors", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.HistoryIcon, { className: "h-4 w-4" }), " ", (0, jsx_runtime_1.jsx)("span", { className: "pr-4", children: "Transaction History" })] })) : null] })] }), (0, jsx_runtime_1.jsx)("div", { className: "w-full", children: (0, jsx_runtime_1.jsx)(react_2.TabsPrimitive, { defaultValue: "swap", onValueChange: value => {
@@ -219,7 +219,6 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
219
219
  }
220
220
  }
221
221
  }, [srcChainId, tokenList, getTokenWithBalance, nativeTokens, fungibleTokens, dirtySelectSrcToken, dstToken.address]);
222
- // const { account: isAuthenticated } = useB3();
223
222
  const getRelayQuoteRequest = (0, react_5.useMemo)(() => {
224
223
  return generateGetRelayQuoteRequest({
225
224
  orderType: orderType,
@@ -48,8 +48,8 @@ export declare const useGenerateSigMintData: ({ recipientAddress, contractAddres
48
48
  creatorMap?: {} | undefined;
49
49
  chainId: number;
50
50
  address: string;
51
- _id: string | {};
52
51
  title: string;
52
+ _id: string | {};
53
53
  };
54
54
  } | null;
55
55
  error: Error | null;
@@ -43,7 +43,8 @@ function AvatarEditor({ onSetAvatar, className }) {
43
43
  const [zoom, setZoom] = (0, react_2.useState)(1);
44
44
  const [croppedAreaPixels, setCroppedAreaPixels] = (0, react_2.useState)(null);
45
45
  const fileInputRef = (0, react_2.useRef)(null);
46
- const { setUser, user, partnerId } = (0, react_1.useB3)();
46
+ const { partnerId } = (0, react_1.useB3Config)();
47
+ const { user, setUser } = (0, react_1.useAuthentication)(partnerId);
47
48
  const setB3ModalContentType = (0, stores_1.useModalStore)(state => state.setB3ModalContentType);
48
49
  const contentType = (0, stores_1.useModalStore)(state => state.contentType);
49
50
  const account = (0, react_3.useActiveAccount)();
@@ -4,9 +4,9 @@ exports.B3Provider = B3Provider;
4
4
  exports.InnerProvider = InnerProvider;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const react_1 = require("../../../../global-account/react");
7
+ const useAutoSelectWallet_1 = require("../../../../global-account/react/hooks/useAutoSelectWallet");
7
8
  const createWagmiConfig_1 = require("../../../../global-account/react/utils/createWagmiConfig");
8
9
  const analytics_1 = require("../../../../global-account/utils/analytics");
9
- const debug_1 = require("../../../../shared/utils/debug");
10
10
  require("@relayprotocol/relay-kit-ui/styles.css");
11
11
  const react_query_1 = require("@tanstack/react-query");
12
12
  const react_2 = require("react");
@@ -17,7 +17,6 @@ const StyleRoot_1 = require("../StyleRoot");
17
17
  const index_1 = require("../Toast/index");
18
18
  const LocalSDKProvider_1 = require("./LocalSDKProvider");
19
19
  const types_1 = require("./types");
20
- const debug = (0, debug_1.debugB3React)("B3Provider");
21
20
  /**
22
21
  * Default permissions configuration for B3 provider
23
22
  */
@@ -51,52 +50,26 @@ toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey
51
50
  */
52
51
  function InnerProvider({ children, accountOverride, environment, defaultPermissions = DEFAULT_PERMISSIONS, automaticallySetFirstEoa, theme = "light", clientType = "socket", partnerId, stripePublishableKey, createClientReferenceId, enableTurnkey, }) {
53
52
  const activeAccount = (0, react_3.useActiveAccount)();
54
- const [manuallySelectedWallet, setManuallySelectedWallet] = (0, react_2.useState)(undefined);
55
- const wallets = (0, react_3.useConnectedWallets)();
56
53
  const isAuthenticated = (0, react_1.useAuthStore)(state => state.isAuthenticated);
57
- const isConnected = (0, react_1.useAuthStore)(state => state.isConnected);
58
- const justCompletedLogin = (0, react_1.useAuthStore)(state => state.justCompletedLogin);
59
- const setActiveWallet = (0, react_3.useSetActiveWallet)();
60
- const { user, setUser, refetchUser } = (0, react_1.useAuthentication)(partnerId);
61
- debug("@@B3Provider:isConnected", isConnected);
62
- debug("@@wallets", wallets);
63
- debug("@@B3Provider:user", user);
64
- debug("@@B3Provider:justCompletedLogin", justCompletedLogin);
54
+ //const isConnected = useAuthStore(state => state.isConnected);
55
+ //const justCompletedLogin = useAuthStore(state => state.justCompletedLogin);
65
56
  // Use given accountOverride or activeAccount from thirdweb
57
+ // WOJ: why if isAuthenticated is false, we don't use activeAccount, which should be undefined?
58
+ // skip isAuthenticated check ?
66
59
  const effectiveAccount = isAuthenticated ? accountOverride || activeAccount : undefined;
67
- const setWallet = (0, react_2.useCallback)((wallet) => {
68
- setManuallySelectedWallet(wallet);
69
- const account = wallet.getAccount();
70
- debug("@@setWallet", wallet.id, account?.address);
71
- setActiveWallet(wallet);
72
- }, [setManuallySelectedWallet, setActiveWallet]);
73
- (0, react_2.useEffect)(() => {
74
- const autoSelectFirstEOAWallet = async () => {
75
- // Only proceed if auto-selection is enabled and user is authenticated
76
- if (!automaticallySetFirstEoa || !isAuthenticated) {
77
- return;
78
- }
79
- // Find the first EOA wallet (excluding ecosystem wallets)
80
- const isEOAWallet = (wallet) => !wallet.id.startsWith("ecosystem.");
81
- const firstEOAWallet = wallets.find(isEOAWallet);
82
- if (firstEOAWallet) {
83
- // Only auto-select if the last auth was via wallet or no previous auth provider
84
- const lastAuthProvider = await (0, react_3.getLastAuthProvider)();
85
- const shouldAutoSelect = lastAuthProvider === null || lastAuthProvider === "wallet";
86
- if (shouldAutoSelect) {
87
- setWallet(firstEOAWallet);
88
- }
89
- }
90
- };
91
- autoSelectFirstEOAWallet();
92
- }, [automaticallySetFirstEoa, isAuthenticated, setWallet, wallets]);
60
+ // Wrapper to set active wallet via thirdweb
61
+ // Note: `wallet` in context is deprecated - use useActiveWallet() from thirdweb/react instead
62
+ // Auto-select first EOA wallet when enabled
63
+ (0, useAutoSelectWallet_1.useAutoSelectWallet)({
64
+ enabled: automaticallySetFirstEoa,
65
+ });
93
66
  return ((0, jsx_runtime_1.jsx)(types_1.B3Context.Provider, { value: {
94
67
  account: effectiveAccount,
95
- setWallet,
96
- wallet: manuallySelectedWallet,
97
- user,
98
- setUser,
99
- refetchUser,
68
+ // setWallet,
69
+ //wallet: undefined, // Deprecated: use useActiveWallet() from thirdweb/react instead
70
+ //user,
71
+ //setUser,
72
+ //refetchUser,
100
73
  initialized: true,
101
74
  ready: !!effectiveAccount,
102
75
  automaticallySetFirstEoa,
@@ -108,11 +81,8 @@ function InnerProvider({ children, accountOverride, environment, defaultPermissi
108
81
  stripePublishableKey,
109
82
  createClientReferenceId,
110
83
  enableTurnkey,
111
- }, children: (0, jsx_runtime_1.jsx)(InnerProvider2, { children: children }) }));
84
+ }, children: children }));
112
85
  }
113
- const InnerProvider2 = ({ children }) => {
114
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
115
- };
116
86
  /**
117
87
  * Component to connect the toast context to the global toast API
118
88
  */
@@ -6,7 +6,6 @@ const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const react_query_1 = require("@tanstack/react-query");
7
7
  const react_1 = require("thirdweb/react");
8
8
  const wagmi_1 = require("wagmi");
9
- const useAuthentication_1 = require("../../hooks/useAuthentication");
10
9
  const createWagmiConfig_1 = require("../../utils/createWagmiConfig");
11
10
  const LocalSDKProvider_1 = require("./LocalSDKProvider");
12
11
  const types_1 = require("./types");
@@ -32,17 +31,17 @@ function B3Provider({ theme = "light", children, accountOverride, environment, c
32
31
  */
33
32
  function InnerProvider({ children, accountOverride, environment, defaultPermissions = DEFAULT_PERMISSIONS, theme = "light", clientType = "socket", partnerId, rpcUrls, }) {
34
33
  const activeAccount = (0, react_1.useActiveAccount)();
35
- const { user, setUser, refetchUser } = (0, useAuthentication_1.useAuthentication)(partnerId);
34
+ //const { user, setUser, refetchUser } = useAuthentication(partnerId);
36
35
  const wagmiConfig = (0, createWagmiConfig_1.createWagmiConfig)({ partnerId, rpcUrls });
37
36
  // Use given accountOverride or activeAccount from thirdweb
38
37
  const effectiveAccount = accountOverride || activeAccount;
39
38
  return ((0, jsx_runtime_1.jsx)(wagmi_1.WagmiProvider, { config: wagmiConfig, children: (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: queryClient, children: (0, jsx_runtime_1.jsx)(types_1.B3Context.Provider, { value: {
40
- account: effectiveAccount,
39
+ //account: effectiveAccount,
41
40
  automaticallySetFirstEoa: false,
42
- setWallet: () => { },
41
+ //setWallet: () => {},
43
42
  wallet: undefined,
44
- user,
45
- setUser,
43
+ //user,
44
+ //setUser,
46
45
  initialized: true,
47
46
  ready: !!effectiveAccount,
48
47
  environment,
@@ -50,6 +49,6 @@ function InnerProvider({ children, accountOverride, environment, defaultPermissi
50
49
  theme,
51
50
  clientType,
52
51
  partnerId,
53
- refetchUser,
52
+ //refetchUser,
54
53
  }, children: children }) }) }));
55
54
  }
@@ -1,4 +1,3 @@
1
- import { Users } from "@b3dotfun/b3-api";
2
1
  import { CreateOnrampOrderParams } from "../../../../anyspend/react/hooks/useAnyspendCreateOnrampOrder";
3
2
  import { CreateOrderParams } from "../../../../anyspend/react/hooks/useAnyspendCreateOrder";
4
3
  import { PermissionsConfig } from "../../../../global-account/types/permissions";
@@ -10,11 +9,7 @@ import { ClientType } from "../../../client-manager";
10
9
  export interface B3ContextType {
11
10
  account?: Account;
12
11
  automaticallySetFirstEoa: boolean;
13
- user?: Users;
14
- setWallet: (wallet: Wallet) => void;
15
12
  wallet?: Wallet;
16
- setUser: (user?: Users) => void;
17
- refetchUser: () => Promise<any>;
18
13
  initialized: boolean;
19
14
  ready: boolean;
20
15
  environment?: "development" | "production";
@@ -8,11 +8,11 @@ const react_1 = require("react");
8
8
  exports.B3Context = (0, react_1.createContext)({
9
9
  account: undefined,
10
10
  automaticallySetFirstEoa: false,
11
- user: undefined,
12
- setWallet: () => { },
11
+ //user: undefined,
12
+ //setWallet: () => {},
13
13
  wallet: undefined,
14
- setUser: () => { },
15
- refetchUser: async () => { },
14
+ //setUser: () => {},
15
+ //refetchUser: async () => {},
16
16
  initialized: false,
17
17
  ready: false,
18
18
  environment: "development",
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Hook to access the B3 context
3
3
  * @throws Error if used outside a B3Provider
4
+ * @deprecated Use useB3Config or useB3Account instead
4
5
  */
5
6
  export declare function useB3(): import("./types").B3ContextType;
@@ -6,6 +6,7 @@ const types_1 = require("./types");
6
6
  /**
7
7
  * Hook to access the B3 context
8
8
  * @throws Error if used outside a B3Provider
9
+ * @deprecated Use useB3Config or useB3Account instead
9
10
  */
10
11
  function useB3() {
11
12
  const context = (0, react_1.useContext)(types_1.B3Context);
@@ -0,0 +1 @@
1
+ export declare const useB3Account: () => import("thirdweb/wallets").Account | undefined;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useB3Account = void 0;
4
+ const react_1 = require("thirdweb/react");
5
+ // Wrapper around useActiveAccount
6
+ const useB3Account = () => {
7
+ const account = (0, react_1.useActiveAccount)();
8
+ return account;
9
+ };
10
+ exports.useB3Account = useB3Account;
@@ -0,0 +1,9 @@
1
+ export declare const useB3Config: () => {
2
+ automaticallySetFirstEoa: boolean;
3
+ environment: "development" | "production" | undefined;
4
+ theme: "light" | "dark";
5
+ clientType: import("../../../client-manager").ClientType;
6
+ partnerId: string;
7
+ createClientReferenceId: ((params: import("../../../../anyspend/react").CreateOrderParams | import("../../../../anyspend/react").CreateOnrampOrderParams) => Promise<string>) | undefined;
8
+ enableTurnkey: boolean | undefined;
9
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useB3Config = void 0;
4
+ const react_1 = require("react");
5
+ const types_1 = require("./types");
6
+ const useB3Config = () => {
7
+ const context = (0, react_1.useContext)(types_1.B3Context);
8
+ if (!context) {
9
+ throw new Error("useB3 must be used within a B3Provider");
10
+ }
11
+ const { automaticallySetFirstEoa, environment, theme, clientType, partnerId, createClientReferenceId, enableTurnkey, } = context;
12
+ // Return a stable reference
13
+ return (0, react_1.useMemo)(() => ({
14
+ automaticallySetFirstEoa,
15
+ environment,
16
+ theme,
17
+ clientType,
18
+ partnerId,
19
+ createClientReferenceId,
20
+ enableTurnkey,
21
+ }), [automaticallySetFirstEoa, environment, theme, clientType, partnerId, createClientReferenceId, enableTurnkey]);
22
+ };
23
+ exports.useB3Config = useB3Config;
@@ -23,7 +23,7 @@ const LinkAccount = ({ partnerId, onLogout: _onLogout, chain, }) => {
23
23
  const isLinking = (0, react_1.useModalStore)(state => state.isLinking);
24
24
  const setB3ModalOpen = (0, react_1.useModalStore)(state => state.setB3ModalOpen);
25
25
  const contentType = (0, react_1.useModalStore)(state => state.contentType);
26
- const { user, setUser } = (0, react_1.useB3)();
26
+ const { user, setUser } = (0, react_1.useAuthentication)(partnerId);
27
27
  const [isUpdatingCode, setIsUpdatingCode] = (0, react_2.useState)(false);
28
28
  const [newReferralCode, setNewReferralCode] = (0, react_2.useState)("");
29
29
  const [isEditingCode, setIsEditingCode] = (0, react_2.useState)(false);
@@ -17,7 +17,6 @@ const wallets_1 = require("thirdweb/wallets");
17
17
  const __1 = require("../..");
18
18
  const useModalStore_1 = require("../../stores/useModalStore");
19
19
  const profileDisplay_1 = require("../../utils/profileDisplay");
20
- const useB3_1 = require("../B3Provider/useB3");
21
20
  const AppleIcon_1 = require("../icons/AppleIcon");
22
21
  const DiscordIcon_1 = require("../icons/DiscordIcon");
23
22
  const FarcasterIcon_1 = require("../icons/FarcasterIcon");
@@ -96,7 +95,7 @@ function LinkNewAccount({ onSuccess: onSuccessCallback, onError, onClose, chain,
96
95
  ...(0, profileDisplay_1.getProfileDisplayInfo)(profile),
97
96
  originalProfile: profile,
98
97
  }));
99
- const { account } = (0, useB3_1.useB3)();
98
+ const account = (0, react_1.useB3Account)();
100
99
  const { mutate: linkProfile } = (0, react_3.useLinkProfile)();
101
100
  const onSuccess = (0, react_2.useCallback)(async () => {
102
101
  await onSuccessCallback?.();
@@ -17,7 +17,8 @@ const ProfileSection = () => {
17
17
  address: eoaAddress || account?.address,
18
18
  fresh: true,
19
19
  });
20
- const { user } = (0, react_1.useB3)();
20
+ const { partnerId } = (0, react_1.useB3Config)();
21
+ const { user } = (0, react_1.useAuthentication)(partnerId);
21
22
  const setB3ModalOpen = (0, react_1.useModalStore)(state => state.setB3ModalOpen);
22
23
  const setB3ModalContentType = (0, react_1.useModalStore)(state => state.setB3ModalContentType);
23
24
  const navigateBack = (0, react_1.useModalStore)(state => state.navigateBack);
@@ -20,7 +20,8 @@ const SettingsProfileCard = () => {
20
20
  address: eoaAddress || account?.address,
21
21
  fresh: true,
22
22
  });
23
- const { user, setUser } = (0, react_1.useB3)();
23
+ const { partnerId } = (0, react_1.useB3Config)();
24
+ const { user, setUser } = (0, react_1.useAuthentication)(partnerId);
24
25
  const setB3ModalOpen = (0, react_1.useModalStore)(state => state.setB3ModalOpen);
25
26
  const setB3ModalContentType = (0, react_1.useModalStore)(state => state.setB3ModalContentType);
26
27
  const navigateBack = (0, react_1.useModalStore)(state => state.navigateBack);
@@ -4,11 +4,12 @@ exports.SignInWithB3 = SignInWithB3;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("../../../../global-account/react");
6
6
  const react_2 = require("react");
7
+ const useB3Account_1 = require("../B3Provider/useB3Account");
7
8
  const ManageAccountButton_1 = require("../custom/ManageAccountButton");
8
9
  const Loading_1 = require("../ui/Loading");
9
10
  function SignInWithB3(props) {
10
11
  const { setB3ModalOpen, setB3ModalContentType, setEcoSystemAccountAddress } = (0, react_1.useModalStore)();
11
- const { account } = (0, react_1.useB3)();
12
+ const account = (0, useB3Account_1.useB3Account)();
12
13
  const { isAuthenticating, isAuthenticated } = (0, react_1.useAuthStore)();
13
14
  const isMobile = (0, react_1.useIsMobile)();
14
15
  (0, react_2.useEffect)(() => {
@@ -16,7 +16,8 @@ const MAX_REFETCH_ATTEMPTS = 20;
16
16
  * Handles different login providers, authentication steps, and session key management
17
17
  */
18
18
  function SignInWithB3Flow({ strategies, onLoginSuccess, onSessionKeySuccess, onError, chain, sessionKeyAddress, partnerId, closeAfterLogin = false, source = "signInWithB3Button", signersEnabled = false, }) {
19
- const { automaticallySetFirstEoa, user, refetchUser, enableTurnkey } = (0, react_1.useB3)();
19
+ const { automaticallySetFirstEoa, enableTurnkey } = (0, react_1.useB3Config)();
20
+ const { user, refetchUser } = (0, react_1.useAuthentication)(partnerId);
20
21
  const [step, setStep] = (0, react_2.useState)(source === "requestPermissions" ? null : "login");
21
22
  const [sessionKeyAdded, setSessionKeyAdded] = (0, react_2.useState)(source === "requestPermissions" ? true : false);
22
23
  const { setB3ModalContentType, setB3ModalOpen, isOpen, contentType } = (0, react_1.useModalStore)();
@@ -3,6 +3,8 @@ export { B3Provider, InnerProvider } from "./B3Provider/B3Provider";
3
3
  export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper";
4
4
  export { B3Context, type B3ContextType } from "./B3Provider/types";
5
5
  export { useB3 } from "./B3Provider/useB3";
6
+ export { useB3Account } from "./B3Provider/useB3Account";
7
+ export { useB3Config } from "./B3Provider/useB3Config";
6
8
  export { StyleRoot } from "./StyleRoot";
7
9
  export { AuthButton } from "./SignInWithB3/components/AuthButton";
8
10
  export { PermissionItem } from "./SignInWithB3/components/PermissionItem";
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DialogDescription = exports.DialogContent = exports.DialogClose = exports.Dialog = exports.CommandShortcut = exports.CommandSeparator = exports.CommandList = exports.CommandItem = exports.CommandInput = exports.CommandGroup = exports.CommandEmpty = exports.CommandDialog = exports.Command = exports.buttonVariants = exports.Button = exports.badgeVariants = exports.Badge = exports.WalletConnectorIcon = exports.StaggeredFadeLoader = exports.CopyToClipboard = exports.ClientOnly = exports.customButtonVariants = exports.CustomButton = exports.SendERC20Button = exports.SendETHButton = exports.MintButton = exports.AccountAssets = exports.RequestPermissionsButton = exports.RequestPermissions = exports.IPFSMediaRenderer = exports.Send = exports.Deposit = exports.ManageAccount = exports.TurnkeyAuthModal = exports.isWalletType = exports.getConnectOptionsFromStrategy = exports.LoginStepContainer = exports.SignInWithB3Privy = exports.SignInWithB3Flow = exports.SignInWithB3 = exports.WalletRow = exports.PermissionItem = exports.AuthButton = exports.StyleRoot = exports.useB3 = exports.B3Context = exports.RelayKitProviderWrapper = exports.InnerProvider = exports.B3Provider = exports.B3DynamicModal = void 0;
7
- exports.toast = exports.AnimatedLottie = exports.TransitionPanel = exports.TooltipTrigger = exports.TooltipProvider = exports.TooltipContent = exports.Tooltip = exports.TextShimmer = exports.TextLoop = exports.TabTrigger = exports.TabsTransitionWrapper = exports.TabsList = exports.TabsContent = exports.Tabs = exports.TabTriggerPrimitive = exports.TabsPrimitive = exports.TabsListPrimitive = exports.TabsContentPrimitive = exports.Skeleton = exports.ShinyButton = exports.ScrollBar = exports.ScrollArea = exports.PopoverTrigger = exports.PopoverContent = exports.Popover = exports.Loading = exports.Input = exports.GlareCardRounded = exports.GlareCard = exports.DropdownMenuTrigger = exports.DropdownMenuSeparator = exports.DropdownMenuItem = exports.DropdownMenuContent = exports.DropdownMenu = exports.DrawerTrigger = exports.DrawerTitle = exports.DrawerPortal = exports.DrawerOverlay = exports.DrawerHeader = exports.DrawerFooter = exports.DrawerDescription = exports.DrawerContent = exports.DrawerClose = exports.Drawer = exports.DialogTrigger = exports.DialogTitle = exports.DialogPortal = exports.DialogOverlay = exports.DialogHeader = exports.DialogFooter = void 0;
8
- exports.WalletImage = exports.useToastContext = exports.ToastProvider = exports.ToastContainer = exports.Toast = void 0;
6
+ exports.DialogClose = exports.Dialog = exports.CommandShortcut = exports.CommandSeparator = exports.CommandList = exports.CommandItem = exports.CommandInput = exports.CommandGroup = exports.CommandEmpty = exports.CommandDialog = exports.Command = exports.buttonVariants = exports.Button = exports.badgeVariants = exports.Badge = exports.WalletConnectorIcon = exports.StaggeredFadeLoader = exports.CopyToClipboard = exports.ClientOnly = exports.customButtonVariants = exports.CustomButton = exports.SendERC20Button = exports.SendETHButton = exports.MintButton = exports.AccountAssets = exports.RequestPermissionsButton = exports.RequestPermissions = exports.IPFSMediaRenderer = exports.Send = exports.Deposit = exports.ManageAccount = exports.TurnkeyAuthModal = exports.isWalletType = exports.getConnectOptionsFromStrategy = exports.LoginStepContainer = exports.SignInWithB3Privy = exports.SignInWithB3Flow = exports.SignInWithB3 = exports.WalletRow = exports.PermissionItem = exports.AuthButton = exports.StyleRoot = exports.useB3Config = exports.useB3Account = exports.useB3 = exports.B3Context = exports.RelayKitProviderWrapper = exports.InnerProvider = exports.B3Provider = exports.B3DynamicModal = void 0;
7
+ exports.TransitionPanel = exports.TooltipTrigger = exports.TooltipProvider = exports.TooltipContent = exports.Tooltip = exports.TextShimmer = exports.TextLoop = exports.TabTrigger = exports.TabsTransitionWrapper = exports.TabsList = exports.TabsContent = exports.Tabs = exports.TabTriggerPrimitive = exports.TabsPrimitive = exports.TabsListPrimitive = exports.TabsContentPrimitive = exports.Skeleton = exports.ShinyButton = exports.ScrollBar = exports.ScrollArea = exports.PopoverTrigger = exports.PopoverContent = exports.Popover = exports.Loading = exports.Input = exports.GlareCardRounded = exports.GlareCard = exports.DropdownMenuTrigger = exports.DropdownMenuSeparator = exports.DropdownMenuItem = exports.DropdownMenuContent = exports.DropdownMenu = exports.DrawerTrigger = exports.DrawerTitle = exports.DrawerPortal = exports.DrawerOverlay = exports.DrawerHeader = exports.DrawerFooter = exports.DrawerDescription = exports.DrawerContent = exports.DrawerClose = exports.Drawer = exports.DialogTrigger = exports.DialogTitle = exports.DialogPortal = exports.DialogOverlay = exports.DialogHeader = exports.DialogFooter = exports.DialogDescription = exports.DialogContent = void 0;
8
+ exports.WalletImage = exports.useToastContext = exports.ToastProvider = exports.ToastContainer = exports.Toast = exports.toast = exports.AnimatedLottie = void 0;
9
9
  // TODO woj: Barrel file for all components, this might be reason of bundle size issues
10
10
  // Core Components
11
11
  var B3DynamicModal_1 = require("./B3DynamicModal");
@@ -19,6 +19,10 @@ var types_1 = require("./B3Provider/types");
19
19
  Object.defineProperty(exports, "B3Context", { enumerable: true, get: function () { return types_1.B3Context; } });
20
20
  var useB3_1 = require("./B3Provider/useB3");
21
21
  Object.defineProperty(exports, "useB3", { enumerable: true, get: function () { return useB3_1.useB3; } });
22
+ var useB3Account_1 = require("./B3Provider/useB3Account");
23
+ Object.defineProperty(exports, "useB3Account", { enumerable: true, get: function () { return useB3Account_1.useB3Account; } });
24
+ var useB3Config_1 = require("./B3Provider/useB3Config");
25
+ Object.defineProperty(exports, "useB3Config", { enumerable: true, get: function () { return useB3Config_1.useB3Config; } });
22
26
  var StyleRoot_1 = require("./StyleRoot");
23
27
  Object.defineProperty(exports, "StyleRoot", { enumerable: true, get: function () { return StyleRoot_1.StyleRoot; } });
24
28
  // SignInWithB3 Components
@@ -8,6 +8,7 @@ const debug_1 = require("../../../shared/utils/debug");
8
8
  const react_2 = require("react");
9
9
  const react_3 = require("thirdweb/react");
10
10
  const in_app_1 = require("thirdweb/wallets/in-app");
11
+ const useB3Account_1 = require("../components/B3Provider/useB3Account");
11
12
  const debug = (0, debug_1.debugB3React)("useAccountWallet");
12
13
  function useLastAuthProvider() {
13
14
  const [lastAuthProvider, setLastAuthProvider] = (0, react_2.useState)(null);
@@ -27,7 +28,7 @@ function useAccountWallet() {
27
28
  // const effectiveAccount = isAuthenticated ? accountOverride || activeAccount : undefined;
28
29
  // can we possibly just use useActiveAccount here?
29
30
  // --------------------
30
- const { account } = (0, react_1.useB3)();
31
+ const account = (0, useB3Account_1.useB3Account)();
31
32
  const activeWallet = (0, react_3.useActiveWallet)();
32
33
  const connectedWallets = (0, react_3.useConnectedWallets)();
33
34
  const connectedSmartWallet = connectedWallets.find(wallet => wallet.id === constants_1.ecosystemWalletId);
@@ -75,7 +76,7 @@ function useAccountWallet() {
75
76
  return res;
76
77
  }
77
78
  function useAccountWalletImage() {
78
- const { account } = (0, react_1.useB3)();
79
+ const account = (0, useB3Account_1.useB3Account)();
79
80
  const activeWallet = (0, react_3.useActiveWallet)();
80
81
  const connectedWallets = (0, react_3.useConnectedWallets)();
81
82
  const connectedSmartWallet = connectedWallets.find(wallet => wallet.id === constants_1.ecosystemWalletId);
@@ -13,8 +13,8 @@ export declare function useAuthentication(partnerId: string): {
13
13
  onConnect: (_walleAutoConnectedWith: Wallet, allConnectedWallets: Wallet[]) => Promise<void>;
14
14
  user: {
15
15
  email?: string | undefined;
16
- telNumber?: string | undefined;
17
16
  username?: string | undefined;
17
+ telNumber?: string | undefined;
18
18
  ens?: string | undefined;
19
19
  avatar?: string | undefined;
20
20
  preferences?: {} | undefined;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hook to automatically select the first EOA wallet when user is authenticated
3
+ * Only auto-selects if the last auth was via wallet or no previous auth provider
4
+ */
5
+ export declare function useAutoSelectWallet({ enabled }: {
6
+ enabled: boolean;
7
+ }): void;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAutoSelectWallet = useAutoSelectWallet;
4
+ const debug_1 = require("../../../shared/utils/debug");
5
+ const react_1 = require("react");
6
+ const react_2 = require("thirdweb/react");
7
+ const stores_1 = require("../stores");
8
+ const debug = (0, debug_1.debugB3React)("useAutoSelectWallet");
9
+ /**
10
+ * Hook to automatically select the first EOA wallet when user is authenticated
11
+ * Only auto-selects if the last auth was via wallet or no previous auth provider
12
+ */
13
+ function useAutoSelectWallet({ enabled }) {
14
+ const isAuthenticated = (0, stores_1.useAuthStore)(state => state.isAuthenticated);
15
+ const wallets = (0, react_2.useConnectedWallets)();
16
+ const setActiveWallet = (0, react_2.useSetActiveWallet)();
17
+ const setWallet = (0, react_1.useCallback)((wallet) => {
18
+ debug("@@setWallet", wallet.id, wallet.getAccount()?.address);
19
+ setActiveWallet(wallet);
20
+ }, [setActiveWallet]);
21
+ (0, react_1.useEffect)(() => {
22
+ const autoSelectFirstEOAWallet = async () => {
23
+ // Only proceed if auto-selection is enabled and user is authenticated
24
+ if (!enabled || !isAuthenticated) {
25
+ return;
26
+ }
27
+ // Find the first EOA wallet (excluding ecosystem wallets)
28
+ const isEOAWallet = (wallet) => !wallet.id.startsWith("ecosystem.");
29
+ const firstEOAWallet = wallets.find(isEOAWallet);
30
+ if (firstEOAWallet) {
31
+ // Only auto-select if the last auth was via wallet or no previous auth provider
32
+ const lastAuthProvider = await (0, react_2.getLastAuthProvider)();
33
+ const shouldAutoSelect = lastAuthProvider === null || lastAuthProvider === "wallet";
34
+ if (shouldAutoSelect) {
35
+ debug("Auto-selecting first EOA wallet", firstEOAWallet.id);
36
+ setWallet(firstEOAWallet);
37
+ }
38
+ }
39
+ };
40
+ autoSelectFirstEOAWallet();
41
+ }, [enabled, isAuthenticated, setWallet, wallets]);
42
+ }
@@ -4,11 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.useTurnkeyAuth = useTurnkeyAuth;
7
+ const debug_1 = require("../../../shared/utils/debug");
8
+ const react_1 = require("react");
7
9
  const app_1 = __importDefault(require("../../app"));
10
+ const components_1 = require("../components");
8
11
  const stores_1 = require("../stores");
9
- const react_1 = require("react");
10
- const useB3_1 = require("../components/B3Provider/useB3");
11
- const debug_1 = require("../../../shared/utils/debug");
12
+ const useAuthentication_1 = require("./useAuthentication");
12
13
  const debug = (0, debug_1.debugB3React)("useTurnkeyAuth");
13
14
  /**
14
15
  * Hook for Turnkey email-based OTP authentication
@@ -23,7 +24,8 @@ function useTurnkeyAuth() {
23
24
  const [error, setError] = (0, react_1.useState)(null);
24
25
  const setIsAuthenticating = (0, stores_1.useAuthStore)(state => state.setIsAuthenticating);
25
26
  const setIsAuthenticated = (0, stores_1.useAuthStore)(state => state.setIsAuthenticated);
26
- const { user } = (0, useB3_1.useB3)();
27
+ const { partnerId } = (0, components_1.useB3Config)();
28
+ const { user } = (0, useAuthentication_1.useAuthentication)(partnerId);
27
29
  /**
28
30
  * Step 1: Initiate login with email
29
31
  * - Calls backend to create sub-org (if needed) and send OTP
@@ -14,7 +14,7 @@ const react_2 = require("react");
14
14
  const thirdweb_2 = require("thirdweb");
15
15
  const viem_1 = require("viem");
16
16
  const wagmi_1 = require("wagmi");
17
- const components_1 = require("../components");
17
+ const useB3Account_1 = require("../components/B3Provider/useB3Account");
18
18
  const useAccountWallet_1 = require("./useAccountWallet");
19
19
  const partnerId = String(process.env.PUBLIC_THIRDWEB_PARTNER_ID ||
20
20
  process.env.NEXT_PUBLIC_THIRDWEB_PARTNER_ID ||
@@ -25,7 +25,7 @@ function useUnifiedChainSwitchAndExecute() {
25
25
  const { switchChainAsync } = (0, wagmi_1.useSwitchChain)();
26
26
  const [isSwitchingOrExecuting, setIsSwitchingOrExecuting] = (0, react_2.useState)(false);
27
27
  const { isActiveSmartWallet, isActiveEOAWallet, connectedEOAWallet } = (0, useAccountWallet_1.useAccountWallet)();
28
- const { account: aaAccount } = (0, components_1.useB3)();
28
+ const aaAccount = (0, useB3Account_1.useB3Account)();
29
29
  // Handle EOA wallet chain switch and execute transaction
30
30
  const handleEOASwitchChainAndSendTransaction = (0, react_2.useCallback)(async (targetChainId, params) => {
31
31
  if (!connectedEOAWallet) {
@@ -8,8 +8,8 @@ import { Users } from "@b3dotfun/b3-api";
8
8
  export declare function useUserQuery(): {
9
9
  user: {
10
10
  email?: string | undefined;
11
- telNumber?: string | undefined;
12
11
  username?: string | undefined;
12
+ telNumber?: string | undefined;
13
13
  ens?: string | undefined;
14
14
  avatar?: string | undefined;
15
15
  preferences?: {} | undefined;