@manahippo/aptos-wallet-adapter 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +4 -2
- package/dist/WalletAdapters/AptosSnap.d.ts +15 -9
- package/dist/WalletAdapters/AptosSnap.d.ts.map +1 -1
- package/dist/WalletAdapters/AptosSnap.js +41 -2
- package/dist/WalletAdapters/AptosSnap.js.map +1 -1
- package/dist/WalletAdapters/BaseAdapter.d.ts +25 -8
- package/dist/WalletAdapters/BaseAdapter.d.ts.map +1 -1
- package/dist/WalletAdapters/BaseAdapter.js +7 -1
- package/dist/WalletAdapters/BaseAdapter.js.map +1 -1
- package/dist/WalletAdapters/FewchaWallet.d.ts +11 -5
- package/dist/WalletAdapters/FewchaWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/FewchaWallet.js +54 -3
- package/dist/WalletAdapters/FewchaWallet.js.map +1 -1
- package/dist/WalletAdapters/FletchWallet.d.ts +11 -5
- package/dist/WalletAdapters/FletchWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/FletchWallet.js +41 -2
- package/dist/WalletAdapters/FletchWallet.js.map +1 -1
- package/dist/WalletAdapters/HippoExtensionWallet.d.ts +11 -6
- package/dist/WalletAdapters/HippoExtensionWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/HippoExtensionWallet.js +41 -2
- package/dist/WalletAdapters/HippoExtensionWallet.js.map +1 -1
- package/dist/WalletAdapters/HippoWallet.d.ts +11 -6
- package/dist/WalletAdapters/HippoWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/HippoWallet.js +33 -2
- package/dist/WalletAdapters/HippoWallet.js.map +1 -1
- package/dist/WalletAdapters/HyperPayWallet.d.ts +13 -8
- package/dist/WalletAdapters/HyperPayWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/HyperPayWallet.js +39 -0
- package/dist/WalletAdapters/HyperPayWallet.js.map +1 -1
- package/dist/WalletAdapters/MartianWallet.d.ts +19 -8
- package/dist/WalletAdapters/MartianWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/MartianWallet.js +63 -2
- package/dist/WalletAdapters/MartianWallet.js.map +1 -1
- package/dist/WalletAdapters/NightlyWallet.d.ts +7 -1
- package/dist/WalletAdapters/NightlyWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/NightlyWallet.js +41 -2
- package/dist/WalletAdapters/NightlyWallet.js.map +1 -1
- package/dist/WalletAdapters/PetraWallet.d.ts +25 -11
- package/dist/WalletAdapters/PetraWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/PetraWallet.js +66 -2
- package/dist/WalletAdapters/PetraWallet.js.map +1 -1
- package/dist/WalletAdapters/PontemWallet.d.ts +17 -9
- package/dist/WalletAdapters/PontemWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/PontemWallet.js +65 -2
- package/dist/WalletAdapters/PontemWallet.js.map +1 -1
- package/dist/WalletAdapters/RiseWallet.d.ts +12 -7
- package/dist/WalletAdapters/RiseWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/RiseWallet.js +41 -2
- package/dist/WalletAdapters/RiseWallet.js.map +1 -1
- package/dist/WalletAdapters/SpikaWallet.d.ts +12 -6
- package/dist/WalletAdapters/SpikaWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/SpikaWallet.js +41 -2
- package/dist/WalletAdapters/SpikaWallet.js.map +1 -1
- package/dist/WalletProviders/WalletProvider.d.ts.map +1 -1
- package/dist/WalletProviders/WalletProvider.js +45 -6
- package/dist/WalletProviders/WalletProvider.js.map +1 -1
- package/dist/WalletProviders/errors.d.ts +9 -0
- package/dist/WalletProviders/errors.d.ts.map +1 -1
- package/dist/WalletProviders/errors.js +22 -1
- package/dist/WalletProviders/errors.js.map +1 -1
- package/dist/WalletProviders/useWallet.d.ts +6 -5
- package/dist/WalletProviders/useWallet.d.ts.map +1 -1
- package/dist/WalletProviders/useWallet.js.map +1 -1
- package/dist/utilities/util.d.ts +2 -2
- package/dist/utilities/util.d.ts.map +1 -1
- package/dist/utilities/util.js.map +1 -1
- package/package.json +2 -2
- package/src/WalletAdapters/AptosSnap.ts +58 -20
- package/src/WalletAdapters/BaseAdapter.ts +29 -8
- package/src/WalletAdapters/FewchaWallet.ts +72 -10
- package/src/WalletAdapters/FletchWallet.ts +226 -182
- package/src/WalletAdapters/HippoExtensionWallet.ts +50 -8
- package/src/WalletAdapters/HippoWallet.ts +51 -10
- package/src/WalletAdapters/HyperPayWallet.ts +53 -8
- package/src/WalletAdapters/MartianWallet.ts +86 -10
- package/src/WalletAdapters/NightlyWallet.ts +46 -3
- package/src/WalletAdapters/PetraWallet.ts +91 -11
- package/src/WalletAdapters/PontemWallet.ts +87 -11
- package/src/WalletAdapters/RiseWallet.ts +51 -9
- package/src/WalletAdapters/SpikaWallet.ts +54 -8
- package/src/WalletProviders/WalletProvider.tsx +57 -8
- package/src/WalletProviders/errors.ts +11 -0
- package/src/WalletProviders/useWallet.ts +6 -4
- package/src/utilities/util.ts +3 -3
@@ -1,12 +1,20 @@
|
|
1
|
-
import { MaybeHexString } from 'aptos';
|
2
|
-
import { TransactionPayload, HexEncodedBytes } from 'aptos/src/generated';
|
1
|
+
import { MaybeHexString, Types } from 'aptos';
|
3
2
|
import { WEBWALLET_URL } from '../config/aptosConstants';
|
4
3
|
import {
|
4
|
+
WalletAccountChangeError,
|
5
|
+
WalletNetworkChangeError,
|
5
6
|
WalletNotConnectedError,
|
6
7
|
WalletNotReadyError,
|
7
8
|
WalletSignAndSubmitMessageError
|
8
9
|
} from '../WalletProviders/errors';
|
9
|
-
import {
|
10
|
+
import {
|
11
|
+
AccountKeys,
|
12
|
+
BaseWalletAdapter,
|
13
|
+
NetworkInfo,
|
14
|
+
WalletAdapterNetwork,
|
15
|
+
WalletName,
|
16
|
+
WalletReadyState
|
17
|
+
} from './BaseAdapter';
|
10
18
|
|
11
19
|
export const HippoWalletName = 'Hippo Web' as WalletName<'Hippo Web'>;
|
12
20
|
|
@@ -25,7 +33,12 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
25
33
|
|
26
34
|
protected _provider: string | undefined;
|
27
35
|
|
28
|
-
|
36
|
+
protected _network: WalletAdapterNetwork;
|
37
|
+
|
38
|
+
protected _chainId: string;
|
39
|
+
|
40
|
+
protected _api: string;
|
41
|
+
|
29
42
|
protected _timeout: number;
|
30
43
|
|
31
44
|
protected _readyState: WalletReadyState = WalletReadyState.Installed;
|
@@ -36,13 +49,13 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
36
49
|
|
37
50
|
constructor({
|
38
51
|
// provider = WEBWALLET_URL,
|
39
|
-
// network = WalletAdapterNetwork.
|
52
|
+
// network = WalletAdapterNetwork.Testnet,
|
40
53
|
timeout = 10000
|
41
54
|
}: HippoWalletAdapterConfig = {}) {
|
42
55
|
super();
|
43
56
|
|
44
57
|
this._provider = WEBWALLET_URL || 'https://hippo-wallet-test.web.app';
|
45
|
-
|
58
|
+
this._network = undefined;
|
46
59
|
this._timeout = timeout;
|
47
60
|
this._connecting = false;
|
48
61
|
this._wallet = null;
|
@@ -57,6 +70,14 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
57
70
|
};
|
58
71
|
}
|
59
72
|
|
73
|
+
get network(): NetworkInfo {
|
74
|
+
return {
|
75
|
+
name: this._network,
|
76
|
+
api: this._api,
|
77
|
+
chainId: this._chainId
|
78
|
+
};
|
79
|
+
}
|
80
|
+
|
60
81
|
get connecting(): boolean {
|
61
82
|
return this._connecting;
|
62
83
|
}
|
@@ -137,7 +158,7 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
137
158
|
this.emit('disconnect');
|
138
159
|
}
|
139
160
|
|
140
|
-
async signTransaction(transaction: TransactionPayload): Promise<Uint8Array> {
|
161
|
+
async signTransaction(transaction: Types.TransactionPayload): Promise<Uint8Array> {
|
141
162
|
try {
|
142
163
|
const request = new URLSearchParams({
|
143
164
|
request: JSON.stringify({
|
@@ -165,8 +186,8 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
165
186
|
}
|
166
187
|
|
167
188
|
async signAndSubmitTransaction(
|
168
|
-
transaction: TransactionPayload
|
169
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
189
|
+
transaction: Types.TransactionPayload
|
190
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
170
191
|
try {
|
171
192
|
const request = new URLSearchParams({
|
172
193
|
request: JSON.stringify({
|
@@ -185,7 +206,7 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
185
206
|
this.once('success', resolve);
|
186
207
|
this.once('error', reject);
|
187
208
|
});
|
188
|
-
return promise as { hash: HexEncodedBytes };
|
209
|
+
return promise as { hash: Types.HexEncodedBytes };
|
189
210
|
} catch (error: any) {
|
190
211
|
this.emit('error', error);
|
191
212
|
throw error;
|
@@ -218,6 +239,26 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
218
239
|
}
|
219
240
|
}
|
220
241
|
|
242
|
+
async onAccountChange(): Promise<void> {
|
243
|
+
try {
|
244
|
+
//To be implemented
|
245
|
+
} catch (error: any) {
|
246
|
+
const errMsg = error.message;
|
247
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
248
|
+
throw error;
|
249
|
+
}
|
250
|
+
}
|
251
|
+
|
252
|
+
async onNetworkChange(): Promise<void> {
|
253
|
+
try {
|
254
|
+
//To be implemented
|
255
|
+
} catch (error: any) {
|
256
|
+
const errMsg = error.message;
|
257
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
258
|
+
throw error;
|
259
|
+
}
|
260
|
+
}
|
261
|
+
|
221
262
|
private _beforeUnload = (): void => {
|
222
263
|
void this.disconnect();
|
223
264
|
};
|
@@ -1,7 +1,8 @@
|
|
1
|
-
import { MaybeHexString } from 'aptos';
|
2
|
-
import { TransactionPayload, HexEncodedBytes } from 'aptos/src/generated';
|
1
|
+
import { MaybeHexString, Types } from 'aptos';
|
3
2
|
import {
|
3
|
+
WalletAccountChangeError,
|
4
4
|
WalletDisconnectionError,
|
5
|
+
WalletNetworkChangeError,
|
5
6
|
WalletNotConnectedError,
|
6
7
|
WalletNotReadyError,
|
7
8
|
WalletSignAndSubmitMessageError,
|
@@ -11,7 +12,9 @@ import {
|
|
11
12
|
import {
|
12
13
|
AccountKeys,
|
13
14
|
BaseWalletAdapter,
|
15
|
+
NetworkInfo,
|
14
16
|
scopePollingDetectionStrategy,
|
17
|
+
WalletAdapterNetwork,
|
15
18
|
WalletName,
|
16
19
|
WalletReadyState
|
17
20
|
} from './BaseAdapter';
|
@@ -34,8 +37,8 @@ interface IHyperPayWallet {
|
|
34
37
|
account(): Promise<HyperPayAccount>;
|
35
38
|
isConnected(): Promise<boolean>;
|
36
39
|
generateTransaction(sender: MaybeHexString, payload: any, options?: any): Promise<any>;
|
37
|
-
signAndSubmitTransaction(transaction: TransactionPayload): Promise<HexEncodedBytes>;
|
38
|
-
signTransaction(transaction: TransactionPayload): Promise<Uint8Array>;
|
40
|
+
signAndSubmitTransaction(transaction: Types.TransactionPayload): Promise<Types.HexEncodedBytes>;
|
41
|
+
signTransaction(transaction: Types.TransactionPayload): Promise<Uint8Array>;
|
39
42
|
signMessage(message: string): Promise<{ signature: string }>;
|
40
43
|
disconnect(): Promise<void>;
|
41
44
|
}
|
@@ -64,7 +67,12 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
64
67
|
|
65
68
|
protected _provider: IHyperPayWallet | undefined;
|
66
69
|
|
67
|
-
|
70
|
+
protected _network: WalletAdapterNetwork;
|
71
|
+
|
72
|
+
protected _chainId: string;
|
73
|
+
|
74
|
+
protected _api: string;
|
75
|
+
|
68
76
|
protected _timeout: number;
|
69
77
|
|
70
78
|
protected _readyState: WalletReadyState =
|
@@ -109,6 +117,14 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
109
117
|
};
|
110
118
|
}
|
111
119
|
|
120
|
+
get network(): NetworkInfo {
|
121
|
+
return {
|
122
|
+
name: this._network,
|
123
|
+
api: this._api,
|
124
|
+
chainId: this._chainId
|
125
|
+
};
|
126
|
+
}
|
127
|
+
|
112
128
|
get connecting(): boolean {
|
113
129
|
return this._connecting;
|
114
130
|
}
|
@@ -176,7 +192,10 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
176
192
|
this.emit('disconnect');
|
177
193
|
}
|
178
194
|
|
179
|
-
async signTransaction(
|
195
|
+
async signTransaction(
|
196
|
+
transactionPyld: Types.TransactionPayload,
|
197
|
+
options?: any
|
198
|
+
): Promise<Uint8Array> {
|
180
199
|
try {
|
181
200
|
const wallet = this._wallet;
|
182
201
|
const provider = this._provider || window.hyperpay;
|
@@ -196,9 +215,9 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
196
215
|
}
|
197
216
|
|
198
217
|
async signAndSubmitTransaction(
|
199
|
-
transactionPyld: TransactionPayload,
|
218
|
+
transactionPyld: Types.TransactionPayload,
|
200
219
|
options?: any
|
201
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
220
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
202
221
|
try {
|
203
222
|
const wallet = this._wallet;
|
204
223
|
const provider = this._provider || window.hyperpay;
|
@@ -234,4 +253,30 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
234
253
|
throw error;
|
235
254
|
}
|
236
255
|
}
|
256
|
+
|
257
|
+
async onAccountChange(): Promise<void> {
|
258
|
+
try {
|
259
|
+
const wallet = this._wallet;
|
260
|
+
const provider = this._provider || window.hyperpay;
|
261
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
262
|
+
//To be implemented
|
263
|
+
} catch (error: any) {
|
264
|
+
const errMsg = error.message;
|
265
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
266
|
+
throw error;
|
267
|
+
}
|
268
|
+
}
|
269
|
+
|
270
|
+
async onNetworkChange(): Promise<void> {
|
271
|
+
try {
|
272
|
+
const wallet = this._wallet;
|
273
|
+
const provider = this._provider || window.hyperpay;
|
274
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
275
|
+
//To be implemented
|
276
|
+
} catch (error: any) {
|
277
|
+
const errMsg = error.message;
|
278
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
279
|
+
throw error;
|
280
|
+
}
|
281
|
+
}
|
237
282
|
}
|
@@ -1,7 +1,9 @@
|
|
1
|
-
import { MaybeHexString } from 'aptos';
|
2
|
-
import { TransactionPayload, HexEncodedBytes } from 'aptos/src/generated';
|
1
|
+
import { MaybeHexString, Types } from 'aptos';
|
3
2
|
import {
|
3
|
+
WalletAccountChangeError,
|
4
4
|
WalletDisconnectionError,
|
5
|
+
WalletGetNetworkError,
|
6
|
+
WalletNetworkChangeError,
|
5
7
|
WalletNotConnectedError,
|
6
8
|
WalletNotReadyError,
|
7
9
|
WalletSignAndSubmitMessageError,
|
@@ -11,9 +13,11 @@ import {
|
|
11
13
|
import {
|
12
14
|
AccountKeys,
|
13
15
|
BaseWalletAdapter,
|
16
|
+
NetworkInfo,
|
14
17
|
scopePollingDetectionStrategy,
|
15
18
|
SignMessagePayload,
|
16
19
|
SignMessageResponse,
|
20
|
+
WalletAdapterNetwork,
|
17
21
|
WalletName,
|
18
22
|
WalletReadyState
|
19
23
|
} from './BaseAdapter';
|
@@ -36,10 +40,14 @@ interface IMartianWallet {
|
|
36
40
|
account(): Promise<MartianAccount>;
|
37
41
|
isConnected(): Promise<boolean>;
|
38
42
|
generateTransaction(sender: MaybeHexString, payload: any, options?: any): Promise<any>;
|
39
|
-
signAndSubmitTransaction(transaction: TransactionPayload): Promise<HexEncodedBytes>;
|
40
|
-
signTransaction(transaction: TransactionPayload): Promise<Uint8Array>;
|
43
|
+
signAndSubmitTransaction(transaction: Types.TransactionPayload): Promise<Types.HexEncodedBytes>;
|
44
|
+
signTransaction(transaction: Types.TransactionPayload): Promise<Uint8Array>;
|
41
45
|
signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;
|
42
46
|
disconnect(): Promise<void>;
|
47
|
+
getChainId(): Promise<{ chainId: number }>;
|
48
|
+
network(): Promise<WalletAdapterNetwork>;
|
49
|
+
onAccountChange: (listenr: (newAddress: string) => void) => void;
|
50
|
+
onNetworkChange: (listenr: (network: string) => void) => void;
|
43
51
|
}
|
44
52
|
|
45
53
|
interface MartianWindow extends Window {
|
@@ -66,7 +74,12 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
66
74
|
|
67
75
|
protected _provider: IMartianWallet | undefined;
|
68
76
|
|
69
|
-
|
77
|
+
protected _network: WalletAdapterNetwork;
|
78
|
+
|
79
|
+
protected _chainId: string;
|
80
|
+
|
81
|
+
protected _api: string;
|
82
|
+
|
70
83
|
protected _timeout: number;
|
71
84
|
|
72
85
|
protected _readyState: WalletReadyState =
|
@@ -80,13 +93,13 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
80
93
|
|
81
94
|
constructor({
|
82
95
|
// provider,
|
83
|
-
// network = WalletAdapterNetwork.
|
96
|
+
// network = WalletAdapterNetwork.Testnet,
|
84
97
|
timeout = 10000
|
85
98
|
}: MartianWalletAdapterConfig = {}) {
|
86
99
|
super();
|
87
100
|
|
88
101
|
this._provider = typeof window !== 'undefined' ? window.martian : undefined;
|
89
|
-
|
102
|
+
this._network = undefined;
|
90
103
|
this._timeout = timeout;
|
91
104
|
this._connecting = false;
|
92
105
|
this._wallet = null;
|
@@ -111,6 +124,14 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
111
124
|
};
|
112
125
|
}
|
113
126
|
|
127
|
+
get network(): NetworkInfo {
|
128
|
+
return {
|
129
|
+
name: this._network,
|
130
|
+
api: this._api,
|
131
|
+
chainId: this._chainId
|
132
|
+
};
|
133
|
+
}
|
134
|
+
|
114
135
|
get connecting(): boolean {
|
115
136
|
return this._connecting;
|
116
137
|
}
|
@@ -152,6 +173,20 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
152
173
|
...walletAccount,
|
153
174
|
isConnected: true
|
154
175
|
};
|
176
|
+
|
177
|
+
try {
|
178
|
+
const name = await provider?.network();
|
179
|
+
const { chainId } = await provider?.getChainId();
|
180
|
+
const api = null;
|
181
|
+
|
182
|
+
this._network = name;
|
183
|
+
this._chainId = chainId.toString();
|
184
|
+
this._api = api;
|
185
|
+
} catch (error: any) {
|
186
|
+
const errMsg = error.message;
|
187
|
+
this.emit('error', new WalletGetNetworkError(errMsg));
|
188
|
+
throw error;
|
189
|
+
}
|
155
190
|
}
|
156
191
|
this.emit('connect', this._wallet?.address || '');
|
157
192
|
} catch (error: any) {
|
@@ -178,7 +213,10 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
178
213
|
this.emit('disconnect');
|
179
214
|
}
|
180
215
|
|
181
|
-
async signTransaction(
|
216
|
+
async signTransaction(
|
217
|
+
transactionPyld: Types.TransactionPayload,
|
218
|
+
options?: any
|
219
|
+
): Promise<Uint8Array> {
|
182
220
|
try {
|
183
221
|
const wallet = this._wallet;
|
184
222
|
const provider = this._provider || window.martian;
|
@@ -198,9 +236,9 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
198
236
|
}
|
199
237
|
|
200
238
|
async signAndSubmitTransaction(
|
201
|
-
transactionPyld: TransactionPayload,
|
239
|
+
transactionPyld: Types.TransactionPayload,
|
202
240
|
options?: any
|
203
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
241
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
204
242
|
try {
|
205
243
|
const wallet = this._wallet;
|
206
244
|
const provider = this._provider || window.martian;
|
@@ -239,4 +277,42 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
239
277
|
throw error;
|
240
278
|
}
|
241
279
|
}
|
280
|
+
|
281
|
+
async onAccountChange(): Promise<void> {
|
282
|
+
try {
|
283
|
+
const wallet = this._wallet;
|
284
|
+
const provider = this._provider || window.martian;
|
285
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
286
|
+
await provider?.onAccountChange((newAccount: string) => {
|
287
|
+
console.log('account Changed >>>', newAccount);
|
288
|
+
this._wallet = {
|
289
|
+
...this._wallet,
|
290
|
+
address: newAccount
|
291
|
+
};
|
292
|
+
this.emit('accountChange', newAccount);
|
293
|
+
});
|
294
|
+
} catch (error: any) {
|
295
|
+
const errMsg = error.message;
|
296
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
297
|
+
throw error;
|
298
|
+
}
|
299
|
+
}
|
300
|
+
|
301
|
+
async onNetworkChange(): Promise<void> {
|
302
|
+
try {
|
303
|
+
const wallet = this._wallet;
|
304
|
+
const provider = this._provider || window.martian;
|
305
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
306
|
+
const handleNetworkChange = async (newNetwork: WalletAdapterNetwork) => {
|
307
|
+
console.log('network Changed >>>', newNetwork);
|
308
|
+
this._network = newNetwork;
|
309
|
+
this.emit('networkChange', this._network);
|
310
|
+
};
|
311
|
+
await provider?.onNetworkChange(handleNetworkChange);
|
312
|
+
} catch (error: any) {
|
313
|
+
const errMsg = error.message;
|
314
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
315
|
+
throw error;
|
316
|
+
}
|
317
|
+
}
|
242
318
|
}
|
@@ -4,7 +4,9 @@ import { PendingTransaction, TransactionPayload } from 'aptos/src/generated';
|
|
4
4
|
import * as SHA3 from 'js-sha3';
|
5
5
|
import { aptosClient } from '../config/aptosConstants';
|
6
6
|
import {
|
7
|
+
WalletAccountChangeError,
|
7
8
|
WalletDisconnectionError,
|
9
|
+
WalletNetworkChangeError,
|
8
10
|
WalletNotConnectedError,
|
9
11
|
WalletNotReadyError,
|
10
12
|
WalletSignMessageError,
|
@@ -13,7 +15,9 @@ import {
|
|
13
15
|
import {
|
14
16
|
AccountKeys,
|
15
17
|
BaseWalletAdapter,
|
18
|
+
NetworkInfo,
|
16
19
|
scopePollingDetectionStrategy,
|
20
|
+
WalletAdapterNetwork,
|
17
21
|
WalletName,
|
18
22
|
WalletReadyState
|
19
23
|
} from './BaseAdapter';
|
@@ -88,7 +92,12 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
88
92
|
|
89
93
|
protected _provider: AptosNightly | undefined;
|
90
94
|
|
91
|
-
|
95
|
+
protected _network: WalletAdapterNetwork;
|
96
|
+
|
97
|
+
protected _chainId: string;
|
98
|
+
|
99
|
+
protected _api: string;
|
100
|
+
|
92
101
|
protected _timeout: number;
|
93
102
|
|
94
103
|
protected _readyState: WalletReadyState =
|
@@ -107,13 +116,13 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
107
116
|
|
108
117
|
constructor({
|
109
118
|
// provider,
|
110
|
-
// network = WalletAdapterNetwork.
|
119
|
+
// network = WalletAdapterNetwork.Testnet,
|
111
120
|
timeout = 10000
|
112
121
|
}: NightlyWalletAdapterConfig = {}) {
|
113
122
|
super();
|
114
123
|
|
115
124
|
this._provider = window.nightly?.aptos;
|
116
|
-
|
125
|
+
this._network = undefined;
|
117
126
|
this._timeout = timeout;
|
118
127
|
this._connecting = false;
|
119
128
|
this._wallet = null;
|
@@ -138,6 +147,14 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
138
147
|
};
|
139
148
|
}
|
140
149
|
|
150
|
+
get network(): NetworkInfo {
|
151
|
+
return {
|
152
|
+
name: this._network,
|
153
|
+
api: this._api,
|
154
|
+
chainId: this._chainId
|
155
|
+
};
|
156
|
+
}
|
157
|
+
|
141
158
|
get connecting(): boolean {
|
142
159
|
return this._connecting;
|
143
160
|
}
|
@@ -283,4 +300,30 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
283
300
|
throw error;
|
284
301
|
}
|
285
302
|
}
|
303
|
+
|
304
|
+
async onAccountChange(): Promise<void> {
|
305
|
+
try {
|
306
|
+
const wallet = this._wallet;
|
307
|
+
const provider = this._provider || window.nightly.aptos;
|
308
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
309
|
+
//To be implemented
|
310
|
+
} catch (error: any) {
|
311
|
+
const errMsg = error.message;
|
312
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
313
|
+
throw error;
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
async onNetworkChange(): Promise<void> {
|
318
|
+
try {
|
319
|
+
const wallet = this._wallet;
|
320
|
+
const provider = this._provider || window.nightly.aptos;
|
321
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
322
|
+
//To be implemented
|
323
|
+
} catch (error: any) {
|
324
|
+
const errMsg = error.message;
|
325
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
326
|
+
throw error;
|
327
|
+
}
|
328
|
+
}
|
286
329
|
}
|
@@ -1,6 +1,9 @@
|
|
1
|
-
import {
|
1
|
+
import { Types } from 'aptos';
|
2
2
|
import {
|
3
|
+
WalletAccountChangeError,
|
3
4
|
WalletDisconnectionError,
|
5
|
+
WalletGetNetworkError,
|
6
|
+
WalletNetworkChangeError,
|
4
7
|
WalletNotConnectedError,
|
5
8
|
WalletNotReadyError,
|
6
9
|
WalletSignAndSubmitMessageError,
|
@@ -10,9 +13,11 @@ import {
|
|
10
13
|
import {
|
11
14
|
AccountKeys,
|
12
15
|
BaseWalletAdapter,
|
16
|
+
NetworkInfo,
|
13
17
|
scopePollingDetectionStrategy,
|
14
18
|
SignMessagePayload,
|
15
19
|
SignMessageResponse,
|
20
|
+
WalletAdapterNetwork,
|
16
21
|
WalletName,
|
17
22
|
WalletReadyState
|
18
23
|
} from './BaseAdapter';
|
@@ -23,17 +28,23 @@ interface IApotsErrorResult {
|
|
23
28
|
message: string;
|
24
29
|
}
|
25
30
|
|
31
|
+
type AddressInfo = { address: string; publicKey: string; authKey?: string };
|
32
|
+
|
26
33
|
interface IAptosWallet {
|
27
|
-
connect: () => Promise<
|
28
|
-
account: () => Promise<
|
34
|
+
connect: () => Promise<AddressInfo>;
|
35
|
+
account: () => Promise<AddressInfo>;
|
29
36
|
isConnected: () => Promise<boolean>;
|
30
37
|
signAndSubmitTransaction(
|
31
38
|
transaction: any,
|
32
39
|
options?: any
|
33
|
-
): Promise<{ hash: HexEncodedBytes } | IApotsErrorResult>;
|
40
|
+
): Promise<{ hash: Types.HexEncodedBytes } | IApotsErrorResult>;
|
34
41
|
signTransaction(transaction: any, options?: any): Promise<Uint8Array | IApotsErrorResult>;
|
35
42
|
signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;
|
36
43
|
disconnect(): Promise<void>;
|
44
|
+
network(): Promise<WalletAdapterNetwork>;
|
45
|
+
requestId: Promise<number>;
|
46
|
+
onAccountChange: (listener: (newAddress: AddressInfo) => void) => void;
|
47
|
+
onNetworkChange: (listener: (network: { networkName: string }) => void) => void;
|
37
48
|
}
|
38
49
|
|
39
50
|
interface AptosWindow extends Window {
|
@@ -60,7 +71,12 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
60
71
|
|
61
72
|
protected _provider: IAptosWallet | undefined;
|
62
73
|
|
63
|
-
|
74
|
+
protected _network: WalletAdapterNetwork;
|
75
|
+
|
76
|
+
protected _chainId: string;
|
77
|
+
|
78
|
+
protected _api: string;
|
79
|
+
|
64
80
|
protected _timeout: number;
|
65
81
|
|
66
82
|
protected _readyState: WalletReadyState =
|
@@ -74,13 +90,13 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
74
90
|
|
75
91
|
constructor({
|
76
92
|
// provider,
|
77
|
-
// network = WalletAdapterNetwork.
|
93
|
+
// network = WalletAdapterNetwork.Testnet,
|
78
94
|
timeout = 10000
|
79
95
|
}: AptosWalletAdapterConfig = {}) {
|
80
96
|
super();
|
81
97
|
|
82
98
|
this._provider = typeof window !== 'undefined' ? window.aptos : undefined;
|
83
|
-
|
99
|
+
this._network = undefined;
|
84
100
|
this._timeout = timeout;
|
85
101
|
this._connecting = false;
|
86
102
|
this._wallet = null;
|
@@ -105,6 +121,14 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
105
121
|
};
|
106
122
|
}
|
107
123
|
|
124
|
+
get network(): NetworkInfo {
|
125
|
+
return {
|
126
|
+
name: this._network,
|
127
|
+
api: this._api,
|
128
|
+
chainId: this._chainId
|
129
|
+
};
|
130
|
+
}
|
131
|
+
|
108
132
|
get connecting(): boolean {
|
109
133
|
return this._connecting;
|
110
134
|
}
|
@@ -142,6 +166,20 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
142
166
|
isConnected: true
|
143
167
|
};
|
144
168
|
|
169
|
+
try {
|
170
|
+
const name = await provider?.network();
|
171
|
+
const chainId = null;
|
172
|
+
const api = null;
|
173
|
+
|
174
|
+
this._network = name;
|
175
|
+
this._chainId = chainId;
|
176
|
+
this._api = api;
|
177
|
+
} catch (error: any) {
|
178
|
+
const errMsg = error.message;
|
179
|
+
this.emit('error', new WalletGetNetworkError(errMsg));
|
180
|
+
throw error;
|
181
|
+
}
|
182
|
+
|
145
183
|
this.emit('connect', this._wallet.publicKey);
|
146
184
|
} catch (error: any) {
|
147
185
|
this.emit('error', error);
|
@@ -167,7 +205,7 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
167
205
|
this.emit('disconnect');
|
168
206
|
}
|
169
207
|
|
170
|
-
async signTransaction(transaction: TransactionPayload, options?: any): Promise<Uint8Array> {
|
208
|
+
async signTransaction(transaction: Types.TransactionPayload, options?: any): Promise<Uint8Array> {
|
171
209
|
try {
|
172
210
|
const wallet = this._wallet;
|
173
211
|
const provider = this._provider || window.aptos;
|
@@ -186,9 +224,9 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
186
224
|
}
|
187
225
|
|
188
226
|
async signAndSubmitTransaction(
|
189
|
-
transaction: TransactionPayload,
|
227
|
+
transaction: Types.TransactionPayload,
|
190
228
|
options?: any
|
191
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
229
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
192
230
|
try {
|
193
231
|
const wallet = this._wallet;
|
194
232
|
const provider = this._provider || window.aptos;
|
@@ -198,7 +236,7 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
198
236
|
if ((response as IApotsErrorResult).code) {
|
199
237
|
throw new Error((response as IApotsErrorResult).message);
|
200
238
|
}
|
201
|
-
return response as { hash: HexEncodedBytes };
|
239
|
+
return response as { hash: Types.HexEncodedBytes };
|
202
240
|
} catch (error: any) {
|
203
241
|
const errMsg = error.message;
|
204
242
|
this.emit('error', new WalletSignAndSubmitMessageError(errMsg));
|
@@ -226,4 +264,46 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
226
264
|
throw error;
|
227
265
|
}
|
228
266
|
}
|
267
|
+
|
268
|
+
async onAccountChange(): Promise<void> {
|
269
|
+
try {
|
270
|
+
const wallet = this._wallet;
|
271
|
+
const provider = this._provider || window.aptos;
|
272
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
273
|
+
const handleAccountChange = async (newAccount: AddressInfo) => {
|
274
|
+
console.log('account Changed >>>', newAccount);
|
275
|
+
// Petra extension currently didn't return the new Account
|
276
|
+
this._wallet = {
|
277
|
+
...this._wallet,
|
278
|
+
publicKey: newAccount.publicKey || this._wallet?.publicKey,
|
279
|
+
authKey: newAccount.authKey || this._wallet?.authKey,
|
280
|
+
address: newAccount.address || this._wallet?.address
|
281
|
+
};
|
282
|
+
this.emit('accountChange', newAccount.publicKey);
|
283
|
+
};
|
284
|
+
await provider?.onAccountChange(handleAccountChange);
|
285
|
+
} catch (error: any) {
|
286
|
+
const errMsg = error.message;
|
287
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
288
|
+
throw error;
|
289
|
+
}
|
290
|
+
}
|
291
|
+
|
292
|
+
async onNetworkChange(): Promise<void> {
|
293
|
+
try {
|
294
|
+
const wallet = this._wallet;
|
295
|
+
const provider = this._provider || window.aptos;
|
296
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
297
|
+
const handleNetworkChange = async (newNetwork: { networkName: WalletAdapterNetwork }) => {
|
298
|
+
console.log('network Changed >>>', newNetwork);
|
299
|
+
this._network = newNetwork.networkName;
|
300
|
+
this.emit('networkChange', this._network);
|
301
|
+
};
|
302
|
+
await provider?.onNetworkChange(handleNetworkChange);
|
303
|
+
} catch (error: any) {
|
304
|
+
const errMsg = error.message;
|
305
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
306
|
+
throw error;
|
307
|
+
}
|
308
|
+
}
|
229
309
|
}
|