@1sat/react 0.0.75 → 0.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +53 -13
- package/dist/wallet-context.d.ts +6 -2
- package/dist/wallet-context.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from "@1sat/connect";
|
|
|
6
6
|
// src/wallet-context.tsx
|
|
7
7
|
import {
|
|
8
8
|
connectWallet,
|
|
9
|
+
createWalletSession,
|
|
9
10
|
getAvailableProviders,
|
|
10
11
|
reconnectSigmaWallet
|
|
11
12
|
} from "@1sat/connect";
|
|
@@ -53,6 +54,7 @@ var WalletContext = createContext(null);
|
|
|
53
54
|
function WalletProvider({
|
|
54
55
|
autoReconnect = false,
|
|
55
56
|
autoDetect = true,
|
|
57
|
+
pollIntervalMs,
|
|
56
58
|
providers,
|
|
57
59
|
children
|
|
58
60
|
}) {
|
|
@@ -60,28 +62,59 @@ function WalletProvider({
|
|
|
60
62
|
const [status, setStatus] = useState("disconnected");
|
|
61
63
|
const [identityKey, setIdentityKey] = useState(null);
|
|
62
64
|
const [providerType, setProviderType] = useState(null);
|
|
65
|
+
const [disconnectReason, setDisconnectReason] = useState(null);
|
|
63
66
|
const [error, setError] = useState(null);
|
|
64
|
-
const
|
|
67
|
+
const sessionRef = useRef(null);
|
|
65
68
|
const availableProviders = useMemo(() => getAvailableProviders({ providers }), [providers]);
|
|
66
|
-
const
|
|
67
|
-
setWallet(result.wallet);
|
|
68
|
-
setIdentityKey(result.identityKey);
|
|
69
|
-
setProviderType(result.provider);
|
|
70
|
-
setStatus("connected");
|
|
71
|
-
setError(null);
|
|
72
|
-
disconnectRef.current = result.disconnect;
|
|
73
|
-
saveStored(result.provider);
|
|
74
|
-
}, []);
|
|
75
|
-
const disconnect = useCallback(() => {
|
|
76
|
-
disconnectRef.current?.();
|
|
77
|
-
disconnectRef.current = null;
|
|
69
|
+
const clearSessionState = useCallback((reason) => {
|
|
78
70
|
setWallet(null);
|
|
79
71
|
setIdentityKey(null);
|
|
80
72
|
setProviderType(null);
|
|
81
73
|
setStatus("disconnected");
|
|
74
|
+
setDisconnectReason(reason);
|
|
82
75
|
setError(null);
|
|
83
76
|
clearStored();
|
|
84
77
|
}, []);
|
|
78
|
+
const bindSession = useCallback((result) => {
|
|
79
|
+
const previous = sessionRef.current;
|
|
80
|
+
sessionRef.current = null;
|
|
81
|
+
previous?.stop();
|
|
82
|
+
if (previous?.status === "connected") {
|
|
83
|
+
previous.disconnect("manual");
|
|
84
|
+
}
|
|
85
|
+
const session = createWalletSession(result, { pollIntervalMs });
|
|
86
|
+
sessionRef.current = session;
|
|
87
|
+
session.on("identityChange", ({ next }) => {
|
|
88
|
+
if (sessionRef.current !== session)
|
|
89
|
+
return;
|
|
90
|
+
setIdentityKey(next);
|
|
91
|
+
});
|
|
92
|
+
session.on("disconnected", ({ reason }) => {
|
|
93
|
+
if (sessionRef.current !== session)
|
|
94
|
+
return;
|
|
95
|
+
sessionRef.current = null;
|
|
96
|
+
clearSessionState(reason);
|
|
97
|
+
});
|
|
98
|
+
setWallet(result.wallet);
|
|
99
|
+
setIdentityKey(result.identityKey);
|
|
100
|
+
setProviderType(result.provider);
|
|
101
|
+
setStatus("connected");
|
|
102
|
+
setDisconnectReason(null);
|
|
103
|
+
setError(null);
|
|
104
|
+
saveStored(result.provider);
|
|
105
|
+
session.start();
|
|
106
|
+
}, [pollIntervalMs, clearSessionState]);
|
|
107
|
+
const applyResult = useCallback((result) => {
|
|
108
|
+
bindSession(result);
|
|
109
|
+
}, [bindSession]);
|
|
110
|
+
const disconnect = useCallback(() => {
|
|
111
|
+
const session = sessionRef.current;
|
|
112
|
+
sessionRef.current = null;
|
|
113
|
+
if (session && session.status === "connected") {
|
|
114
|
+
session.disconnect("manual");
|
|
115
|
+
}
|
|
116
|
+
clearSessionState("manual");
|
|
117
|
+
}, [clearSessionState]);
|
|
85
118
|
const connect = useCallback(async (selectedType) => {
|
|
86
119
|
setError(null);
|
|
87
120
|
if (selectedType) {
|
|
@@ -171,12 +204,18 @@ function WalletProvider({
|
|
|
171
204
|
setStatus("disconnected");
|
|
172
205
|
});
|
|
173
206
|
}, []);
|
|
207
|
+
useEffect(() => {
|
|
208
|
+
return () => {
|
|
209
|
+
sessionRef.current?.stop();
|
|
210
|
+
};
|
|
211
|
+
}, []);
|
|
174
212
|
const value = useMemo(() => ({
|
|
175
213
|
wallet,
|
|
176
214
|
status,
|
|
177
215
|
identityKey,
|
|
178
216
|
providerType,
|
|
179
217
|
availableProviders,
|
|
218
|
+
disconnectReason,
|
|
180
219
|
connect,
|
|
181
220
|
applyResult,
|
|
182
221
|
disconnect,
|
|
@@ -187,6 +226,7 @@ function WalletProvider({
|
|
|
187
226
|
identityKey,
|
|
188
227
|
providerType,
|
|
189
228
|
availableProviders,
|
|
229
|
+
disconnectReason,
|
|
190
230
|
connect,
|
|
191
231
|
applyResult,
|
|
192
232
|
disconnect,
|
package/dist/wallet-context.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AvailableProvider, type ConnectWalletResult, type WalletProviderConfig } from '@1sat/connect';
|
|
1
|
+
import { type AvailableProvider, type ConnectWalletResult, type DisconnectReason, type WalletProviderConfig } from '@1sat/connect';
|
|
2
2
|
import type { WalletInterface } from '@bsv/sdk';
|
|
3
3
|
import { type ReactNode } from 'react';
|
|
4
4
|
export type WalletStatus = 'disconnected' | 'detecting' | 'selecting' | 'connecting' | 'connected';
|
|
@@ -8,6 +8,8 @@ export interface WalletContextValue {
|
|
|
8
8
|
identityKey: string | null;
|
|
9
9
|
providerType: string | null;
|
|
10
10
|
availableProviders: AvailableProvider[];
|
|
11
|
+
/** Why the last session ended, if any (null after a successful connect). */
|
|
12
|
+
disconnectReason: DisconnectReason | null;
|
|
11
13
|
connect: (providerType?: string) => Promise<void>;
|
|
12
14
|
applyResult: (result: ConnectWalletResult) => void;
|
|
13
15
|
disconnect: () => void;
|
|
@@ -16,11 +18,13 @@ export interface WalletContextValue {
|
|
|
16
18
|
export interface WalletProviderProps {
|
|
17
19
|
autoReconnect?: boolean;
|
|
18
20
|
autoDetect?: boolean;
|
|
21
|
+
/** Identity/auth poll interval in ms (default 4000). */
|
|
22
|
+
pollIntervalMs?: number;
|
|
19
23
|
providers?: WalletProviderConfig[];
|
|
20
24
|
children: ReactNode;
|
|
21
25
|
}
|
|
22
26
|
export declare function loadStoredProvider(): string | null;
|
|
23
27
|
export declare function clearSigmaGuard(): void;
|
|
24
|
-
export declare function WalletProvider({ autoReconnect, autoDetect, providers, children, }: WalletProviderProps): import("react").JSX.Element;
|
|
28
|
+
export declare function WalletProvider({ autoReconnect, autoDetect, pollIntervalMs, providers, children, }: WalletProviderProps): import("react").JSX.Element;
|
|
25
29
|
export declare function useWallet(): WalletContextValue;
|
|
26
30
|
//# sourceMappingURL=wallet-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-context.d.ts","sourceRoot":"","sources":["../src/wallet-context.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"wallet-context.d.ts","sourceRoot":"","sources":["../src/wallet-context.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAMzB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EACN,KAAK,SAAS,EAQd,MAAM,OAAO,CAAA;AAEd,MAAM,MAAM,YAAY,GACrB,cAAc,GACd,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,CAAA;AAEd,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,4EAA4E;IAC5E,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,WAAW,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAClD,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IACnC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAClC,QAAQ,EAAE,SAAS,CAAA;CACnB;AAID,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAUlD;AAiBD,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAID,wBAAgB,cAAc,CAAC,EAC9B,aAAqB,EACrB,UAAiB,EACjB,cAAc,EACd,SAAS,EACT,QAAQ,GACR,EAAE,mBAAmB,+BAuOrB;AAED,wBAAgB,SAAS,IAAI,kBAAkB,CAM9C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1sat/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.76",
|
|
4
4
|
"description": "React hooks and components for 1Sat wallet integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@1sat/connect": "0.0.
|
|
32
|
+
"@1sat/connect": "0.0.79"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"@bsv/sdk": "^2.1.6",
|