@manahippo/aptos-wallet-adapter 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,6 +4,7 @@ import { WalletAdapter } from '../WalletAdapters/BaseAdapter';
4
4
  export interface WalletProviderProps {
5
5
  children: ReactNode;
6
6
  wallets: WalletAdapter[];
7
+ autoConnect?: boolean;
7
8
  onError?: (error: WalletError) => void;
8
9
  localStorageKey?: string;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,aAAa,EAGd,MAAM,+BAA+B,CAAC;AAGvC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAcD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAuOlD,CAAC"}
1
+ {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,WAAW,EAIZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,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;AAcD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAgRlD,CAAC"}
@@ -22,9 +22,8 @@ const initialState = {
22
22
  account: null,
23
23
  connected: false
24
24
  };
25
- const WalletProvider = ({ children, wallets: adapters, onError, localStorageKey = 'walletName' }) => {
26
- const { useLocalStorageState } = (0, useLocalStorage_1.useLocalStorage)();
27
- const [, setName] = useLocalStorageState(localStorageKey, null);
25
+ const WalletProvider = ({ children, wallets: adapters, autoConnect = false, onError, localStorageKey = 'walletName' }) => {
26
+ const [name, setName] = (0, useLocalStorage_1.useLocalStorage)(localStorageKey, null);
28
27
  const [{ wallet, adapter, account, connected }, setState] = (0, react_1.useState)(initialState);
29
28
  const readyState = (adapter === null || adapter === void 0 ? void 0 : adapter.readyState) || BaseAdapter_1.WalletReadyState.Unsupported;
30
29
  const [connecting, setConnecting] = (0, react_1.useState)(false);
@@ -39,41 +38,58 @@ const WalletProvider = ({ children, wallets: adapters, onError, localStorageKey
39
38
  })));
40
39
  // When the wallets change, start to listen for changes to their `readyState`
41
40
  (0, react_1.useEffect)(() => {
42
- function handleReadyStateChange(isReadyState) {
41
+ // When the adapters change, wrap them to conform to the `Wallet` interface
42
+ setWallets((currentWallets) => adapters.map((wAdapter, index) => {
43
+ const currentWallet = currentWallets[index];
44
+ // If the wallet hasn't changed, return the same instance
45
+ return currentWallet &&
46
+ currentWallet.adapter === wAdapter &&
47
+ currentWallet.readyState === wAdapter.readyState
48
+ ? currentWallet
49
+ : {
50
+ adapter: wAdapter,
51
+ readyState: wAdapter.readyState
52
+ };
53
+ }));
54
+ function handleReadyStateChange(wReadyState) {
43
55
  setWallets((prevWallets) => {
44
- const walletIndex = prevWallets.findIndex((wAdapter) => wAdapter.adapter.name === this.name);
45
- if (walletIndex === -1)
56
+ const index = prevWallets.findIndex(({ adapter: wAdapter }) => wAdapter === this);
57
+ if (index === -1)
46
58
  return prevWallets;
59
+ const { adapter: wAdapter } = prevWallets[index];
47
60
  return [
48
- ...prevWallets.slice(0, walletIndex),
49
- Object.assign(Object.assign({}, prevWallets[walletIndex]), { isReadyState }),
50
- ...prevWallets.slice(walletIndex + 1)
61
+ ...prevWallets.slice(0, index),
62
+ { adapter: wAdapter, readyState: wReadyState },
63
+ ...prevWallets.slice(index + 1)
51
64
  ];
52
65
  });
53
66
  }
54
- for (const wAdapter of adapters) {
55
- wAdapter.on('readyStateChange', handleReadyStateChange, wAdapter);
56
- }
57
- return () => {
58
- for (const wAdapter of adapters) {
59
- wAdapter.off('readyStateChange', handleReadyStateChange, wAdapter);
60
- }
61
- };
67
+ adapters.forEach((wAdapter) => wAdapter.on('readyStateChange', handleReadyStateChange, wAdapter));
68
+ return () => adapters.forEach((wAdapter) => wAdapter.off('readyStateChange', handleReadyStateChange, wAdapter));
62
69
  }, [adapters]);
63
70
  // When the selected wallet changes, initialize the state
64
- // useEffect(() => {
65
- // const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === name);
66
- // if (selectedWallet) {
67
- // setState({
68
- // wallet: selectedWallet,
69
- // adapter: selectedWallet.adapter,
70
- // connected: selectedWallet.adapter.connected,
71
- // publicKey: selectedWallet.adapter.publicKey
72
- // });
73
- // } else {
74
- // setState(initialState);
75
- // }
76
- // }, [name, wallets]);
71
+ (0, react_1.useEffect)(() => {
72
+ const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === name);
73
+ if (selectedWallet) {
74
+ setState({
75
+ wallet: selectedWallet,
76
+ adapter: selectedWallet.adapter,
77
+ connected: selectedWallet.adapter.connected,
78
+ account: selectedWallet.adapter.publicAccount
79
+ });
80
+ }
81
+ else {
82
+ setState(initialState);
83
+ }
84
+ }, [name, wallets]);
85
+ // If the window is closing or reloading, ignore disconnect and error events from the adapter
86
+ (0, react_1.useEffect)(() => {
87
+ function listener() {
88
+ isUnloading.current = true;
89
+ }
90
+ window.addEventListener('beforeunload', listener);
91
+ return () => window.removeEventListener('beforeunload', listener);
92
+ }, [isUnloading]);
77
93
  // Handle the adapter's connect event
78
94
  const handleConnect = (0, react_1.useCallback)(() => {
79
95
  if (!adapter)
@@ -85,8 +101,7 @@ const WalletProvider = ({ children, wallets: adapters, onError, localStorageKey
85
101
  // Clear the selected wallet unless the window is unloading
86
102
  if (!isUnloading.current)
87
103
  setName(null);
88
- setState(initialState);
89
- }, [isUnloading]);
104
+ }, [isUnloading, setName]);
90
105
  // Handle the adapter's error event, and local errors
91
106
  const handleError = (0, react_1.useCallback)((error) => {
92
107
  // Call onError unless the window is unloading
@@ -113,51 +128,71 @@ const WalletProvider = ({ children, wallets: adapters, onError, localStorageKey
113
128
  adapter === null || adapter === void 0 ? void 0 : adapter.disconnect();
114
129
  };
115
130
  }, [adapter]);
131
+ // If autoConnect is enabled, try to connect when the adapter changes and is ready
132
+ (0, react_1.useEffect)(() => {
133
+ if (isConnecting.current ||
134
+ connected ||
135
+ !autoConnect ||
136
+ !adapter ||
137
+ !(readyState === BaseAdapter_1.WalletReadyState.Installed || readyState === BaseAdapter_1.WalletReadyState.Loadable))
138
+ return;
139
+ (function () {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ isConnecting.current = true;
142
+ setConnecting(true);
143
+ try {
144
+ yield adapter.connect();
145
+ }
146
+ catch (error) {
147
+ // Clear the selected wallet
148
+ setName(null);
149
+ // Don't throw error, but handleError will still be called
150
+ }
151
+ finally {
152
+ setConnecting(false);
153
+ isConnecting.current = false;
154
+ }
155
+ });
156
+ })();
157
+ }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);
116
158
  // Connect the adapter to the wallet
117
159
  const connect = (0, react_1.useCallback)((walletName) => __awaiter(void 0, void 0, void 0, function* () {
118
- if (isConnecting.current || connecting || disconnecting || connected)
160
+ if (isConnecting.current || isDisconnecting.current || connected)
119
161
  return;
120
- const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === walletName);
121
- let walletToConnect = initialState;
122
- if (selectedWallet) {
123
- walletToConnect = {
124
- wallet: selectedWallet,
125
- adapter: selectedWallet.adapter,
126
- connected: selectedWallet.adapter.connected,
127
- account: selectedWallet.adapter.publicAccount
128
- };
162
+ if (!name) {
163
+ setName(walletName);
129
164
  }
130
- setState(walletToConnect);
131
- if (!walletToConnect.adapter)
132
- throw handleError(new errors_1.WalletNotSelectedError());
133
- if (!(walletToConnect.adapter.readyState === BaseAdapter_1.WalletReadyState.Installed ||
134
- walletToConnect.adapter.readyState === BaseAdapter_1.WalletReadyState.Loadable)) {
135
- // Clear the selected wallet
136
- setName(null);
137
- if (typeof window !== 'undefined' && walletToConnect.adapter.url) {
138
- window.open(walletToConnect.adapter.url, '_blank');
165
+ else {
166
+ if (!adapter)
167
+ throw handleError(new errors_1.WalletNotSelectedError());
168
+ if (!(readyState === BaseAdapter_1.WalletReadyState.Installed || readyState === BaseAdapter_1.WalletReadyState.Loadable)) {
169
+ // Clear the selected wallet
170
+ setName(null);
171
+ if (typeof window !== 'undefined') {
172
+ window.open(adapter.url, '_blank');
173
+ }
174
+ throw handleError(new errors_1.WalletNotReadyError());
175
+ }
176
+ isConnecting.current = true;
177
+ setConnecting(true);
178
+ try {
179
+ yield adapter.connect();
180
+ }
181
+ catch (error) {
182
+ // Clear the selected wallet
183
+ setName(null);
184
+ // Rethrow the error, and handleError will also be called
185
+ throw error;
186
+ }
187
+ finally {
188
+ setConnecting(false);
189
+ isConnecting.current = false;
139
190
  }
140
- throw handleError(new errors_1.WalletNotReadyError());
141
- }
142
- isConnecting.current = true;
143
- setConnecting(true);
144
- try {
145
- yield walletToConnect.adapter.connect();
146
- }
147
- catch (error) {
148
- // Clear the selected wallet
149
- setName(null);
150
- // Rethrow the error, and handleError will also be called
151
- throw error;
152
- }
153
- finally {
154
- setConnecting(false);
155
- isConnecting.current = false;
156
191
  }
157
- }), [isConnecting, connecting, disconnecting, connected, readyState, handleError, wallets]);
192
+ }), [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName, name]);
158
193
  // Disconnect the adapter from the wallet
