@b3dotfun/sdk 0.1.0-alpha.8 → 0.1.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
- package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +2 -2
- package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
- package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
- package/dist/cjs/global-account/react/hooks/useAuthentication.js +5 -2
- package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
- package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +2 -2
- package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
- package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
- package/dist/esm/global-account/react/hooks/useAuthentication.js +5 -2
- package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
- package/dist/types/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
- package/package.json +1 -1
- package/src/global-account/react/components/B3Provider/B3Provider.tsx +3 -1
- package/src/global-account/react/components/B3Provider/LocalSDKProvider.tsx +5 -0
- package/src/global-account/react/hooks/useAuthentication.ts +6 -2
|
@@ -8,7 +8,7 @@ import { ClientType } from "../../../client-manager";
|
|
|
8
8
|
/**
|
|
9
9
|
* Main B3Provider component
|
|
10
10
|
*/
|
|
11
|
-
export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster: _toaster, clientType, rpcUrls, partnerId, stripePublishableKey, onConnect, connectors, overrideDefaultConnectors, createClientReferenceId, enableTurnkey, defaultPermissions, }: {
|
|
11
|
+
export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster: _toaster, clientType, rpcUrls, partnerId, stripePublishableKey, onConnect, onLogout, connectors, overrideDefaultConnectors, createClientReferenceId, enableTurnkey, defaultPermissions, }: {
|
|
12
12
|
theme: "light" | "dark";
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
accountOverride?: Account;
|
|
@@ -25,6 +25,7 @@ export declare function B3Provider({ theme, children, accountOverride, environme
|
|
|
25
25
|
/** Partner-specific Stripe publishable key. If not provided, uses default B3 Stripe account. */
|
|
26
26
|
stripePublishableKey?: string;
|
|
27
27
|
onConnect?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
28
|
+
onLogout?: () => void | Promise<void>;
|
|
28
29
|
connectors?: CreateConnectorFn[];
|
|
29
30
|
overrideDefaultConnectors?: boolean;
|
|
30
31
|
createClientReferenceId?: (params: CreateOrderParams | CreateOnrampOrderParams) => Promise<string>;
|
|
@@ -26,7 +26,7 @@ const queryClient = new react_query_1.QueryClient();
|
|
|
26
26
|
*/
|
|
27
27
|
function B3Provider({ theme = "light", children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey,
|
|
28
28
|
// deprecated since v0.0.87
|
|
29
|
-
toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey, onConnect, connectors, overrideDefaultConnectors = false, createClientReferenceId, enableTurnkey = false, defaultPermissions, }) {
|
|
29
|
+
toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey, onConnect, onLogout, connectors, overrideDefaultConnectors = false, createClientReferenceId, enableTurnkey = false, defaultPermissions, }) {
|
|
30
30
|
// Initialize Google Analytics on mount
|
|
31
31
|
(0, react_2.useEffect)(() => {
|
|
32
32
|
(0, analytics_1.loadGA4Script)();
|
|
@@ -36,7 +36,7 @@ toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey
|
|
|
36
36
|
(0, client_manager_1.setClientType)(clientType);
|
|
37
37
|
}, [clientType]);
|
|
38
38
|
const wagmiConfig = (0, react_2.useMemo)(() => (0, createWagmiConfig_1.createWagmiConfig)({ partnerId, rpcUrls, connectors, overrideDefaultConnectors }), [partnerId, rpcUrls, connectors, overrideDefaultConnectors]);
|
|
39
|
-
return ((0, jsx_runtime_1.jsx)(react_3.ThirdwebProvider, { children: (0, jsx_runtime_1.jsx)(wagmi_1.WagmiProvider, { config: wagmiConfig, reconnectOnMount: false, children: (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: queryClient, children: (0, jsx_runtime_1.jsx)(react_1.TooltipProvider, { children: (0, jsx_runtime_1.jsx)(index_1.ToastProvider, { children: (0, jsx_runtime_1.jsx)(LocalSDKProvider_1.LocalSDKProvider, { onConnectCallback: onConnect, children: (0, jsx_runtime_1.jsxs)(B3ConfigProvider_1.B3ConfigProvider, { accountOverride: accountOverride, environment: environment, automaticallySetFirstEoa: !!automaticallySetFirstEoa, theme: theme, clientType: clientType, partnerId: partnerId, stripePublishableKey: stripePublishableKey, createClientReferenceId: createClientReferenceId, enableTurnkey: enableTurnkey, defaultPermissions: defaultPermissions, children: [(0, jsx_runtime_1.jsx)(ToastContextConnector, {}), (0, jsx_runtime_1.jsxs)(react_1.RelayKitProviderWrapper, { simDuneApiKey: simDuneApiKey, children: [children, (0, jsx_runtime_1.jsx)(StyleRoot_1.StyleRoot, { id: "b3-root" })] }), (0, jsx_runtime_1.jsx)(AuthenticationProvider_1.default, { partnerId: partnerId, automaticallySetFirstEoa: !!automaticallySetFirstEoa })] }) }) }) }) }) }) }));
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)(react_3.ThirdwebProvider, { children: (0, jsx_runtime_1.jsx)(wagmi_1.WagmiProvider, { config: wagmiConfig, reconnectOnMount: false, children: (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: queryClient, children: (0, jsx_runtime_1.jsx)(react_1.TooltipProvider, { children: (0, jsx_runtime_1.jsx)(index_1.ToastProvider, { children: (0, jsx_runtime_1.jsx)(LocalSDKProvider_1.LocalSDKProvider, { onConnectCallback: onConnect, onLogoutCallback: onLogout, children: (0, jsx_runtime_1.jsxs)(B3ConfigProvider_1.B3ConfigProvider, { accountOverride: accountOverride, environment: environment, automaticallySetFirstEoa: !!automaticallySetFirstEoa, theme: theme, clientType: clientType, partnerId: partnerId, stripePublishableKey: stripePublishableKey, createClientReferenceId: createClientReferenceId, enableTurnkey: enableTurnkey, defaultPermissions: defaultPermissions, children: [(0, jsx_runtime_1.jsx)(ToastContextConnector, {}), (0, jsx_runtime_1.jsxs)(react_1.RelayKitProviderWrapper, { simDuneApiKey: simDuneApiKey, children: [children, (0, jsx_runtime_1.jsx)(StyleRoot_1.StyleRoot, { id: "b3-root" })] }), (0, jsx_runtime_1.jsx)(AuthenticationProvider_1.default, { partnerId: partnerId, automaticallySetFirstEoa: !!automaticallySetFirstEoa })] }) }) }) }) }) }) }));
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* Component to connect the toast context to the global toast API
|
|
@@ -5,12 +5,14 @@ import { Wallet } from "thirdweb/wallets";
|
|
|
5
5
|
*/
|
|
6
6
|
export interface LocalSDKContextType {
|
|
7
7
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
8
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
8
9
|
}
|
|
9
10
|
export declare const LocalSDKContext: import("react").Context<LocalSDKContextType>;
|
|
10
11
|
/**
|
|
11
12
|
* Local SDK Provider that wraps the app and provides internal SDK state
|
|
12
13
|
*/
|
|
13
|
-
export declare function LocalSDKProvider({ children, onConnectCallback, }: {
|
|
14
|
+
export declare function LocalSDKProvider({ children, onConnectCallback, onLogoutCallback, }: {
|
|
14
15
|
children: React.ReactNode;
|
|
15
16
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
17
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
16
18
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -6,12 +6,14 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
exports.LocalSDKContext = (0, react_1.createContext)({
|
|
8
8
|
onConnectCallback: undefined,
|
|
9
|
+
onLogoutCallback: undefined,
|
|
9
10
|
});
|
|
10
11
|
/**
|
|
11
12
|
* Local SDK Provider that wraps the app and provides internal SDK state
|
|
12
13
|
*/
|
|
13
|
-
function LocalSDKProvider({ children, onConnectCallback, }) {
|
|
14
|
+
function LocalSDKProvider({ children, onConnectCallback, onLogoutCallback, }) {
|
|
14
15
|
return ((0, jsx_runtime_1.jsx)(exports.LocalSDKContext.Provider, { value: {
|
|
15
16
|
onConnectCallback,
|
|
17
|
+
onLogoutCallback,
|
|
16
18
|
}, children: children }));
|
|
17
19
|
}
|
|
@@ -22,7 +22,7 @@ const useTWAuth_1 = require("./useTWAuth");
|
|
|
22
22
|
const useUserQuery_1 = require("./useUserQuery");
|
|
23
23
|
const debug = (0, debug_1.debugB3React)("useAuthentication");
|
|
24
24
|
function useAuthentication(partnerId) {
|
|
25
|
-
const { onConnectCallback } = (0, react_2.useContext)(LocalSDKProvider_1.LocalSDKContext);
|
|
25
|
+
const { onConnectCallback, onLogoutCallback } = (0, react_2.useContext)(LocalSDKProvider_1.LocalSDKContext);
|
|
26
26
|
const { disconnect } = (0, react_3.useDisconnect)();
|
|
27
27
|
const wallets = (0, react_3.useConnectedWallets)();
|
|
28
28
|
const activeWallet = (0, react_3.useActiveWallet)();
|
|
@@ -156,7 +156,10 @@ function useAuthentication(partnerId) {
|
|
|
156
156
|
setIsConnected(false);
|
|
157
157
|
setUser();
|
|
158
158
|
callback?.();
|
|
159
|
-
|
|
159
|
+
if (onLogoutCallback) {
|
|
160
|
+
await onLogoutCallback();
|
|
161
|
+
}
|
|
162
|
+
}, [activeWallet, disconnect, wallets, setIsAuthenticated, setUser, setIsConnected, onLogoutCallback]);
|
|
160
163
|
const onConnect = (0, react_2.useCallback)(async (_walleAutoConnectedWith, allConnectedWallets) => {
|
|
161
164
|
debug("@@useAuthentication:onConnect", { _walleAutoConnectedWith, allConnectedWallets });
|
|
162
165
|
try {
|
|
@@ -8,7 +8,7 @@ import { ClientType } from "../../../client-manager";
|
|
|
8
8
|
/**
|
|
9
9
|
* Main B3Provider component
|
|
10
10
|
*/
|
|
11
|
-
export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster: _toaster, clientType, rpcUrls, partnerId, stripePublishableKey, onConnect, connectors, overrideDefaultConnectors, createClientReferenceId, enableTurnkey, defaultPermissions, }: {
|
|
11
|
+
export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster: _toaster, clientType, rpcUrls, partnerId, stripePublishableKey, onConnect, onLogout, connectors, overrideDefaultConnectors, createClientReferenceId, enableTurnkey, defaultPermissions, }: {
|
|
12
12
|
theme: "light" | "dark";
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
accountOverride?: Account;
|
|
@@ -25,6 +25,7 @@ export declare function B3Provider({ theme, children, accountOverride, environme
|
|
|
25
25
|
/** Partner-specific Stripe publishable key. If not provided, uses default B3 Stripe account. */
|
|
26
26
|
stripePublishableKey?: string;
|
|
27
27
|
onConnect?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
28
|
+
onLogout?: () => void | Promise<void>;
|
|
28
29
|
connectors?: CreateConnectorFn[];
|
|
29
30
|
overrideDefaultConnectors?: boolean;
|
|
30
31
|
createClientReferenceId?: (params: CreateOrderParams | CreateOnrampOrderParams) => Promise<string>;
|
|
@@ -20,7 +20,7 @@ const queryClient = new QueryClient();
|
|
|
20
20
|
*/
|
|
21
21
|
export function B3Provider({ theme = "light", children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey,
|
|
22
22
|
// deprecated since v0.0.87
|
|
23
|
-
toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey, onConnect, connectors, overrideDefaultConnectors = false, createClientReferenceId, enableTurnkey = false, defaultPermissions, }) {
|
|
23
|
+
toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey, onConnect, onLogout, connectors, overrideDefaultConnectors = false, createClientReferenceId, enableTurnkey = false, defaultPermissions, }) {
|
|
24
24
|
// Initialize Google Analytics on mount
|
|
25
25
|
useEffect(() => {
|
|
26
26
|
loadGA4Script();
|
|
@@ -30,7 +30,7 @@ toaster: _toaster, clientType = "rest", rpcUrls, partnerId, stripePublishableKey
|
|
|
30
30
|
setClientType(clientType);
|
|
31
31
|
}, [clientType]);
|
|
32
32
|
const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId, rpcUrls, connectors, overrideDefaultConnectors }), [partnerId, rpcUrls, connectors, overrideDefaultConnectors]);
|
|
33
|
-
return (_jsx(ThirdwebProvider, { children: _jsx(WagmiProvider, { config: wagmiConfig, reconnectOnMount: false, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(TooltipProvider, { children: _jsx(ToastProvider, { children: _jsx(LocalSDKProvider, { onConnectCallback: onConnect, children: _jsxs(B3ConfigProvider, { accountOverride: accountOverride, environment: environment, automaticallySetFirstEoa: !!automaticallySetFirstEoa, theme: theme, clientType: clientType, partnerId: partnerId, stripePublishableKey: stripePublishableKey, createClientReferenceId: createClientReferenceId, enableTurnkey: enableTurnkey, defaultPermissions: defaultPermissions, children: [_jsx(ToastContextConnector, {}), _jsxs(RelayKitProviderWrapper, { simDuneApiKey: simDuneApiKey, children: [children, _jsx(StyleRoot, { id: "b3-root" })] }), _jsx(AuthenticationProvider, { partnerId: partnerId, automaticallySetFirstEoa: !!automaticallySetFirstEoa })] }) }) }) }) }) }) }));
|
|
33
|
+
return (_jsx(ThirdwebProvider, { children: _jsx(WagmiProvider, { config: wagmiConfig, reconnectOnMount: false, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(TooltipProvider, { children: _jsx(ToastProvider, { children: _jsx(LocalSDKProvider, { onConnectCallback: onConnect, onLogoutCallback: onLogout, children: _jsxs(B3ConfigProvider, { accountOverride: accountOverride, environment: environment, automaticallySetFirstEoa: !!automaticallySetFirstEoa, theme: theme, clientType: clientType, partnerId: partnerId, stripePublishableKey: stripePublishableKey, createClientReferenceId: createClientReferenceId, enableTurnkey: enableTurnkey, defaultPermissions: defaultPermissions, children: [_jsx(ToastContextConnector, {}), _jsxs(RelayKitProviderWrapper, { simDuneApiKey: simDuneApiKey, children: [children, _jsx(StyleRoot, { id: "b3-root" })] }), _jsx(AuthenticationProvider, { partnerId: partnerId, automaticallySetFirstEoa: !!automaticallySetFirstEoa })] }) }) }) }) }) }) }));
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Component to connect the toast context to the global toast API
|
|
@@ -5,12 +5,14 @@ import { Wallet } from "thirdweb/wallets";
|
|
|
5
5
|
*/
|
|
6
6
|
export interface LocalSDKContextType {
|
|
7
7
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
8
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
8
9
|
}
|
|
9
10
|
export declare const LocalSDKContext: import("react").Context<LocalSDKContextType>;
|
|
10
11
|
/**
|
|
11
12
|
* Local SDK Provider that wraps the app and provides internal SDK state
|
|
12
13
|
*/
|
|
13
|
-
export declare function LocalSDKProvider({ children, onConnectCallback, }: {
|
|
14
|
+
export declare function LocalSDKProvider({ children, onConnectCallback, onLogoutCallback, }: {
|
|
14
15
|
children: React.ReactNode;
|
|
15
16
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
17
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
16
18
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,12 +2,14 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { createContext } from "react";
|
|
3
3
|
export const LocalSDKContext = createContext({
|
|
4
4
|
onConnectCallback: undefined,
|
|
5
|
+
onLogoutCallback: undefined,
|
|
5
6
|
});
|
|
6
7
|
/**
|
|
7
8
|
* Local SDK Provider that wraps the app and provides internal SDK state
|
|
8
9
|
*/
|
|
9
|
-
export function LocalSDKProvider({ children, onConnectCallback, }) {
|
|
10
|
+
export function LocalSDKProvider({ children, onConnectCallback, onLogoutCallback, }) {
|
|
10
11
|
return (_jsx(LocalSDKContext.Provider, { value: {
|
|
11
12
|
onConnectCallback,
|
|
13
|
+
onLogoutCallback,
|
|
12
14
|
}, children: children }));
|
|
13
15
|
}
|
|
@@ -16,7 +16,7 @@ import { useTWAuth } from "./useTWAuth.js";
|
|
|
16
16
|
import { useUserQuery } from "./useUserQuery.js";
|
|
17
17
|
const debug = debugB3React("useAuthentication");
|
|
18
18
|
export function useAuthentication(partnerId) {
|
|
19
|
-
const { onConnectCallback } = useContext(LocalSDKContext);
|
|
19
|
+
const { onConnectCallback, onLogoutCallback } = useContext(LocalSDKContext);
|
|
20
20
|
const { disconnect } = useDisconnect();
|
|
21
21
|
const wallets = useConnectedWallets();
|
|
22
22
|
const activeWallet = useActiveWallet();
|
|
@@ -150,7 +150,10 @@ export function useAuthentication(partnerId) {
|
|
|
150
150
|
setIsConnected(false);
|
|
151
151
|
setUser();
|
|
152
152
|
callback?.();
|
|
153
|
-
|
|
153
|
+
if (onLogoutCallback) {
|
|
154
|
+
await onLogoutCallback();
|
|
155
|
+
}
|
|
156
|
+
}, [activeWallet, disconnect, wallets, setIsAuthenticated, setUser, setIsConnected, onLogoutCallback]);
|
|
154
157
|
const onConnect = useCallback(async (_walleAutoConnectedWith, allConnectedWallets) => {
|
|
155
158
|
debug("@@useAuthentication:onConnect", { _walleAutoConnectedWith, allConnectedWallets });
|
|
156
159
|
try {
|
|
@@ -8,7 +8,7 @@ import { ClientType } from "../../../client-manager";
|
|
|
8
8
|
/**
|
|
9
9
|
* Main B3Provider component
|
|
10
10
|
*/
|
|
11
|
-
export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster: _toaster, clientType, rpcUrls, partnerId, stripePublishableKey, onConnect, connectors, overrideDefaultConnectors, createClientReferenceId, enableTurnkey, defaultPermissions, }: {
|
|
11
|
+
export declare function B3Provider({ theme, children, accountOverride, environment, automaticallySetFirstEoa, simDuneApiKey, toaster: _toaster, clientType, rpcUrls, partnerId, stripePublishableKey, onConnect, onLogout, connectors, overrideDefaultConnectors, createClientReferenceId, enableTurnkey, defaultPermissions, }: {
|
|
12
12
|
theme: "light" | "dark";
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
accountOverride?: Account;
|
|
@@ -25,6 +25,7 @@ export declare function B3Provider({ theme, children, accountOverride, environme
|
|
|
25
25
|
/** Partner-specific Stripe publishable key. If not provided, uses default B3 Stripe account. */
|
|
26
26
|
stripePublishableKey?: string;
|
|
27
27
|
onConnect?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
28
|
+
onLogout?: () => void | Promise<void>;
|
|
28
29
|
connectors?: CreateConnectorFn[];
|
|
29
30
|
overrideDefaultConnectors?: boolean;
|
|
30
31
|
createClientReferenceId?: (params: CreateOrderParams | CreateOnrampOrderParams) => Promise<string>;
|
|
@@ -5,12 +5,14 @@ import { Wallet } from "thirdweb/wallets";
|
|
|
5
5
|
*/
|
|
6
6
|
export interface LocalSDKContextType {
|
|
7
7
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
8
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
8
9
|
}
|
|
9
10
|
export declare const LocalSDKContext: import("react").Context<LocalSDKContextType>;
|
|
10
11
|
/**
|
|
11
12
|
* Local SDK Provider that wraps the app and provides internal SDK state
|
|
12
13
|
*/
|
|
13
|
-
export declare function LocalSDKProvider({ children, onConnectCallback, }: {
|
|
14
|
+
export declare function LocalSDKProvider({ children, onConnectCallback, onLogoutCallback, }: {
|
|
14
15
|
children: React.ReactNode;
|
|
15
16
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
17
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
16
18
|
}): import("react/jsx-runtime").JSX.Element;
|
package/package.json
CHANGED
|
@@ -37,6 +37,7 @@ export function B3Provider({
|
|
|
37
37
|
partnerId,
|
|
38
38
|
stripePublishableKey,
|
|
39
39
|
onConnect,
|
|
40
|
+
onLogout,
|
|
40
41
|
connectors,
|
|
41
42
|
overrideDefaultConnectors = false,
|
|
42
43
|
createClientReferenceId,
|
|
@@ -59,6 +60,7 @@ export function B3Provider({
|
|
|
59
60
|
/** Partner-specific Stripe publishable key. If not provided, uses default B3 Stripe account. */
|
|
60
61
|
stripePublishableKey?: string;
|
|
61
62
|
onConnect?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
63
|
+
onLogout?: () => void | Promise<void>;
|
|
62
64
|
connectors?: CreateConnectorFn[];
|
|
63
65
|
overrideDefaultConnectors?: boolean;
|
|
64
66
|
createClientReferenceId?: (params: CreateOrderParams | CreateOnrampOrderParams) => Promise<string>;
|
|
@@ -86,7 +88,7 @@ export function B3Provider({
|
|
|
86
88
|
<QueryClientProvider client={queryClient}>
|
|
87
89
|
<TooltipProvider>
|
|
88
90
|
<ToastProvider>
|
|
89
|
-
<LocalSDKProvider onConnectCallback={onConnect}>
|
|
91
|
+
<LocalSDKProvider onConnectCallback={onConnect} onLogoutCallback={onLogout}>
|
|
90
92
|
<B3ConfigProvider
|
|
91
93
|
accountOverride={accountOverride}
|
|
92
94
|
environment={environment}
|
|
@@ -7,10 +7,12 @@ import { Wallet } from "thirdweb/wallets";
|
|
|
7
7
|
*/
|
|
8
8
|
export interface LocalSDKContextType {
|
|
9
9
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
10
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export const LocalSDKContext = createContext<LocalSDKContextType>({
|
|
13
14
|
onConnectCallback: undefined,
|
|
15
|
+
onLogoutCallback: undefined,
|
|
14
16
|
});
|
|
15
17
|
|
|
16
18
|
/**
|
|
@@ -19,14 +21,17 @@ export const LocalSDKContext = createContext<LocalSDKContextType>({
|
|
|
19
21
|
export function LocalSDKProvider({
|
|
20
22
|
children,
|
|
21
23
|
onConnectCallback,
|
|
24
|
+
onLogoutCallback,
|
|
22
25
|
}: {
|
|
23
26
|
children: React.ReactNode;
|
|
24
27
|
onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
|
|
28
|
+
onLogoutCallback?: () => void | Promise<void>;
|
|
25
29
|
}) {
|
|
26
30
|
return (
|
|
27
31
|
<LocalSDKContext.Provider
|
|
28
32
|
value={{
|
|
29
33
|
onConnectCallback,
|
|
34
|
+
onLogoutCallback,
|
|
30
35
|
}}
|
|
31
36
|
>
|
|
32
37
|
{children}
|
|
@@ -25,7 +25,7 @@ import { useUserQuery } from "./useUserQuery";
|
|
|
25
25
|
const debug = debugB3React("useAuthentication");
|
|
26
26
|
|
|
27
27
|
export function useAuthentication(partnerId: string) {
|
|
28
|
-
const { onConnectCallback } = useContext(LocalSDKContext);
|
|
28
|
+
const { onConnectCallback, onLogoutCallback } = useContext(LocalSDKContext);
|
|
29
29
|
const { disconnect } = useDisconnect();
|
|
30
30
|
const wallets = useConnectedWallets();
|
|
31
31
|
const activeWallet = useActiveWallet();
|
|
@@ -181,8 +181,12 @@ export function useAuthentication(partnerId: string) {
|
|
|
181
181
|
setIsConnected(false);
|
|
182
182
|
setUser();
|
|
183
183
|
callback?.();
|
|
184
|
+
|
|
185
|
+
if (onLogoutCallback) {
|
|
186
|
+
await onLogoutCallback();
|
|
187
|
+
}
|
|
184
188
|
},
|
|
185
|
-
[activeWallet, disconnect, wallets, setIsAuthenticated, setUser, setIsConnected],
|
|
189
|
+
[activeWallet, disconnect, wallets, setIsAuthenticated, setUser, setIsConnected, onLogoutCallback],
|
|
186
190
|
);
|
|
187
191
|
|
|
188
192
|
const onConnect = useCallback(
|