@miden-sdk/miden-wallet-adapter-react 0.13.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.
- package/MidenFiSignerProvider.tsx +732 -0
- package/WalletProvider.tsx +443 -0
- package/__tests__/MidenFiSignerProvider.test.tsx +426 -0
- package/dist/MidenFiSignerProvider.d.ts +113 -0
- package/dist/MidenFiSignerProvider.js +501 -0
- package/dist/MidenFiSignerProvider.js.map +1 -0
- package/dist/WalletProvider.d.ts +13 -0
- package/dist/WalletProvider.js +302 -0
- package/dist/WalletProvider.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/useLocalStorage.d.ts +2 -0
- package/dist/useLocalStorage.js +39 -0
- package/dist/useLocalStorage.js.map +1 -0
- package/dist/useWallet.d.ts +30 -0
- package/dist/useWallet.js +81 -0
- package/dist/useWallet.js.map +1 -0
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +8 -0
- package/dist/vitest.config.js.map +1 -0
- package/docs/README.md +30 -0
- package/docs/functions/useLocalStorage.md +29 -0
- package/docs/functions/useMidenFiWallet.md +28 -0
- package/docs/functions/useWallet.md +13 -0
- package/docs/interfaces/MidenFiSignerProviderProps.md +87 -0
- package/docs/interfaces/Wallet.md +19 -0
- package/docs/interfaces/WalletContextState.md +235 -0
- package/docs/interfaces/WalletProviderProps.md +65 -0
- package/docs/variables/MidenFiSignerProvider.md +54 -0
- package/docs/variables/WalletContext.md +9 -0
- package/docs/variables/WalletProvider.md +9 -0
- package/index.ts +15 -0
- package/package.json +42 -0
- package/tsconfig.json +16 -0
- package/useLocalStorage.ts +39 -0
- package/useWallet.ts +197 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AllowedPrivateData, PrivateDataPermission, WalletAdapterNetwork, WalletNotConnectedError, WalletNotReadyError, WalletNotSelectedError, WalletReadyState, } from '@miden-sdk/miden-wallet-adapter-base';
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { useLocalStorage } from './useLocalStorage';
|
|
5
|
+
import { WalletContext } from './useWallet';
|
|
6
|
+
const initialState = {
|
|
7
|
+
wallet: null,
|
|
8
|
+
adapter: null,
|
|
9
|
+
address: null,
|
|
10
|
+
publicKey: null,
|
|
11
|
+
connected: false,
|
|
12
|
+
};
|
|
13
|
+
export const WalletProvider = ({ children, wallets: adapters, autoConnect = false, privateDataPermission = PrivateDataPermission.UponRequest, network = WalletAdapterNetwork.Testnet, onError, localStorageKey = 'walletName', allowedPrivateData = AllowedPrivateData.None, }) => {
|
|
14
|
+
const [name, setName] = useLocalStorage(localStorageKey, null);
|
|
15
|
+
const [{ wallet, adapter, address, publicKey, connected }, setState] = useState(initialState);
|
|
16
|
+
const readyState = adapter?.readyState || WalletReadyState.Unsupported;
|
|
17
|
+
const [connecting, setConnecting] = useState(false);
|
|
18
|
+
const [disconnecting, setDisconnecting] = useState(false);
|
|
19
|
+
const isConnecting = useRef(false);
|
|
20
|
+
const isDisconnecting = useRef(false);
|
|
21
|
+
const isUnloading = useRef(false);
|
|
22
|
+
// Wrap adapters to conform to the `Wallet` interface
|
|
23
|
+
const [wallets, setWallets] = useState(() => adapters.map((adapter) => ({
|
|
24
|
+
adapter,
|
|
25
|
+
readyState: adapter.readyState,
|
|
26
|
+
})));
|
|
27
|
+
// When the adapters change, start to listen for changes to their `readyState`
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
// When the adapters change, wrap them to conform to the `Wallet` interface
|
|
30
|
+
setWallets((wallets) => adapters.map((adapter, index) => {
|
|
31
|
+
const wallet = wallets[index];
|
|
32
|
+
// If the wallet hasn't changed, return the same instance
|
|
33
|
+
return wallet &&
|
|
34
|
+
wallet.adapter === adapter &&
|
|
35
|
+
wallet.readyState === adapter.readyState
|
|
36
|
+
? wallet
|
|
37
|
+
: {
|
|
38
|
+
adapter: adapter,
|
|
39
|
+
readyState: adapter.readyState,
|
|
40
|
+
};
|
|
41
|
+
}));
|
|
42
|
+
function handleReadyStateChange(readyState) {
|
|
43
|
+
setWallets((prevWallets) => {
|
|
44
|
+
const index = prevWallets.findIndex(({ adapter }) => adapter === this);
|
|
45
|
+
if (index === -1)
|
|
46
|
+
return prevWallets;
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
48
|
+
const { adapter } = prevWallets[index];
|
|
49
|
+
return [
|
|
50
|
+
...prevWallets.slice(0, index),
|
|
51
|
+
{ adapter, readyState },
|
|
52
|
+
...prevWallets.slice(index + 1),
|
|
53
|
+
];
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
adapters.forEach((adapter) => adapter.on('readyStateChange', handleReadyStateChange, adapter));
|
|
57
|
+
return () => adapters.forEach((adapter) => adapter.off('readyStateChange', handleReadyStateChange, adapter));
|
|
58
|
+
}, [adapters]);
|
|
59
|
+
// When the selected wallet changes, initialize the state
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
const wallet = name && wallets.find(({ adapter }) => adapter.name === name);
|
|
62
|
+
if (wallet) {
|
|
63
|
+
setState({
|
|
64
|
+
wallet,
|
|
65
|
+
adapter: wallet.adapter,
|
|
66
|
+
connected: wallet.adapter.connected,
|
|
67
|
+
address: wallet.adapter.address,
|
|
68
|
+
publicKey: wallet.adapter.publicKey,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
setState(initialState);
|
|
73
|
+
}
|
|
74
|
+
}, [name, wallets]);
|
|
75
|
+
// If the window is closing or reloading, ignore disconnect and error events from the adapter
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
function listener() {
|
|
78
|
+
isUnloading.current = true;
|
|
79
|
+
}
|
|
80
|
+
window.addEventListener('beforeunload', listener);
|
|
81
|
+
return () => window.removeEventListener('beforeunload', listener);
|
|
82
|
+
}, [isUnloading]);
|
|
83
|
+
// Handle the adapter's connect event
|
|
84
|
+
const handleConnect = useCallback(() => {
|
|
85
|
+
if (!adapter)
|
|
86
|
+
return;
|
|
87
|
+
setState((state) => ({
|
|
88
|
+
...state,
|
|
89
|
+
connected: adapter.connected,
|
|
90
|
+
address: adapter.address,
|
|
91
|
+
publicKey: adapter.publicKey,
|
|
92
|
+
}));
|
|
93
|
+
}, [adapter]);
|
|
94
|
+
// Handle the adapter's disconnect event
|
|
95
|
+
const handleDisconnect = useCallback(() => {
|
|
96
|
+
// Clear the selected wallet unless the window is unloading
|
|
97
|
+
if (!isUnloading.current)
|
|
98
|
+
setName(null);
|
|
99
|
+
}, [isUnloading, setName]);
|
|
100
|
+
// Handle the adapter's error event, and local errors
|
|
101
|
+
const handleError = useCallback((error) => {
|
|
102
|
+
// Call onError unless the window is unloading
|
|
103
|
+
if (!isUnloading.current)
|
|
104
|
+
(onError || console.error)(error);
|
|
105
|
+
return error;
|
|
106
|
+
}, [isUnloading, onError]);
|
|
107
|
+
// Setup and teardown event listeners when the adapter changes
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
if (adapter) {
|
|
110
|
+
adapter.on('connect', handleConnect);
|
|
111
|
+
adapter.on('disconnect', handleDisconnect);
|
|
112
|
+
adapter.on('error', handleError);
|
|
113
|
+
return () => {
|
|
114
|
+
adapter.off('connect', handleConnect);
|
|
115
|
+
adapter.off('disconnect', handleDisconnect);
|
|
116
|
+
adapter.off('error', handleError);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}, [adapter, handleConnect, handleDisconnect, handleError]);
|
|
120
|
+
// When the adapter changes, disconnect the old one
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
return () => {
|
|
123
|
+
adapter?.disconnect();
|
|
124
|
+
};
|
|
125
|
+
}, [adapter]);
|
|
126
|
+
// If autoConnect is enabled, try to connect when the adapter changes and is ready
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
if (isConnecting.current ||
|
|
129
|
+
connected ||
|
|
130
|
+
!autoConnect ||
|
|
131
|
+
!adapter ||
|
|
132
|
+
!(readyState === WalletReadyState.Installed ||
|
|
133
|
+
readyState === WalletReadyState.Loadable))
|
|
134
|
+
return;
|
|
135
|
+
(async function () {
|
|
136
|
+
isConnecting.current = true;
|
|
137
|
+
setConnecting(true);
|
|
138
|
+
try {
|
|
139
|
+
await adapter.connect(privateDataPermission, network, allowedPrivateData);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
// Clear the selected wallet
|
|
143
|
+
setName(null);
|
|
144
|
+
// Don't throw error, but handleError will still be called
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
setConnecting(false);
|
|
148
|
+
isConnecting.current = false;
|
|
149
|
+
}
|
|
150
|
+
})();
|
|
151
|
+
}, [isConnecting, connected, autoConnect, adapter, readyState, setName]);
|
|
152
|
+
// Connect the adapter to the wallet
|
|
153
|
+
const connect = useCallback(async () => {
|
|
154
|
+
if (isConnecting.current || isDisconnecting.current || connected)
|
|
155
|
+
return;
|
|
156
|
+
if (!adapter)
|
|
157
|
+
throw handleError(new WalletNotSelectedError());
|
|
158
|
+
if (!(readyState === WalletReadyState.Installed ||
|
|
159
|
+
readyState === WalletReadyState.Loadable)) {
|
|
160
|
+
// Clear the selected wallet
|
|
161
|
+
setName(null);
|
|
162
|
+
if (typeof window !== 'undefined') {
|
|
163
|
+
window.open(adapter.url, '_blank');
|
|
164
|
+
}
|
|
165
|
+
throw handleError(new WalletNotReadyError());
|
|
166
|
+
}
|
|
167
|
+
isConnecting.current = true;
|
|
168
|
+
setConnecting(true);
|
|
169
|
+
try {
|
|
170
|
+
await adapter.connect(privateDataPermission, network, allowedPrivateData);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
// Clear the selected wallet
|
|
174
|
+
setName(null);
|
|
175
|
+
// Rethrow the error, and handleError will also be called
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
setConnecting(false);
|
|
180
|
+
isConnecting.current = false;
|
|
181
|
+
}
|
|
182
|
+
}, [
|
|
183
|
+
isConnecting,
|
|
184
|
+
isDisconnecting,
|
|
185
|
+
connected,
|
|
186
|
+
adapter,
|
|
187
|
+
readyState,
|
|
188
|
+
handleError,
|
|
189
|
+
setName,
|
|
190
|
+
]);
|
|
191
|
+
// Disconnect the adapter from the wallet
|
|
192
|
+
const disconnect = useCallback(async () => {
|
|
193
|
+
if (isDisconnecting.current)
|
|
194
|
+
return;
|
|
195
|
+
if (!adapter)
|
|
196
|
+
return setName(null);
|
|
197
|
+
isDisconnecting.current = true;
|
|
198
|
+
setDisconnecting(true);
|
|
199
|
+
try {
|
|
200
|
+
await adapter.disconnect();
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
// Clear the selected wallet
|
|
204
|
+
setName(null);
|
|
205
|
+
// Rethrow the error, and handleError will also be called
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
setDisconnecting(false);
|
|
210
|
+
isDisconnecting.current = false;
|
|
211
|
+
}
|
|
212
|
+
}, [isDisconnecting, adapter, setName]);
|
|
213
|
+
// Request transaction
|
|
214
|
+
const requestTransaction = useMemo(() => adapter && 'requestTransaction' in adapter
|
|
215
|
+
? async (transaction) => {
|
|
216
|
+
if (!connected)
|
|
217
|
+
throw handleError(new WalletNotConnectedError());
|
|
218
|
+
return await adapter.requestTransaction(transaction);
|
|
219
|
+
}
|
|
220
|
+
: undefined, [adapter, handleError, connected]);
|
|
221
|
+
// Request assets
|
|
222
|
+
const requestAssets = useMemo(() => adapter && 'requestAssets' in adapter
|
|
223
|
+
? async () => {
|
|
224
|
+
if (!connected)
|
|
225
|
+
throw handleError(new WalletNotConnectedError());
|
|
226
|
+
return await adapter.requestAssets();
|
|
227
|
+
}
|
|
228
|
+
: undefined, [adapter, handleError, connected]);
|
|
229
|
+
// Request private notes
|
|
230
|
+
const requestPrivateNotes = useMemo(() => adapter && 'requestPrivateNotes' in adapter
|
|
231
|
+
? async (noteFilterType, noteIds) => {
|
|
232
|
+
if (!connected)
|
|
233
|
+
throw handleError(new WalletNotConnectedError());
|
|
234
|
+
return await adapter.requestPrivateNotes(noteFilterType, noteIds);
|
|
235
|
+
}
|
|
236
|
+
: undefined, [adapter, handleError, connected]);
|
|
237
|
+
const signBytes = useMemo(() => adapter && 'signBytes' in adapter
|
|
238
|
+
? async (message, kind) => {
|
|
239
|
+
if (!connected)
|
|
240
|
+
throw handleError(new WalletNotConnectedError());
|
|
241
|
+
return await adapter.signBytes(message, kind);
|
|
242
|
+
}
|
|
243
|
+
: undefined, [adapter, handleError, connected]);
|
|
244
|
+
const importPrivateNote = useMemo(() => adapter && 'importPrivateNote' in adapter
|
|
245
|
+
? async (note) => {
|
|
246
|
+
if (!connected)
|
|
247
|
+
throw handleError(new WalletNotConnectedError());
|
|
248
|
+
return await adapter.importPrivateNote(note);
|
|
249
|
+
}
|
|
250
|
+
: undefined, [adapter, handleError, connected]);
|
|
251
|
+
const requestConsumableNotes = useMemo(() => adapter && 'requestConsumableNotes' in adapter
|
|
252
|
+
? async () => {
|
|
253
|
+
if (!connected)
|
|
254
|
+
throw handleError(new WalletNotConnectedError());
|
|
255
|
+
return await adapter.requestConsumableNotes();
|
|
256
|
+
}
|
|
257
|
+
: undefined, [adapter, handleError, connected]);
|
|
258
|
+
const waitForTransaction = useMemo(() => adapter && 'waitForTransaction' in adapter
|
|
259
|
+
? async (txId, timeout) => {
|
|
260
|
+
if (!connected)
|
|
261
|
+
throw handleError(new WalletNotConnectedError());
|
|
262
|
+
return await adapter.waitForTransaction(txId, timeout);
|
|
263
|
+
}
|
|
264
|
+
: undefined, [adapter, handleError, connected]);
|
|
265
|
+
const requestSend = useMemo(() => adapter && 'requestSend' in adapter
|
|
266
|
+
? async (transaction) => {
|
|
267
|
+
if (!connected)
|
|
268
|
+
throw handleError(new WalletNotConnectedError());
|
|
269
|
+
return await adapter.requestSend(transaction);
|
|
270
|
+
}
|
|
271
|
+
: undefined, [adapter, handleError, connected]);
|
|
272
|
+
const requestConsume = useMemo(() => adapter && 'requestConsume' in adapter
|
|
273
|
+
? async (transaction) => {
|
|
274
|
+
if (!connected)
|
|
275
|
+
throw handleError(new WalletNotConnectedError());
|
|
276
|
+
return await adapter.requestConsume(transaction);
|
|
277
|
+
}
|
|
278
|
+
: undefined, [adapter, handleError, connected]);
|
|
279
|
+
return (_jsx(WalletContext.Provider, { value: {
|
|
280
|
+
autoConnect,
|
|
281
|
+
wallets,
|
|
282
|
+
wallet,
|
|
283
|
+
address,
|
|
284
|
+
publicKey,
|
|
285
|
+
connected,
|
|
286
|
+
connecting,
|
|
287
|
+
disconnecting,
|
|
288
|
+
select: setName,
|
|
289
|
+
connect,
|
|
290
|
+
disconnect,
|
|
291
|
+
requestTransaction,
|
|
292
|
+
requestAssets,
|
|
293
|
+
requestPrivateNotes,
|
|
294
|
+
signBytes,
|
|
295
|
+
importPrivateNote,
|
|
296
|
+
requestConsumableNotes,
|
|
297
|
+
waitForTransaction,
|
|
298
|
+
requestSend,
|
|
299
|
+
requestConsume,
|
|
300
|
+
}, children: children }));
|
|
301
|
+
};
|
|
302
|
+
//# sourceMappingURL=WalletProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../WalletProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './WalletProvider';
|
|
2
|
+
export * from './useLocalStorage';
|
|
3
|
+
export * from './useWallet';
|
|
4
|
+
export { MidenFiSignerProvider, useMidenFiWallet, WalletContext, type MidenFiSignerProviderProps, type Wallet, type WalletContextState, type MidenFiWalletContextState, } from './MidenFiSignerProvider';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Legacy exports for backward compatibility
|
|
2
|
+
export * from './WalletProvider';
|
|
3
|
+
export * from './useLocalStorage';
|
|
4
|
+
export * from './useWallet';
|
|
5
|
+
// MidenFi Signer Provider - unified provider for @miden-sdk/react integration
|
|
6
|
+
export { MidenFiSignerProvider, useMidenFiWallet, WalletContext, } from './MidenFiSignerProvider';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAE5B,8EAA8E;AAC9E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GAKd,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from 'react';
|
|
2
|
+
export function useLocalStorage(key, defaultState) {
|
|
3
|
+
const state = useState(() => {
|
|
4
|
+
try {
|
|
5
|
+
const value = localStorage.getItem(key);
|
|
6
|
+
if (value)
|
|
7
|
+
return JSON.parse(value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
if (typeof window !== 'undefined') {
|
|
11
|
+
console.error(error);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return defaultState;
|
|
15
|
+
});
|
|
16
|
+
const value = state[0];
|
|
17
|
+
const isFirstRender = useRef(true);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (isFirstRender.current) {
|
|
20
|
+
isFirstRender.current = false;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
if (value === null) {
|
|
25
|
+
localStorage.removeItem(key);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (typeof window !== 'undefined') {
|
|
33
|
+
console.error(error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, [value, key]);
|
|
37
|
+
return state;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=useLocalStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../useLocalStorage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,UAAU,eAAe,CAAI,GAAW,EAAE,YAAe;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAI,GAAG,EAAE;QAC3B,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YACxB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Adapter, AllowedPrivateData, MessageSignerWalletAdapterProps, PrivateDataPermission, WalletAdapterNetwork, WalletName, WalletReadyState } from '@miden-sdk/miden-wallet-adapter-base';
|
|
2
|
+
export interface Wallet {
|
|
3
|
+
adapter: Adapter;
|
|
4
|
+
readyState: WalletReadyState;
|
|
5
|
+
}
|
|
6
|
+
export interface WalletContextState {
|
|
7
|
+
autoConnect: boolean;
|
|
8
|
+
wallets: Wallet[];
|
|
9
|
+
wallet: Wallet | null;
|
|
10
|
+
address: string | null;
|
|
11
|
+
publicKey: Uint8Array | null;
|
|
12
|
+
connecting: boolean;
|
|
13
|
+
connected: boolean;
|
|
14
|
+
disconnecting: boolean;
|
|
15
|
+
privateDataPermission?: PrivateDataPermission;
|
|
16
|
+
select(walletName: WalletName): void;
|
|
17
|
+
connect(privateDataPermission: PrivateDataPermission, network: WalletAdapterNetwork, allowedPrivateData?: AllowedPrivateData): Promise<void>;
|
|
18
|
+
disconnect(): Promise<void>;
|
|
19
|
+
requestTransaction: MessageSignerWalletAdapterProps['requestTransaction'] | undefined;
|
|
20
|
+
requestSend: MessageSignerWalletAdapterProps['requestSend'] | undefined;
|
|
21
|
+
requestConsume: MessageSignerWalletAdapterProps['requestConsume'] | undefined;
|
|
22
|
+
requestAssets: MessageSignerWalletAdapterProps['requestAssets'] | undefined;
|
|
23
|
+
requestPrivateNotes: MessageSignerWalletAdapterProps['requestPrivateNotes'] | undefined;
|
|
24
|
+
signBytes: MessageSignerWalletAdapterProps['signBytes'] | undefined;
|
|
25
|
+
importPrivateNote: MessageSignerWalletAdapterProps['importPrivateNote'] | undefined;
|
|
26
|
+
requestConsumableNotes: MessageSignerWalletAdapterProps['requestConsumableNotes'] | undefined;
|
|
27
|
+
waitForTransaction: MessageSignerWalletAdapterProps['waitForTransaction'] | undefined;
|
|
28
|
+
}
|
|
29
|
+
export declare const WalletContext: import("react").Context<WalletContextState>;
|
|
30
|
+
export declare function useWallet(): WalletContextState;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
const EMPTY_ARRAY = [];
|
|
3
|
+
const DEFAULT_CONTEXT = {
|
|
4
|
+
autoConnect: false,
|
|
5
|
+
connecting: false,
|
|
6
|
+
connected: false,
|
|
7
|
+
disconnecting: false,
|
|
8
|
+
select(_name) {
|
|
9
|
+
console.error(constructMissingProviderErrorMessage('get', 'select'));
|
|
10
|
+
},
|
|
11
|
+
connect(_privateDataPermission, _network, _allowedPrivateData) {
|
|
12
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'connect')));
|
|
13
|
+
},
|
|
14
|
+
disconnect() {
|
|
15
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'disconnect')));
|
|
16
|
+
},
|
|
17
|
+
requestTransaction(_transaction) {
|
|
18
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestTransaction')));
|
|
19
|
+
},
|
|
20
|
+
requestAssets() {
|
|
21
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestAssets')));
|
|
22
|
+
},
|
|
23
|
+
requestPrivateNotes(_noteFilterType, _noteIds) {
|
|
24
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestPrivateNotes')));
|
|
25
|
+
},
|
|
26
|
+
signBytes(_message, _kind) {
|
|
27
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'signBytes')));
|
|
28
|
+
},
|
|
29
|
+
importPrivateNote(_note) {
|
|
30
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'importPrivateNote')));
|
|
31
|
+
},
|
|
32
|
+
requestConsumableNotes() {
|
|
33
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestConsumableNotes')));
|
|
34
|
+
},
|
|
35
|
+
waitForTransaction(_txId, _timeout) {
|
|
36
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'waitForTransaction')));
|
|
37
|
+
},
|
|
38
|
+
requestSend(_transaction) {
|
|
39
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestSend')));
|
|
40
|
+
},
|
|
41
|
+
requestConsume(_transaction) {
|
|
42
|
+
return Promise.reject(console.error(constructMissingProviderErrorMessage('get', 'requestConsume')));
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'wallets', {
|
|
46
|
+
get() {
|
|
47
|
+
console.error(constructMissingProviderErrorMessage('read', 'wallets'));
|
|
48
|
+
return EMPTY_ARRAY;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'wallet', {
|
|
52
|
+
get() {
|
|
53
|
+
console.error(constructMissingProviderErrorMessage('read', 'wallet'));
|
|
54
|
+
return null;
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'address', {
|
|
58
|
+
get() {
|
|
59
|
+
console.error(constructMissingProviderErrorMessage('read', 'address'));
|
|
60
|
+
return null;
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'publicKey', {
|
|
64
|
+
get() {
|
|
65
|
+
console.error(constructMissingProviderErrorMessage('read', 'publicKey'));
|
|
66
|
+
return null;
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
function constructMissingProviderErrorMessage(action, valueName) {
|
|
70
|
+
return ('You have tried to ' +
|
|
71
|
+
` ${action} "${valueName}"` +
|
|
72
|
+
' on a WalletContext without providing one.' +
|
|
73
|
+
' Make sure to render a WalletProvider' +
|
|
74
|
+
' as an ancestor of the component that uses ' +
|
|
75
|
+
'WalletContext');
|
|
76
|
+
}
|
|
77
|
+
export const WalletContext = createContext(DEFAULT_CONTEXT);
|
|
78
|
+
export function useWallet() {
|
|
79
|
+
return useContext(WalletContext);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=useWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../useWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,WAAW,EAAE,OAAO;QACpB,OAAO,EAAE,IAAI;KACd;CACF,CAAC,CAAC"}
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
**@miden-sdk/miden-wallet-adapter-react**
|
|
2
|
+
|
|
3
|
+
***
|
|
4
|
+
|
|
5
|
+
# @miden-sdk/miden-wallet-adapter-react
|
|
6
|
+
|
|
7
|
+
## Interfaces
|
|
8
|
+
|
|
9
|
+
- [MidenFiSignerProviderProps](interfaces/MidenFiSignerProviderProps.md)
|
|
10
|
+
- [Wallet](interfaces/Wallet.md)
|
|
11
|
+
- [WalletContextState](interfaces/WalletContextState.md)
|
|
12
|
+
- [WalletProviderProps](interfaces/WalletProviderProps.md)
|
|
13
|
+
|
|
14
|
+
## Variables
|
|
15
|
+
|
|
16
|
+
- [MidenFiSignerProvider](variables/MidenFiSignerProvider.md)
|
|
17
|
+
- [WalletContext](variables/WalletContext.md)
|
|
18
|
+
- [WalletProvider](variables/WalletProvider.md)
|
|
19
|
+
|
|
20
|
+
## Functions
|
|
21
|
+
|
|
22
|
+
- [useLocalStorage](functions/useLocalStorage.md)
|
|
23
|
+
- [useMidenFiWallet](functions/useMidenFiWallet.md)
|
|
24
|
+
- [useWallet](functions/useWallet.md)
|
|
25
|
+
|
|
26
|
+
## References
|
|
27
|
+
|
|
28
|
+
### MidenFiWalletContextState
|
|
29
|
+
|
|
30
|
+
Renames and re-exports [WalletContextState](interfaces/WalletContextState.md)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[**@miden-sdk/miden-wallet-adapter-react**](../README.md)
|
|
2
|
+
|
|
3
|
+
***
|
|
4
|
+
|
|
5
|
+
[@miden-sdk/miden-wallet-adapter-react](../README.md) / useLocalStorage
|
|
6
|
+
|
|
7
|
+
# Function: useLocalStorage()
|
|
8
|
+
|
|
9
|
+
> **useLocalStorage**\<`T`\>(`key`, `defaultState`): \[`T`, `Dispatch`\<`SetStateAction`\<`T`\>\>\]
|
|
10
|
+
|
|
11
|
+
## Type Parameters
|
|
12
|
+
|
|
13
|
+
### T
|
|
14
|
+
|
|
15
|
+
`T`
|
|
16
|
+
|
|
17
|
+
## Parameters
|
|
18
|
+
|
|
19
|
+
### key
|
|
20
|
+
|
|
21
|
+
`string`
|
|
22
|
+
|
|
23
|
+
### defaultState
|
|
24
|
+
|
|
25
|
+
`T`
|
|
26
|
+
|
|
27
|
+
## Returns
|
|
28
|
+
|
|
29
|
+
\[`T`, `Dispatch`\<`SetStateAction`\<`T`\>\>\]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
[**@miden-sdk/miden-wallet-adapter-react**](../README.md)
|
|
2
|
+
|
|
3
|
+
***
|
|
4
|
+
|
|
5
|
+
[@miden-sdk/miden-wallet-adapter-react](../README.md) / useMidenFiWallet
|
|
6
|
+
|
|
7
|
+
# Function: useMidenFiWallet()
|
|
8
|
+
|
|
9
|
+
> **useMidenFiWallet**(): [`WalletContextState`](../interfaces/WalletContextState.md)
|
|
10
|
+
|
|
11
|
+
Hook for MidenFi wallet operations beyond the unified useSigner interface.
|
|
12
|
+
Use this to access wallet-specific methods like requestTransaction, requestAssets, etc.
|
|
13
|
+
|
|
14
|
+
## Returns
|
|
15
|
+
|
|
16
|
+
[`WalletContextState`](../interfaces/WalletContextState.md)
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
const { connected, connect, disconnect, wallets, select } = useMidenFiWallet();
|
|
22
|
+
|
|
23
|
+
// Connect
|
|
24
|
+
await connect();
|
|
25
|
+
|
|
26
|
+
// Request a transaction
|
|
27
|
+
const txId = await requestTransaction({ ... });
|
|
28
|
+
```
|