@manahippo/aptos-wallet-adapter 0.4.12 → 0.4.13
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/README.md +4 -10
- package/dist/WalletProviders/WalletProvider.d.ts.map +1 -1
- package/dist/WalletProviders/WalletProvider.js +53 -53
- package/dist/WalletProviders/WalletProvider.js.map +1 -1
- package/dist/WalletProviders/useWallet.d.ts +2 -2
- package/dist/WalletProviders/useWallet.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/WalletProviders/WalletProvider.tsx +71 -67
- package/src/WalletProviders/useWallet.ts +2 -2
package/README.md
CHANGED
@@ -114,28 +114,22 @@ const { connected, account, network, ...rest } = useWallet();
|
|
114
114
|
*/
|
115
115
|
```
|
116
116
|
|
117
|
-
# Connect & Disconnect
|
117
|
+
# Connect & Disconnect (updated @ 18/10/2022)
|
118
118
|
|
119
119
|
```typescript
|
120
120
|
import { AptosWalletName, useWallet } from "@manahippo/aptos-wallet-adapter"
|
121
121
|
|
122
122
|
...
|
123
123
|
|
124
|
-
const { connect, disconnect, connected
|
124
|
+
const { connect, disconnect, connected } = useWallet();
|
125
125
|
|
126
|
-
|
127
|
-
useEffect(() => {
|
128
|
-
if (!autoConnect && currentWallet?.adapter) {
|
129
|
-
connect();
|
130
|
-
}
|
131
|
-
}, [autoConnect, currentWallet, connect]);
|
132
|
-
/** this is only required if you do not want auto connect wallet **/
|
126
|
+
/* No more manual connection required if you disable auto-connect mode while the previous select + connect will still work */
|
133
127
|
|
134
128
|
if (!connected) {
|
135
129
|
return (
|
136
130
|
<button
|
137
131
|
onClick={() => {
|
138
|
-
|
132
|
+
connect(walletName); // E.g. connecting to the Aptos official wallet
|
139
133
|
}}
|
140
134
|
>
|
141
135
|
Connect
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAElB,OAAO,EAIL,aAAa,EAGd,MAAM,+BAA+B,CAAC;AAGvC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAgBD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,
|
1
|
+
{"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAElB,OAAO,EAIL,aAAa,EAGd,MAAM,+BAA+B,CAAC;AAGvC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAgBD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAgUlD,CAAC"}
|
@@ -39,19 +39,6 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
39
39
|
})));
|
40
40
|
// When the wallets change, start to listen for changes to their `readyState`
|
41
41
|
(0, react_1.useEffect)(() => {
|
42
|
-
// When the adapters change, wrap them to conform to the `Wallet` interface
|
43
|
-
setWallets((currentWallets) => adapters.map((wAdapter, index) => {
|
44
|
-
const currentWallet = currentWallets[index];
|
45
|
-
// If the wallet hasn't changed, return the same instance
|
46
|
-
return currentWallet &&
|
47
|
-
currentWallet.adapter === wAdapter &&
|
48
|
-
currentWallet.readyState === wAdapter.readyState
|
49
|
-
? currentWallet
|
50
|
-
: {
|
51
|
-
adapter: wAdapter,
|
52
|
-
readyState: wAdapter.readyState
|
53
|
-
};
|
54
|
-
}));
|
55
42
|
function handleReadyStateChange(wReadyState) {
|
56
43
|
setWallets((prevWallets) => {
|
57
44
|
const index = prevWallets.findIndex(({ adapter: wAdapter }) => wAdapter === this);
|
@@ -70,9 +57,11 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
70
57
|
}, [adapters]);
|
71
58
|
// When the selected wallet changes, initialize the state
|
72
59
|
(0, react_1.useEffect)(() => {
|
60
|
+
if (!autoConnect)
|
61
|
+
return;
|
73
62
|
const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === name);
|
74
63
|
if (selectedWallet) {
|
75
|
-
console.log('selectedWallets', selectedWallet);
|
64
|
+
// console.log('selectedWallets in autoConnect', selectedWallet);
|
76
65
|
setState({
|
77
66
|
wallet: selectedWallet,
|
78
67
|
adapter: selectedWallet.adapter,
|
@@ -84,7 +73,7 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
84
73
|
else {
|
85
74
|
setState(initialState);
|
86
75
|
}
|
87
|
-
}, [name, wallets]);
|
76
|
+
}, [name, wallets, autoConnect]);
|
88
77
|
// If the window is closing or reloading, ignore disconnect and error events from the adapter
|
89
78
|
(0, react_1.useEffect)(() => {
|
90
79
|
function listener() {
|
@@ -108,7 +97,7 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
108
97
|
const handleNetworkChange = (0, react_1.useCallback)(() => {
|
109
98
|
if (!adapter)
|
110
99
|
return;
|
111
|
-
console.log('adapter: handleNetworkChange', adapter.network);
|
100
|
+
// console.log('adapter: handleNetworkChange', adapter.network);
|
112
101
|
setState((state) => {
|
113
102
|
return Object.assign(Object.assign({}, state), { network: adapter.network });
|
114
103
|
});
|
@@ -117,7 +106,7 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
117
106
|
const handleAccountChange = (0, react_1.useCallback)(() => {
|
118
107
|
if (!adapter)
|
119
108
|
return;
|
120
|
-
console.log('adapter: handleAccountChange', adapter.publicAccount);
|
109
|
+
// console.log('adapter: handleAccountChange', adapter.publicAccount);
|
121
110
|
setState((state) => {
|
122
111
|
return Object.assign(Object.assign({}, state), { account: adapter.publicAccount });
|
123
112
|
});
|
@@ -125,8 +114,10 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
125
114
|
// Handle the adapter's disconnect event
|
126
115
|
const handleDisconnect = (0, react_1.useCallback)(() => {
|
127
116
|
// Clear the selected wallet unless the window is unloading
|
128
|
-
if (!isUnloading.current)
|
117
|
+
if (!isUnloading.current) {
|
129
118
|
setName(null);
|
119
|
+
setState(initialState);
|
120
|
+
}
|
130
121
|
}, [isUnloading, setName]);
|
131
122
|
// Handle the adapter's error event, and local errors
|
132
123
|
const handleError = (0, react_1.useCallback)((error) => {
|
@@ -172,51 +163,49 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
172
163
|
adapter === null || adapter === void 0 ? void 0 : adapter.disconnect();
|
173
164
|
};
|
174
165
|
}, [adapter]);
|
175
|
-
// If autoConnect is enabled, try to connect when the adapter changes and is ready
|
176
|
-
(0, react_1.useEffect)(() => {
|
177
|
-
if (isConnecting.current ||
|
178
|
-
connected ||
|
179
|
-
!autoConnect ||
|
180
|
-
!adapter ||
|
181
|
-
!(readyState === BaseAdapter_1.WalletReadyState.Installed || readyState === BaseAdapter_1.WalletReadyState.Loadable))
|
182
|
-
return;
|
183
|
-
(function () {
|
184
|
-
return __awaiter(this, void 0, void 0, function* () {
|
185
|
-
isConnecting.current = true;
|
186
|
-
setConnecting(true);
|
187
|
-
try {
|
188
|
-
yield adapter.connect();
|
189
|
-
}
|
190
|
-
catch (error) {
|
191
|
-
// Clear the selected wallet
|
192
|
-
setName(null);
|
193
|
-
// Don't throw error, but handleError will still be called
|
194
|
-
}
|
195
|
-
finally {
|
196
|
-
setConnecting(false);
|
197
|
-
isConnecting.current = false;
|
198
|
-
}
|
199
|
-
});
|
200
|
-
})();
|
201
|
-
}, [isConnecting, connected, autoConnect, adapter, readyState, setName]);
|
202
166
|
// Connect the adapter to the wallet
|
203
|
-
const connect = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
|
204
|
-
if (isConnecting.current || isDisconnecting.current || connected)
|
167
|
+
const connect = (0, react_1.useCallback)((walletName) => __awaiter(void 0, void 0, void 0, function* () {
|
168
|
+
if (isConnecting.current || isDisconnecting.current || connected || !walletName)
|
205
169
|
return;
|
206
|
-
|
170
|
+
let walletToConnect = initialState;
|
171
|
+
if (!adapter || walletName !== (adapter === null || adapter === void 0 ? void 0 : adapter.name)) {
|
172
|
+
const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === walletName);
|
173
|
+
if (selectedWallet) {
|
174
|
+
walletToConnect = {
|
175
|
+
wallet: selectedWallet,
|
176
|
+
adapter: selectedWallet.adapter,
|
177
|
+
connected: selectedWallet.adapter.connected,
|
178
|
+
account: selectedWallet.adapter.publicAccount,
|
179
|
+
network: selectedWallet.adapter.network
|
180
|
+
};
|
181
|
+
}
|
182
|
+
setState(walletToConnect);
|
183
|
+
setName(walletName);
|
184
|
+
}
|
185
|
+
else {
|
186
|
+
walletToConnect = {
|
187
|
+
wallet,
|
188
|
+
adapter,
|
189
|
+
connected,
|
190
|
+
account,
|
191
|
+
network
|
192
|
+
};
|
193
|
+
}
|
194
|
+
if (!walletToConnect.adapter)
|
207
195
|
throw handleError(new errors_1.WalletNotSelectedError());
|
208
|
-
if (!(readyState === BaseAdapter_1.WalletReadyState.Installed ||
|
196
|
+
if (!(walletToConnect.adapter.readyState === BaseAdapter_1.WalletReadyState.Installed ||
|
197
|
+
walletToConnect.adapter.readyState === BaseAdapter_1.WalletReadyState.Loadable)) {
|
209
198
|
// Clear the selected wallet
|
210
199
|
setName(null);
|
211
200
|
if (typeof window !== 'undefined') {
|
212
|
-
window.open(adapter.url, '_blank');
|
201
|
+
window.open(walletToConnect.adapter.url, '_blank');
|
213
202
|
}
|
214
203
|
throw handleError(new errors_1.WalletNotReadyError('Wallet Not Ready'));
|
215
204
|
}
|
216
205
|
isConnecting.current = true;
|
217
206
|
setConnecting(true);
|
218
207
|
try {
|
219
|
-
yield adapter.connect();
|
208
|
+
yield walletToConnect.adapter.connect();
|
220
209
|
}
|
221
210
|
catch (error) {
|
222
211
|
// Clear the selected wallet
|
@@ -228,7 +217,18 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
228
217
|
setConnecting(false);
|
229
218
|
isConnecting.current = false;
|
230
219
|
}
|
231
|
-
}), [
|
220
|
+
}), [connected, adapter, handleError, wallets, setName, wallet, account, network]);
|
221
|
+
// If autoConnect is enabled, try to connect when the adapter changes and is ready
|
222
|
+
(0, react_1.useEffect)(() => {
|
223
|
+
if (isConnecting.current ||
|
224
|
+
connected ||
|
225
|
+
!autoConnect ||
|
226
|
+
!name ||
|
227
|
+
!adapter ||
|
228
|
+
!(readyState === BaseAdapter_1.WalletReadyState.Installed || readyState === BaseAdapter_1.WalletReadyState.Loadable))
|
229
|
+
return;
|
230
|
+
connect(name);
|
231
|
+
}, [isConnecting, connected, autoConnect, name, connect, adapter, readyState]);
|
232
232
|
// Disconnect the adapter from the wallet
|
233
233
|
const disconnect = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
|
234
234
|
if (isDisconnecting.current)
|
@@ -282,7 +282,7 @@ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onEr
|
|
282
282
|
connecting,
|
283
283
|
disconnecting,
|
284
284
|
autoConnect,
|
285
|
-
select:
|
285
|
+
select: connect,
|
286
286
|
connect,
|
287
287
|
disconnect,
|
288
288
|
signAndSubmitTransaction,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iCAAgF;AAEhF,qCAKkB;AAClB,8DAA2D;AAC3D,+DAOuC;AACvC,2CAAoD;AAUpD,MAAM,YAAY,GAMd;IACF,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAEK,MAAM,cAAc,GAA4B,CAAC,EACtD,QAAQ,EACR,OAAO,EAAE,QAAQ,EACjB,WAAW,GAAG,KAAK,EACnB,OAAO,EACP,eAAe,GAAG,YAAY,EAC/B,EAAE,EAAE;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,iCAAe,EAAoB,eAAe,EAAE,IAAI,CAAC,CAAC;IAClF,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,YAAY,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,KAAI,8BAAgB,CAAC,WAAW,CAAC;IACvE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAElC,qDAAqD;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC,CACJ,CAAC;IAEF,6EAA6E;IAC7E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,
|
1
|
+
{"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"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"}
|
@@ -14,8 +14,8 @@ export interface WalletContextState {
|
|
14
14
|
connected: boolean;
|
15
15
|
disconnecting: boolean;
|
16
16
|
network: NetworkInfo;
|
17
|
-
select(walletName
|
18
|
-
connect(): Promise<void>;
|
17
|
+
select(walletName?: WalletName): Promise<void>;
|
18
|
+
connect(walletName?: WalletName): Promise<void>;
|
19
19
|
disconnect(): Promise<void>;
|
20
20
|
signAndSubmitTransaction(transaction: Types.TransactionPayload, options?: any): Promise<{
|
21
21
|
hash: Types.HexEncodedBytes;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/useWallet.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/useWallet.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,wBAAwB,CACtB,WAAW,EAAE,KAAK,CAAC,kBAAkB,EACrC,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAA;KAAE,CAAC,CAAC;IAC5C,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3F,WAAW,CACT,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,UAAU,GAChD,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,CAAC;CAC1C;AASD,eAAO,MAAM,aAAa,6CAEzB,CAAC;AAEF,wBAAgB,SAAS,IAAI,kBAAkB,CAE9C"}
|
package/package.json
CHANGED
@@ -65,22 +65,6 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
65
65
|
|
66
66
|
// When the wallets change, start to listen for changes to their `readyState`
|
67
67
|
useEffect(() => {
|
68
|
-
// When the adapters change, wrap them to conform to the `Wallet` interface
|
69
|
-
setWallets((currentWallets) =>
|
70
|
-
adapters.map((wAdapter, index) => {
|
71
|
-
const currentWallet = currentWallets[index];
|
72
|
-
// If the wallet hasn't changed, return the same instance
|
73
|
-
return currentWallet &&
|
74
|
-
currentWallet.adapter === wAdapter &&
|
75
|
-
currentWallet.readyState === wAdapter.readyState
|
76
|
-
? currentWallet
|
77
|
-
: {
|
78
|
-
adapter: wAdapter,
|
79
|
-
readyState: wAdapter.readyState
|
80
|
-
};
|
81
|
-
})
|
82
|
-
);
|
83
|
-
|
84
68
|
function handleReadyStateChange(this: any, wReadyState: WalletReadyState) {
|
85
69
|
setWallets((prevWallets) => {
|
86
70
|
const index = prevWallets.findIndex(({ adapter: wAdapter }) => wAdapter === this);
|
@@ -106,9 +90,10 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
106
90
|
|
107
91
|
// When the selected wallet changes, initialize the state
|
108
92
|
useEffect(() => {
|
93
|
+
if (!autoConnect) return;
|
109
94
|
const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === name);
|
110
95
|
if (selectedWallet) {
|
111
|
-
console.log('selectedWallets', selectedWallet);
|
96
|
+
// console.log('selectedWallets in autoConnect', selectedWallet);
|
112
97
|
setState({
|
113
98
|
wallet: selectedWallet,
|
114
99
|
adapter: selectedWallet.adapter,
|
@@ -119,7 +104,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
119
104
|
} else {
|
120
105
|
setState(initialState);
|
121
106
|
}
|
122
|
-
}, [name, wallets]);
|
107
|
+
}, [name, wallets, autoConnect]);
|
123
108
|
|
124
109
|
// If the window is closing or reloading, ignore disconnect and error events from the adapter
|
125
110
|
useEffect(() => {
|
@@ -150,7 +135,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
150
135
|
// Handle the adapter's network event
|
151
136
|
const handleNetworkChange = useCallback(() => {
|
152
137
|
if (!adapter) return;
|
153
|
-
console.log('adapter: handleNetworkChange', adapter.network);
|
138
|
+
// console.log('adapter: handleNetworkChange', adapter.network);
|
154
139
|
setState((state) => {
|
155
140
|
return {
|
156
141
|
...state,
|
@@ -162,7 +147,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
162
147
|
// Handle the adapter's account event
|
163
148
|
const handleAccountChange = useCallback(() => {
|
164
149
|
if (!adapter) return;
|
165
|
-
console.log('adapter: handleAccountChange', adapter.publicAccount);
|
150
|
+
// console.log('adapter: handleAccountChange', adapter.publicAccount);
|
166
151
|
setState((state) => {
|
167
152
|
return {
|
168
153
|
...state,
|
@@ -174,7 +159,10 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
174
159
|
// Handle the adapter's disconnect event
|
175
160
|
const handleDisconnect = useCallback(() => {
|
176
161
|
// Clear the selected wallet unless the window is unloading
|
177
|
-
if (!isUnloading.current)
|
162
|
+
if (!isUnloading.current) {
|
163
|
+
setName(null);
|
164
|
+
setState(initialState);
|
165
|
+
}
|
178
166
|
}, [isUnloading, setName]);
|
179
167
|
|
180
168
|
// Handle the adapter's error event, and local errors
|
@@ -227,63 +215,79 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
227
215
|
};
|
228
216
|
}, [adapter]);
|
229
217
|
|
230
|
-
//
|
231
|
-
|
232
|
-
|
233
|
-
isConnecting.current ||
|
234
|
-
|
235
|
-
!
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
218
|
+
// Connect the adapter to the wallet
|
219
|
+
const connect = useCallback(
|
220
|
+
async (walletName?) => {
|
221
|
+
if (isConnecting.current || isDisconnecting.current || connected || !walletName) return;
|
222
|
+
let walletToConnect = initialState;
|
223
|
+
if (!adapter || walletName !== adapter?.name) {
|
224
|
+
const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === walletName);
|
225
|
+
if (selectedWallet) {
|
226
|
+
walletToConnect = {
|
227
|
+
wallet: selectedWallet,
|
228
|
+
adapter: selectedWallet.adapter,
|
229
|
+
connected: selectedWallet.adapter.connected,
|
230
|
+
account: selectedWallet.adapter.publicAccount,
|
231
|
+
network: selectedWallet.adapter.network
|
232
|
+
};
|
233
|
+
}
|
234
|
+
setState(walletToConnect);
|
235
|
+
setName(walletName);
|
236
|
+
} else {
|
237
|
+
walletToConnect = {
|
238
|
+
wallet,
|
239
|
+
adapter,
|
240
|
+
connected,
|
241
|
+
account,
|
242
|
+
network
|
243
|
+
};
|
244
|
+
}
|
245
|
+
if (!walletToConnect.adapter) throw handleError(new WalletNotSelectedError());
|
246
|
+
if (
|
247
|
+
!(
|
248
|
+
walletToConnect.adapter.readyState === WalletReadyState.Installed ||
|
249
|
+
walletToConnect.adapter.readyState === WalletReadyState.Loadable
|
250
|
+
)
|
251
|
+
) {
|
252
|
+
// Clear the selected wallet
|
253
|
+
setName(null);
|
240
254
|
|
241
|
-
|
255
|
+
if (typeof window !== 'undefined') {
|
256
|
+
window.open(walletToConnect.adapter.url, '_blank');
|
257
|
+
}
|
258
|
+
|
259
|
+
throw handleError(new WalletNotReadyError('Wallet Not Ready'));
|
260
|
+
}
|
242
261
|
isConnecting.current = true;
|
243
262
|
setConnecting(true);
|
244
263
|
try {
|
245
|
-
await adapter.connect();
|
264
|
+
await walletToConnect.adapter.connect();
|
246
265
|
} catch (error: any) {
|
247
266
|
// Clear the selected wallet
|
248
267
|
setName(null);
|
249
|
-
//
|
268
|
+
// Rethrow the error, and handleError will also be called
|
269
|
+
throw error;
|
250
270
|
} finally {
|
251
271
|
setConnecting(false);
|
252
272
|
isConnecting.current = false;
|
253
273
|
}
|
254
|
-
}
|
255
|
-
|
256
|
-
|
257
|
-
// Connect the adapter to the wallet
|
258
|
-
const connect = useCallback(async () => {
|
259
|
-
if (isConnecting.current || isDisconnecting.current || connected) return;
|
260
|
-
|
261
|
-
if (!adapter) throw handleError(new WalletNotSelectedError());
|
262
|
-
|
263
|
-
if (!(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable)) {
|
264
|
-
// Clear the selected wallet
|
265
|
-
setName(null);
|
266
|
-
|
267
|
-
if (typeof window !== 'undefined') {
|
268
|
-
window.open(adapter.url, '_blank');
|
269
|
-
}
|
274
|
+
},
|
275
|
+
[connected, adapter, handleError, wallets, setName, wallet, account, network]
|
276
|
+
);
|
270
277
|
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
isConnecting.current = false;
|
285
|
-
}
|
286
|
-
}, [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName]);
|
278
|
+
// If autoConnect is enabled, try to connect when the adapter changes and is ready
|
279
|
+
useEffect(() => {
|
280
|
+
if (
|
281
|
+
isConnecting.current ||
|
282
|
+
connected ||
|
283
|
+
!autoConnect ||
|
284
|
+
!name ||
|
285
|
+
!adapter ||
|
286
|
+
!(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable)
|
287
|
+
)
|
288
|
+
return;
|
289
|
+
connect(name);
|
290
|
+
}, [isConnecting, connected, autoConnect, name, connect, adapter, readyState]);
|
287
291
|
|
288
292
|
// Disconnect the adapter from the wallet
|
289
293
|
const disconnect = useCallback(async () => {
|
@@ -344,7 +348,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
|
|
344
348
|
connecting,
|
345
349
|
disconnecting,
|
346
350
|
autoConnect,
|
347
|
-
select:
|
351
|
+
select: connect,
|
348
352
|
connect,
|
349
353
|
disconnect,
|
350
354
|
signAndSubmitTransaction,
|
@@ -24,8 +24,8 @@ export interface WalletContextState {
|
|
24
24
|
connected: boolean;
|
25
25
|
disconnecting: boolean;
|
26
26
|
network: NetworkInfo;
|
27
|
-
select(walletName
|
28
|
-
connect(): Promise<void>;
|
27
|
+
select(walletName?: WalletName): Promise<void>;
|
28
|
+
connect(walletName?: WalletName): Promise<void>;
|
29
29
|
disconnect(): Promise<void>;
|
30
30
|
signAndSubmitTransaction(
|
31
31
|
transaction: Types.TransactionPayload,
|