@manahippo/aptos-wallet-adapter 0.3.5 → 0.3.6

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.
@@ -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
+ }