159
194
  const disconnect = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
160
- if (isDisconnecting.current || disconnecting)
195
+ if (isDisconnecting.current)
161
196
  return;
162
197
  if (!adapter)
163
198
  return setName(null);
@@ -176,7 +211,7 @@ const WalletProvider = ({ children, wallets: adapters, onError, localStorageKey
176
211
  setDisconnecting(false);
177
212
  isDisconnecting.current = false;
178
213
  }
179
- }), [isDisconnecting, disconnecting, adapter]);
214
+ }), [isDisconnecting, setName, adapter]);
180
215
  // Send a transaction using the provided connection
181
216
  const signAndSubmitTransaction = (0, react_1.useCallback)((transaction, option) => __awaiter(void 0, void 0, void 0, function* () {
182
217
  if (!adapter)
@@ -207,6 +242,7 @@ const WalletProvider = ({ children, wallets: adapters, onError, localStorageKey
207
242
  connected,
208
243
  connecting,
209
244
  disconnecting,
245
+ autoConnect,
210
246
  select: setName,
211
247
  connect,
212
248
  disconnect,
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProviders/WalletProvider.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export interface Wallet {
6
6
  readyState: WalletReadyState;
7
7
  }
8
8
  export interface WalletContextState {
9
+ autoConnect: boolean;
9
10
  wallets: Wallet[];
10
11
  wallet: Wallet | null;
11
12
  account: AccountKeys | null;
@@ -1 +1 @@
1
- {"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/useWallet.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EACL,WAAW,EACX,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;IAEjC,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,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,wBAAwB,CACtB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IACtC,eAAe,CAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C;AASD,eAAO,MAAM,aAAa,6CAEzB,CAAC;AAEF,wBAAgB,SAAS,IAAI,kBAAkB,CAE9C"}
1
+ {"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/WalletProviders/useWallet.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EACL,WAAW,EACX,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,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,wBAAwB,CACtB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IACtC,eAAe,CAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C;AASD,eAAO,MAAM,aAAa,6CAEzB,CAAC;AAEF,wBAAgB,SAAS,IAAI,kBAAkB,CAE9C"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useWallet = exports.WalletContext = void 0;
4
4
  const react_1 = require("react");
5
5
  const DEFAULT_CONTEXT = {
6
- // autoConnect: false,
6
+ autoConnect: false,
7
7
  connecting: false,
8
8
  connected: false,
9
9
  disconnecting: false
@@ -1 +1 @@
1
- {"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../src/WalletProviders/useWallet.ts"],"names":[],"mappings":";;;AACA,iCAAkD;AAgClD,MAAM,eAAe,GAAG;IACtB,sBAAsB;IACtB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;CACC,CAAC;AAEX,QAAA,aAAa,GAAG,IAAA,qBAAa,EACxC,eAAqC,CACtC,CAAC;AAEF,SAAgB,SAAS;IACvB,OAAO,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;AACnC,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../src/WalletProviders/useWallet.ts"],"names":[],"mappings":";;;AACA,iCAAkD;AAgClD,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;CACC,CAAC;AAEX,QAAA,aAAa,GAAG,IAAA,qBAAa,EACxC,eAAqC,CACtC,CAAC;AAEF,SAAgB,SAAS;IACvB,OAAO,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;AACnC,CAAC;AAFD,8BAEC"}
@@ -1,4 +1,3 @@
1
- export declare const useLocalStorage: () => {
2
- useLocalStorageState: <T>(key: string, defaultState: T, session?: boolean) => [T, (T: any) => void];
3
- };
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ export declare function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>];
4
3
  //# sourceMappingURL=useLocalStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe;mCAGnB,MAAM,6BAED,OAAO,aACR,GAAG,KAAK,IAAI;CAmCxB,CAAC"}
1
+ {"version":3,"file":"useLocalStorage.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGtD,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAmCjG"}
@@ -2,40 +2,42 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useLocalStorage = void 0;
4
4
  const react_1 = require("react");
5
- const useSSR_1 = require("./useSSR");
6
- const useLocalStorage = () => {
7
- const { isClient } = (0, useSSR_1.useSSR)();
8
- const useLocalStorageState = (key, defaultState, session) => {
9
- let storage;
10
- if (isClient) {
11
- storage = session ? sessionStorage : localStorage;
5
+ function useLocalStorage(key, defaultState) {
6
+ const state = (0, react_1.useState)(() => {
7
+ try {
8
+ const value = localStorage.getItem(key);
9
+ if (value)
10
+ return JSON.parse(value);
12
11
  }
13
- const [state, setState] = (0, react_1.useState)(() => {
14
- try {
15
- let storedState = storage === null || storage === void 0 ? void 0 : storage.getItem(key);
16
- if (storedState) {
17
- return JSON.parse(storedState || '');
18
- }
12
+ catch (error) {
13
+ if (typeof window !== 'undefined') {
14
+ console.error(error);
19
15
  }
20
- catch (error) {
21
- if (typeof window !== 'undefined') {
22
- console.error(error);
23
- }
24
- }
25
- return defaultState;
26
- });
27
- const setLocalStorageState = (0, react_1.useCallback)((newState) => {
28
- setState(newState);
29
- if (newState === null) {
30
- storage === null || storage === void 0 ? void 0 : storage.removeItem(key);
16
+ }
17
+ return defaultState;
18
+ });
19
+ const value = state[0];
20
+ const isFirstRender = (0, react_1.useRef)(true);
21
+ (0, react_1.useEffect)(() => {
22
+ if (isFirstRender.current) {
23
+ isFirstRender.current = false;
24
+ return;
25
+ }
26
+ try {
27
+ if (value === null) {
28
+ localStorage.removeItem(key);
31
29
  }
32
30
  else {
33
- storage === null || storage === void 0 ? void 0 : storage.setItem(key, JSON.stringify(newState));
31
+ localStorage.setItem(key, JSON.stringify(value));
34
32
  }
35
- }, [key, storage]);
36
- return [state, setLocalStorageState];
37
- };
38
- return { useLocalStorageState };
39
- };
33
+ }
34
+ catch (error) {
35
+ if (typeof window !== 'undefined') {
36
+ console.error(error);
37
+ }
38
+ }
39
+ }, [value, key]);
40
+ return state;
41
+ }
40
42
  exports.useLocalStorage = useLocalStorage;
41
43
  //# sourceMappingURL=useLocalStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":";;;AAAA,iCAA8C;AAC9C,qCAAkC;AAE3B,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,eAAM,GAAE,CAAC;IAC9B,MAAM,oBAAoB,GAAG,CAC3B,GAAW,EACX,YAAe,EACf,OAAiB,EACM,EAAE;QACzB,IAAI,OAA4B,CAAC;QACjC,IAAI,QAAQ,EAAE;YACZ,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;SACnD;QACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE;YACtC,IAAI;gBACF,IAAI,WAAW,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,WAAW,EAAE;oBACf,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;oBACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACtB;aACF;YACD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,IAAA,mBAAW,EACtC,CAAC,QAAa,EAAE,EAAE;YAChB,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACrB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC,GAAG,CAAC,CAAC;aAC1B;iBAAM;gBACL,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;aACjD;QACH,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,CAAC,CACf,CAAC;QAEF,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAClC,CAAC,CAAC;AAzCW,QAAA,eAAe,mBAyC1B"}
1
+ {"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":";;;AACA,iCAAoD;AAEpD,SAAgB,eAAe,CAAI,GAAW,EAAE,YAAe;IAC7D,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAI,GAAG,EAAE;QAC7B,IAAI;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;SAC1C;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACtB;SACF;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACnC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,EAAE;YACzB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,OAAO;SACR;QACD,IAAI;YACF,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC9B;iBAAM;gBACL,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aAClD;SACF;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACtB;SACF;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACf,CAAC;AAnCD,0CAmCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manahippo/aptos-wallet-adapter",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
6
6
  "files": [
@@ -18,6 +18,7 @@ import { Wallet, WalletContext } from './useWallet';
18
18
  export interface WalletProviderProps {
19
19
  children: ReactNode;
20
20
  wallets: WalletAdapter[];
21
+ autoConnect?: boolean;
21
22
  onError?: (error: WalletError) => void;
22
23
  localStorageKey?: string;
23
24
  }
@@ -37,11 +38,11 @@ const initialState: {
37
38
  export const WalletProvider: FC<WalletProviderProps> = ({
38
39
  children,
39
40
  wallets: adapters,
41
+ autoConnect = false,
40
42
  onError,
41
43
  localStorageKey = 'walletName'
42
44
  }) => {
43
- const { useLocalStorageState } = useLocalStorage();
44
- const [, setName] = useLocalStorageState<WalletName | null>(localStorageKey, null);
45
+ const [name, setName] = useLocalStorage<WalletName | null>(localStorageKey, null);
45
46
  const [{ wallet, adapter, account, connected }, setState] = useState(initialState);
46
47
  const readyState = adapter?.readyState || WalletReadyState.Unsupported;
47
48
  const [connecting, setConnecting] = useState(false);
@@ -60,44 +61,69 @@ export const WalletProvider: FC<WalletProviderProps> = ({
60
61
 
61
62
  // When the wallets change, start to listen for changes to their `readyState`
62
63
  useEffect(() => {
63
- function handleReadyStateChange(this: WalletAdapter, isReadyState: WalletReadyState) {
64
+ // When the adapters change, wrap them to conform to the `Wallet` interface
65
+ setWallets((currentWallets) =>
66
+ adapters.map((wAdapter, index) => {
67
+ const currentWallet = currentWallets[index];
68
+ // If the wallet hasn't changed, return the same instance
69
+ return currentWallet &&
70
+ currentWallet.adapter === wAdapter &&
71
+ currentWallet.readyState === wAdapter.readyState
72
+ ? currentWallet
73
+ : {
74
+ adapter: wAdapter,
75
+ readyState: wAdapter.readyState
76
+ };
77
+ })
78
+ );
79
+
80
+ function handleReadyStateChange(this: any, wReadyState: WalletReadyState) {
64
81
  setWallets((prevWallets) => {
65
- const walletIndex = prevWallets.findIndex(
66
- (wAdapter) => wAdapter.adapter.name === this.name
67
- );
68
- if (walletIndex === -1) return prevWallets;
82
+ const index = prevWallets.findIndex(({ adapter: wAdapter }) => wAdapter === this);
83
+ if (index === -1) return prevWallets;
69
84
 
85
+ const { adapter: wAdapter } = prevWallets[index]!;
70
86
  return [
71
- ...prevWallets.slice(0, walletIndex),
72
- { ...prevWallets[walletIndex], isReadyState },
73
- ...prevWallets.slice(walletIndex + 1)
87
+ ...prevWallets.slice(0, index),
88
+ { adapter: wAdapter, readyState: wReadyState },
89
+ ...prevWallets.slice(index + 1)
74
90
  ];
75
91
  });
76
92
  }
77
- for (const wAdapter of adapters) {
78
- wAdapter.on('readyStateChange', handleReadyStateChange, wAdapter);
79
- }
80
- return () => {
81
- for (const wAdapter of adapters) {
82
- wAdapter.off('readyStateChange', handleReadyStateChange, wAdapter);
83
- }
84
- };
93
+
94
+ adapters.forEach((wAdapter) =>
95
+ wAdapter.on('readyStateChange', handleReadyStateChange, wAdapter)
96
+ );
97
+ return () =>
98
+ adapters.forEach((wAdapter) =>
99
+ wAdapter.off('readyStateChange', handleReadyStateChange, wAdapter)
100
+ );
85
101
  }, [adapters]);
86
102
 
87
103
  // When the selected wallet changes, initialize the state
88
- // useEffect(() => {
89
- // const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === name);
90
- // if (selectedWallet) {
91
- // setState({
92
- // wallet: selectedWallet,
93
- // adapter: selectedWallet.adapter,
94
- // connected: selectedWallet.adapter.connected,
95
- // publicKey: selectedWallet.adapter.publicKey
96
- // });
97
- // } else {
98
- // setState(initialState);
99
- // }
100
- // }, [name, wallets]);
104
+ useEffect(() => {
105
+ const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === name);
106
+ if (selectedWallet) {
107
+ setState({
108
+ wallet: selectedWallet,
109
+ adapter: selectedWallet.adapter,
110
+ connected: selectedWallet.adapter.connected,
111
+ account: selectedWallet.adapter.publicAccount
112
+ });
113
+ } else {
114
+ setState(initialState);
115
+ }
116
+ }, [name, wallets]);
117
+
118
+ // If the window is closing or reloading, ignore disconnect and error events from the adapter
119
+ useEffect(() => {
120
+ function listener() {
121
+ isUnloading.current = true;
122
+ }
123
+
124
+ window.addEventListener('beforeunload', listener);
125
+ return () => window.removeEventListener('beforeunload', listener);
126
+ }, [isUnloading]);
101
127
 
102
128
  // Handle the adapter's connect event
103
129
  const handleConnect = useCallback(() => {
@@ -113,8 +139,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
113
139
  const handleDisconnect = useCallback(() => {
114
140
  // Clear the selected wallet unless the window is unloading
115
141
  if (!isUnloading.current) setName(null);
116
- setState(initialState);
117
- }, [isUnloading]);
142
+ }, [isUnloading, setName]);
118
143
 
119
144
  // Handle the adapter's error event, and local errors
120
145
  const handleError = useCallback(
@@ -147,59 +172,75 @@ export const WalletProvider: FC<WalletProviderProps> = ({
147
172
  };
148
173
  }, [adapter]);
149
174
 
150
- // Connect the adapter to the wallet
151
- const connect = useCallback(
152
- async (walletName: string) => {
153
- if (isConnecting.current || connecting || disconnecting || connected) return;
154
- const selectedWallet = wallets.find((wAdapter) => wAdapter.adapter.name === walletName);
155
- let walletToConnect = initialState;
156
- if (selectedWallet) {
157
- walletToConnect = {
158
- wallet: selectedWallet,
159
- adapter: selectedWallet.adapter,
160
- connected: selectedWallet.adapter.connected,
161
- account: selectedWallet.adapter.publicAccount
162
- };
163
- }
164
- setState(walletToConnect);
165
- if (!walletToConnect.adapter) throw handleError(new WalletNotSelectedError());
166
-
167
- if (
168
- !(
169
- walletToConnect.adapter.readyState === WalletReadyState.Installed ||
170
- walletToConnect.adapter.readyState === WalletReadyState.Loadable
171
- )
172
- ) {
173
- // Clear the selected wallet
174
- setName(null);
175
-
176
- if (typeof window !== 'undefined' && walletToConnect.adapter.url) {
177
- window.open(walletToConnect.adapter.url, '_blank');
178
- }
179
-
180
- throw handleError(new WalletNotReadyError());
181
- }
175
+ // If autoConnect is enabled, try to connect when the adapter changes and is ready
176
+ useEffect(() => {
177
+ if (
178
+ isConnecting.current ||
179
+ connected ||
180
+ !autoConnect ||
181
+ !adapter ||
182
+ !(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable)
183
+ )
184
+ return;
182
185
 
186
+ (async function () {
183
187
  isConnecting.current = true;
184
188
  setConnecting(true);
185
189
  try {
186
- await walletToConnect.adapter.connect();
190
+ await adapter.connect();
187
191
  } catch (error: any) {
188
192
  // Clear the selected wallet
189
193
  setName(null);
190
- // Rethrow the error, and handleError will also be called
191
- throw error;
194
+ // Don't throw error, but handleError will still be called
192
195
  } finally {
193
196
  setConnecting(false);
194
197
  isConnecting.current = false;
195
198
  }
199
+ })();
200
+ }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);
201
+
202
+ // Connect the adapter to the wallet
203
+ const connect = useCallback(
204
+ async (walletName: WalletName) => {
205
+ if (isConnecting.current || isDisconnecting.current || connected) return;
206
+ if (!name) {
207
+ setName(walletName);
208
+ } else {
209
+ if (!adapter) throw handleError(new WalletNotSelectedError());
210
+
211
+ if (
212
+ !(readyState === WalletReadyState.Installed || readyState === WalletReadyState.Loadable)
213
+ ) {
214
+ // Clear the selected wallet
215
+ setName(null);
216
+
217
+ if (typeof window !== 'undefined') {
218
+ window.open(adapter.url, '_blank');
219
+ }
220
+
221
+ throw handleError(new WalletNotReadyError());
222
+ }
223
+ isConnecting.current = true;
224
+ setConnecting(true);
225
+ try {
226
+ await adapter.connect();
227
+ } catch (error: any) {
228
+ // Clear the selected wallet
229
+ setName(null);
230
+ // Rethrow the error, and handleError will also be called
231
+ throw error;
232
+ } finally {
233
+ setConnecting(false);
234
+ isConnecting.current = false;
235
+ }
236
+ }
196
237
  },
197
- [isConnecting, connecting, disconnecting, connected, readyState, handleError, wallets]
238
+ [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName, name]
198
239
  );
199
240
 
200
241
  // Disconnect the adapter from the wallet
201
242
  const disconnect = useCallback(async () => {
202
- if (isDisconnecting.current || disconnecting) return;
243
+ if (isDisconnecting.current) return;
203
244
  if (!adapter) return setName(null);
204
245
 
205
246
  isDisconnecting.current = true;
@@ -215,7 +256,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
215
256
  setDisconnecting(false);
216
257
  isDisconnecting.current = false;
217
258
  }
218
- }, [isDisconnecting, disconnecting, adapter]);
259
+ }, [isDisconnecting, setName, adapter]);
219
260
 
220
261
  // Send a transaction using the provided connection
221
262
  const signAndSubmitTransaction = useCallback(
@@ -255,6 +296,7 @@ export const WalletProvider: FC<WalletProviderProps> = ({
255
296
  connected,
256
297
  connecting,
257
298
  disconnecting,
299
+ autoConnect,
258
300
  select: setName,
259
301
  connect,
260
302
  disconnect,
@@ -13,7 +13,7 @@ export interface Wallet {
13
13
  }
14
14
 
15
15
  export interface WalletContextState {
16
- // autoConnect: boolean;
16
+ autoConnect: boolean;
17
17
  wallets: Wallet[];
18
18
  wallet: Wallet | null;
19
19
  account: AccountKeys | null;
@@ -32,7 +32,7 @@ export interface WalletContextState {
32
32
  }
33
33
 
34
34
  const DEFAULT_CONTEXT = {
35
- // autoConnect: false,
35
+ autoConnect: false,
36
36
  connecting: false,
37
37
  connected: false,
38
38
  disconnecting: false
@@ -1,45 +1,39 @@
1
- import { useCallback, useState } from 'react';
2
- import { useSSR } from './useSSR';
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
3
3
 
4
- export const useLocalStorage = () => {
5
- const { isClient } = useSSR();
6
- const useLocalStorageState = <T>(
7
- key: string,
8
- defaultState: T,
9
- session?: boolean
10
- ): [T, (T: any) => void] => {
11
- let storage: undefined | Storage;
12
- if (isClient) {
13
- storage = session ? sessionStorage : localStorage;
14
- }
15
- const [state, setState] = useState(() => {
16
- try {
17
- let storedState = storage?.getItem(key);
18
- if (storedState) {
19
- return JSON.parse(storedState || '');
20
- }
21
- } catch (error) {
22
- if (typeof window !== 'undefined') {
23
- console.error(error);
24
- }
4
+ export function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>] {
5
+ const state = useState<T>(() => {
6
+ try {
7
+ const value = localStorage.getItem(key);
8
+ if (value) return JSON.parse(value) as T;
9
+ } catch (error: any) {
10
+ if (typeof window !== 'undefined') {
11
+ console.error(error);
25
12
  }
26
- return defaultState;
27
- });
13
+ }
28
14
 
29
- const setLocalStorageState = useCallback(
30
- (newState: any) => {
31
- setState(newState);
32
- if (newState === null) {
33
- storage?.removeItem(key);
34
- } else {
35
- storage?.setItem(key, JSON.stringify(newState));
36
- }
37
- },
38
- [key, storage]
39
- );
15
+ return defaultState;
16
+ });
17
+ const value = state[0];
40
18
 
41
- return [state, setLocalStorageState];
42
- };
19
+ const isFirstRender = useRef(true);
20
+ useEffect(() => {
21
+ if (isFirstRender.current) {
22
+ isFirstRender.current = false;
23
+ return;
24
+ }
25
+ try {
26
+ if (value === null) {
27
+ localStorage.removeItem(key);
28
+ } else {
29
+ localStorage.setItem(key, JSON.stringify(value));
30
+ }
31
+ } catch (error: any) {
32
+ if (typeof window !== 'undefined') {
33
+ console.error(error);
34
+ }
35
+ }
36
+ }, [value, key]);
43
37
 
44
- return { useLocalStorageState };
45
- };
38
+ return state;
39
+ }