@meshconnect/uwc-injected-connector 0.10.7 → 0.10.8-snapshot.75ebef9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/injected-connector.d.ts.map +1 -1
- package/dist/injected-connector.js +1 -1
- package/dist/injected-connector.js.map +1 -1
- package/dist/services/ton/ton-transaction-service.d.ts.map +1 -1
- package/dist/services/ton/ton-transaction-service.js +10 -3
- package/dist/services/ton/ton-transaction-service.js.map +1 -1
- package/dist/services/ton/ton-wallet-service.d.ts +4 -1
- package/dist/services/ton/ton-wallet-service.d.ts.map +1 -1
- package/dist/services/ton/ton-wallet-service.js +33 -10
- package/dist/services/ton/ton-wallet-service.js.map +1 -1
- package/dist/utils/error-utils.d.ts.map +1 -1
- package/dist/utils/error-utils.js +6 -0
- package/dist/utils/error-utils.js.map +1 -1
- package/package.json +5 -5
- package/src/injected-connector.ts +4 -1
- package/src/services/ton/ton-transaction-service.ts +18 -3
- package/src/services/ton/ton-wallet-service.test.ts +191 -6
- package/src/services/ton/ton-wallet-service.ts +42 -8
- package/src/utils/error-utils.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAEjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAY/B,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,qBAAqB,CAAqC;gBAGhE,aAAa,GAAE,aAAkB,EACjC,eAAe,GAAE,cAAc,EAAO,EACtC,gBAAgB,CAAC,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAEjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAY/B,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,qBAAqB,CAAqC;gBAGhE,aAAa,GAAE,aAAkB,EACjC,eAAe,GAAE,cAAc,EAAO,EACtC,gBAAgB,CAAC,EAAE,gBAAgB;IA8BrC;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,SAAS,EACpB,eAAe,GAAE,cAAc,EAAO,GACrC,OAAO,CACN,yBAAyB,EAAE,GAC3B,wBAAwB,EAAE,GAC1B,sBAAsB,EAAE,GACxB,qBAAqB,EAAE,CAC1B;IAwDD;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAyC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,aAAa,CAAC;IAiFzB;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,iBAAiB,CAAC;IA+D7B;;;;OAIG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAQ5C"}
|
|
@@ -25,7 +25,7 @@ export class InjectedConnector {
|
|
|
25
25
|
this.ethereumService = new EthereumWalletService();
|
|
26
26
|
this.solanaService = new SolanaWalletService(this.storageService);
|
|
27
27
|
this.tronService = new TronWalletService();
|
|
28
|
-
this.tonService = new TonWalletService(this.tonConnectManifestUrl);
|
|
28
|
+
this.tonService = new TonWalletService(this.tonConnectManifestUrl, tonConnectConfig?.onSessionRestored);
|
|
29
29
|
this.connectionManager = new ConnectionManager(this.ethereumService, this.solanaService, this.tronService, this.tonService);
|
|
30
30
|
this.signatureService = new SignatureService();
|
|
31
31
|
this.transactionService = new TransactionService(this.networkRpcMap);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injected-connector.js","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEnE,MAAM,OAAO,iBAAiB;IACX,cAAc,CAAgB;IACvC,eAAe,CAAuB;IACtC,aAAa,CAAqB;IAClC,WAAW,CAAmB;IAC9B,UAAU,CAAkB;IAC5B,iBAAiB,CAAmB;IACpC,gBAAgB,CAAkB;IAClC,kBAAkB,CAAoB;IACtC,aAAa,CAAe;IAC5B,qBAAqB,CAAqC;IAElE,YACE,gBAA+B,EAAE,EACjC,kBAAoC,EAAE,EACtC,gBAAmC;QAEnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,EAAE,WAAW,CAAA;QAE1D,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;QAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAA;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,
|
|
1
|
+
{"version":3,"file":"injected-connector.js","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton-transaction-service.d.ts","sourceRoot":"","sources":["../../../src/services/ton/ton-transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ton-transaction-service.d.ts","sourceRoot":"","sources":["../../../src/services/ton/ton-transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAa/B;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAuB;;IAMtC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,wBAAwB,EACjC,GAAG,EAAE,UAAU,EACf,gBAAgB,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,IAAI,GAC1D,OAAO,CAAC,iBAAiB,CAAC;IAiB7B;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,UAAU,EACf,gBAAgB,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,IAAI,EAC3D,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,aAAa,CAAC;IAkBzB,OAAO,CAAC,aAAa;CAgBtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WalletConnectorError } from '@meshconnect/uwc-types';
|
|
2
|
+
import { buildSignDataPayload, executeSignData, unwrapBoc, bocToHash, TON_CONNECT_INJECTED_STORAGE_PREFIX, withWalletResponseTimeout } from '@meshconnect/uwc-ton-connector';
|
|
2
3
|
import { extractTonSdkErrorMessage, parseError } from '../../utils/error-utils';
|
|
3
4
|
import { TonTransactionBuilder } from './ton-transaction-builder';
|
|
4
5
|
/**
|
|
@@ -15,7 +16,7 @@ export class TonTransactionService {
|
|
|
15
16
|
async sendTransaction(request, sdk, UserRejectsError) {
|
|
16
17
|
try {
|
|
17
18
|
const txRequest = this.builder.buildNativeTransfer(request, sdk.account?.address);
|
|
18
|
-
const result = await sdk.sendTransaction(txRequest);
|
|
19
|
+
const result = await withWalletResponseTimeout(sdk.sendTransaction(txRequest), TON_CONNECT_INJECTED_STORAGE_PREFIX);
|
|
19
20
|
const boc = unwrapBoc(result);
|
|
20
21
|
return await bocToHash(boc);
|
|
21
22
|
}
|
|
@@ -32,13 +33,19 @@ export class TonTransactionService {
|
|
|
32
33
|
}
|
|
33
34
|
try {
|
|
34
35
|
const payload = buildSignDataPayload(message, payloadOverride);
|
|
35
|
-
return await executeSignData(sdk, payload);
|
|
36
|
+
return await withWalletResponseTimeout(executeSignData(sdk, payload), TON_CONNECT_INJECTED_STORAGE_PREFIX);
|
|
36
37
|
}
|
|
37
38
|
catch (error) {
|
|
38
39
|
this.toWalletError(error, UserRejectsError);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
toWalletError(error, UserRejectsError) {
|
|
43
|
+
// Already-typed connector errors (e.g. the `expired` timeout from
|
|
44
|
+
// withWalletResponseTimeout) must propagate unchanged — the
|
|
45
|
+
// `{ code, message }` normalization below would downgrade them.
|
|
46
|
+
if (error instanceof WalletConnectorError) {
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
42
49
|
const isRejected = UserRejectsError != null && error instanceof UserRejectsError;
|
|
43
50
|
const message = extractTonSdkErrorMessage(error) || 'TON wallet operation failed';
|
|
44
51
|
parseError({ code: isRejected ? 4001 : undefined, message });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton-transaction-service.js","sourceRoot":"","sources":["../../../src/services/ton/ton-transaction-service.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,SAAS,
|
|
1
|
+
{"version":3,"file":"ton-transaction-service.js","sourceRoot":"","sources":["../../../src/services/ton/ton-transaction-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,SAAS,EACT,mCAAmC,EACnC,yBAAyB,EAC1B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,OAAO,CAAuB;IAEtC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,EAAE,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,OAAiC,EACjC,GAAe,EACf,gBAA2D;QAE3D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAChD,OAAO,EACP,GAAG,CAAC,OAAO,EAAE,OAAO,CACrB,CAAA;YACD,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,EAC9B,mCAAmC,CACpC,CAAA;YACD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;YAC7B,OAAO,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,OAAe,EACf,GAAe,EACf,gBAA2D,EAC3D,eAAoC;QAEpC,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAA;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;YAC9D,OAAO,MAAM,yBAAyB,CACpC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,EAC7B,mCAAmC,CACpC,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAEO,aAAa,CACnB,KAAc,EACd,gBAA2D;QAE3D,kEAAkE;QAClE,4DAA4D;QAC5D,gEAAgE;QAChE,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;YAC1C,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,UAAU,GACd,gBAAgB,IAAI,IAAI,IAAI,KAAK,YAAY,gBAAgB,CAAA;QAC/D,MAAM,OAAO,GACX,yBAAyB,CAAC,KAAK,CAAC,IAAI,6BAA6B,CAAA;QACnE,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9D,CAAC;CACF"}
|
|
@@ -6,10 +6,13 @@ export declare class TonWalletService {
|
|
|
6
6
|
private connectedJsBridgeKey;
|
|
7
7
|
private sdkInstance;
|
|
8
8
|
private manifestUrl;
|
|
9
|
+
private onSessionRestored;
|
|
9
10
|
private toUserFriendlyAddress;
|
|
10
11
|
private UserRejectsError;
|
|
11
12
|
private transactionService;
|
|
12
|
-
|
|
13
|
+
private abortPendingConnect;
|
|
14
|
+
private connectGeneration;
|
|
15
|
+
constructor(manifestUrl?: string | (() => string), onSessionRestored?: () => void);
|
|
13
16
|
initializeDiscovery(expectedWallets?: WalletMetadata[]): Promise<void>;
|
|
14
17
|
getDetectedWallets(): DetectedTonWallet[];
|
|
15
18
|
findWalletByUuid(uuid: string): DetectedTonWallet | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ton/ton-wallet-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ton-wallet-service.d.ts","sourceRoot":"","sources":["../../../src/services/ton/ton-wallet-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAQ/B,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAW3E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,qBAAqB,CAEd;IACf,OAAO,CAAC,gBAAgB,CAAiD;IACzE,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,iBAAiB,CAAI;gBAG3B,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI;IAO1B,mBAAmB,CAAC,eAAe,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E,kBAAkB,IAAI,iBAAiB,EAAE;IAIzC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;YAI/C,UAAU;IAWlB,OAAO,CACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAyH7C,WAAW,CACf,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,aAAa,CAAC;IAanB,eAAe,CACnB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC;IAYvB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBvD,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAMrB,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B,uBAAuB,IAAI,MAAM,GAAG,IAAI;IAIxC,WAAW,IAAI,OAAO;IAItB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC,mCAAmC,CACjC,eAAe,GAAE,cAAc,EAAO,GACrC,MAAM,EAAE;CAOZ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NamespacedStorage, toFriendlyAddress } from '@meshconnect/uwc-ton-connector';
|
|
1
|
+
import { NamespacedStorage, TON_CONNECT_INJECTED_STORAGE_PREFIX, markSessionEstablished, toFriendlyAddress, tryRestoreInjectedSession } from '@meshconnect/uwc-ton-connector';
|
|
2
2
|
import { getTonWallets } from '../../ton-discovery';
|
|
3
3
|
import { extractTonSdkErrorMessage } from '../../utils/error-utils';
|
|
4
4
|
import { TonTransactionService } from './ton-transaction-service';
|
|
@@ -9,11 +9,16 @@ export class TonWalletService {
|
|
|
9
9
|
connectedJsBridgeKey = null;
|
|
10
10
|
sdkInstance = null;
|
|
11
11
|
manifestUrl;
|
|
12
|
+
onSessionRestored;
|
|
12
13
|
toUserFriendlyAddress = null;
|
|
13
14
|
UserRejectsError = null;
|
|
14
15
|
transactionService;
|
|
15
|
-
|
|
16
|
+
// ONC-2717 restore preflight bookkeeping — mirrors TonConnectConnector.
|
|
17
|
+
abortPendingConnect = null;
|
|
18
|
+
connectGeneration = 0;
|
|
19
|
+
constructor(manifestUrl, onSessionRestored) {
|
|
16
20
|
this.manifestUrl = manifestUrl;
|
|
21
|
+
this.onSessionRestored = onSessionRestored;
|
|
17
22
|
this.transactionService = new TonTransactionService();
|
|
18
23
|
}
|
|
19
24
|
async initializeDiscovery(expectedWallets) {
|
|
@@ -50,19 +55,34 @@ export class TonWalletService {
|
|
|
50
55
|
const { TonConnect, toUserFriendlyAddress, UserRejectsError } = await import('@tonconnect/sdk');
|
|
51
56
|
this.toUserFriendlyAddress = toUserFriendlyAddress;
|
|
52
57
|
this.UserRejectsError = UserRejectsError;
|
|
58
|
+
this.connectGeneration++;
|
|
59
|
+
const generation = this.connectGeneration;
|
|
53
60
|
this.sdkInstance = new TonConnect({
|
|
54
|
-
storage: new NamespacedStorage(
|
|
61
|
+
storage: new NamespacedStorage(TON_CONNECT_INJECTED_STORAGE_PREFIX),
|
|
55
62
|
manifestUrl: resolvedManifestUrl,
|
|
56
63
|
analytics: { mode: 'off' }
|
|
57
64
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
// ONC-2717: try resuming an existing injected session before falling
|
|
66
|
+
// through to the fresh-handshake path. The wallet decides via its own
|
|
67
|
+
// restoreConnection API whether to silently re-issue the connect event
|
|
68
|
+
// or drop the session — SDK clears its own storage on failure.
|
|
69
|
+
const restored = await tryRestoreInjectedSession({ requestedJsBridgeKey: jsBridgeKey, sdk: this.sdkInstance, generation }, {
|
|
70
|
+
getCurrentGeneration: () => this.connectGeneration,
|
|
71
|
+
setAbortHook: fn => {
|
|
72
|
+
this.abortPendingConnect = fn;
|
|
73
|
+
},
|
|
74
|
+
toUserFriendlyAddressFn: this.toUserFriendlyAddress,
|
|
75
|
+
...(this.onSessionRestored
|
|
76
|
+
? { onSessionRestored: this.onSessionRestored }
|
|
77
|
+
: {})
|
|
78
|
+
});
|
|
79
|
+
if (restored) {
|
|
80
|
+
this.connectedAddress = restored.address;
|
|
81
|
+
this.connectedJsBridgeKey = jsBridgeKey;
|
|
82
|
+
return restored;
|
|
65
83
|
}
|
|
84
|
+
// No prior session matched — proceed with a fresh handshake. The
|
|
85
|
+
// preflight already cleaned up any stale state on jsBridgeKey mismatch.
|
|
66
86
|
// Listen BEFORE connect — sdk.connect() is fire-and-forget
|
|
67
87
|
const sdkRef = this.sdkInstance;
|
|
68
88
|
const walletPromise = new Promise((resolve, reject) => {
|
|
@@ -107,6 +127,7 @@ export class TonWalletService {
|
|
|
107
127
|
});
|
|
108
128
|
this.sdkInstance.connect({ jsBridgeKey });
|
|
109
129
|
const { address, publicKey } = await walletPromise;
|
|
130
|
+
await markSessionEstablished(TON_CONNECT_INJECTED_STORAGE_PREFIX);
|
|
110
131
|
try {
|
|
111
132
|
this.connectedAddress = this.toUserFriendlyAddress
|
|
112
133
|
? toFriendlyAddress(address, this.toUserFriendlyAddress)
|
|
@@ -168,6 +189,8 @@ export class TonWalletService {
|
|
|
168
189
|
this.connectedAddress = address;
|
|
169
190
|
}
|
|
170
191
|
async disconnect() {
|
|
192
|
+
this.abortPendingConnect?.();
|
|
193
|
+
this.abortPendingConnect = null;
|
|
171
194
|
if (this.sdkInstance) {
|
|
172
195
|
try {
|
|
173
196
|
await this.sdkInstance.disconnect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ton-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ton/ton-wallet-service.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ton-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ton/ton-wallet-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../../src/utils/error-utils.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBhE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../../src/utils/error-utils.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkBhE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CA+DhD"}
|
|
@@ -26,6 +26,12 @@ export function extractTonSdkErrorMessage(error) {
|
|
|
26
26
|
* Detects if the error is a user rejection or an unknown error
|
|
27
27
|
*/
|
|
28
28
|
export function parseError(error) {
|
|
29
|
+
// Already-typed connector errors (e.g. the `expired` timeout from
|
|
30
|
+
// withWalletResponseTimeout) must propagate unchanged — re-deriving the
|
|
31
|
+
// type here would downgrade them to 'unknown'.
|
|
32
|
+
if (error instanceof WalletConnectorError) {
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
29
35
|
let message;
|
|
30
36
|
let isRejected = false;
|
|
31
37
|
// Handle different error formats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../../src/utils/error-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,MAAM,GAAG,GACP,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,KAAK;YACH,OAAO,KAAK,KAAK,QAAQ;YACzB,SAAS,IAAI,KAAK;YAClB,OAAQ,KAA8B,CAAC,OAAO,KAAK,QAAQ;YAC7D,CAAC,CAAE,KAA6B,CAAC,OAAO;YACxC,CAAC,CAAC,EAAE,CAAA;IAEV,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;IACtC,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAe,CAAA;IACnB,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,iCAAiC;IACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,KAAY,CAAA;QAE7B,gCAAgC;QAChC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAClE,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,kBAAkB;QAClB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC5B,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,iBAAiB,GAAG;YACxB,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;SACf,CAAA;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QAC1C,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC5C,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC7C,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACzC,OAAO;KACR,CAAA;IAED,MAAM,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAA;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../../src/utils/error-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,MAAM,GAAG,GACP,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,KAAK;YACH,OAAO,KAAK,KAAK,QAAQ;YACzB,SAAS,IAAI,KAAK;YAClB,OAAQ,KAA8B,CAAC,OAAO,KAAK,QAAQ;YAC7D,CAAC,CAAE,KAA6B,CAAC,OAAO;YACxC,CAAC,CAAC,EAAE,CAAA;IAEV,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;IACtC,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,kEAAkE;IAClE,wEAAwE;IACxE,+CAA+C;IAC/C,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,MAAM,KAAK,CAAA;IACb,CAAC;IAED,IAAI,OAAe,CAAA;IACnB,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,iCAAiC;IACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,KAAY,CAAA;QAE7B,gCAAgC;QAChC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAClE,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,kBAAkB;QAClB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC5B,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,iBAAiB,GAAG;YACxB,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;SACf,CAAA;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QAC1C,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC5C,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC7C,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACzC,OAAO;KACR,CAAA;IAED,MAAM,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAA;AAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-injected-connector",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.8-snapshot.75ebef9",
|
|
4
4
|
"description": "Injected connector for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"buffer": "^6.0.3",
|
|
28
28
|
"uuid": "^13.0.0",
|
|
29
29
|
"viem": "^2.44.4",
|
|
30
|
-
"@meshconnect/uwc-bridge-child": "0.2.1",
|
|
31
|
-
"@meshconnect/uwc-constants": "0.6.
|
|
32
|
-
"@meshconnect/uwc-ton-connector": "0.5.
|
|
33
|
-
"@meshconnect/uwc-types": "0.12.
|
|
30
|
+
"@meshconnect/uwc-bridge-child": "0.2.1-snapshot.75ebef9",
|
|
31
|
+
"@meshconnect/uwc-constants": "0.6.1-snapshot.75ebef9",
|
|
32
|
+
"@meshconnect/uwc-ton-connector": "0.5.5-snapshot.75ebef9",
|
|
33
|
+
"@meshconnect/uwc-types": "0.12.1-snapshot.75ebef9"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"typescript": "^5.9.3"
|
|
@@ -55,7 +55,10 @@ export class InjectedConnector implements Connector {
|
|
|
55
55
|
this.ethereumService = new EthereumWalletService()
|
|
56
56
|
this.solanaService = new SolanaWalletService(this.storageService)
|
|
57
57
|
this.tronService = new TronWalletService()
|
|
58
|
-
this.tonService = new TonWalletService(
|
|
58
|
+
this.tonService = new TonWalletService(
|
|
59
|
+
this.tonConnectManifestUrl,
|
|
60
|
+
tonConnectConfig?.onSessionRestored
|
|
61
|
+
)
|
|
59
62
|
this.connectionManager = new ConnectionManager(
|
|
60
63
|
this.ethereumService,
|
|
61
64
|
this.solanaService,
|
|
@@ -5,11 +5,14 @@ import type {
|
|
|
5
5
|
SignatureType,
|
|
6
6
|
TonSignDataPayload
|
|
7
7
|
} from '@meshconnect/uwc-types'
|
|
8
|
+
import { WalletConnectorError } from '@meshconnect/uwc-types'
|
|
8
9
|
import {
|
|
9
10
|
buildSignDataPayload,
|
|
10
11
|
executeSignData,
|
|
11
12
|
unwrapBoc,
|
|
12
|
-
bocToHash
|
|
13
|
+
bocToHash,
|
|
14
|
+
TON_CONNECT_INJECTED_STORAGE_PREFIX,
|
|
15
|
+
withWalletResponseTimeout
|
|
13
16
|
} from '@meshconnect/uwc-ton-connector'
|
|
14
17
|
import { extractTonSdkErrorMessage, parseError } from '../../utils/error-utils'
|
|
15
18
|
import { TonTransactionBuilder } from './ton-transaction-builder'
|
|
@@ -37,7 +40,10 @@ export class TonTransactionService {
|
|
|
37
40
|
request,
|
|
38
41
|
sdk.account?.address
|
|
39
42
|
)
|
|
40
|
-
const result = await
|
|
43
|
+
const result = await withWalletResponseTimeout(
|
|
44
|
+
sdk.sendTransaction(txRequest),
|
|
45
|
+
TON_CONNECT_INJECTED_STORAGE_PREFIX
|
|
46
|
+
)
|
|
41
47
|
const boc = unwrapBoc(result)
|
|
42
48
|
return await bocToHash(boc)
|
|
43
49
|
} catch (error) {
|
|
@@ -62,7 +68,10 @@ export class TonTransactionService {
|
|
|
62
68
|
|
|
63
69
|
try {
|
|
64
70
|
const payload = buildSignDataPayload(message, payloadOverride)
|
|
65
|
-
return await
|
|
71
|
+
return await withWalletResponseTimeout(
|
|
72
|
+
executeSignData(sdk, payload),
|
|
73
|
+
TON_CONNECT_INJECTED_STORAGE_PREFIX
|
|
74
|
+
)
|
|
66
75
|
} catch (error) {
|
|
67
76
|
this.toWalletError(error, UserRejectsError)
|
|
68
77
|
}
|
|
@@ -72,6 +81,12 @@ export class TonTransactionService {
|
|
|
72
81
|
error: unknown,
|
|
73
82
|
UserRejectsError?: (new (...args: never[]) => Error) | null
|
|
74
83
|
): never {
|
|
84
|
+
// Already-typed connector errors (e.g. the `expired` timeout from
|
|
85
|
+
// withWalletResponseTimeout) must propagate unchanged — the
|
|
86
|
+
// `{ code, message }` normalization below would downgrade them.
|
|
87
|
+
if (error instanceof WalletConnectorError) {
|
|
88
|
+
throw error
|
|
89
|
+
}
|
|
75
90
|
const isRejected =
|
|
76
91
|
UserRejectsError != null && error instanceof UserRejectsError
|
|
77
92
|
const message =
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
|
2
2
|
|
|
3
3
|
const {
|
|
4
4
|
mockConnect,
|
|
5
5
|
mockDisconnect,
|
|
6
6
|
mockOnStatusChange,
|
|
7
|
+
mockRestoreConnection,
|
|
7
8
|
mockSendTransaction,
|
|
8
9
|
mockSignData,
|
|
9
10
|
MockTonConnect,
|
|
@@ -13,6 +14,7 @@ const {
|
|
|
13
14
|
const mockConnect = vi.fn()
|
|
14
15
|
const mockDisconnect = vi.fn()
|
|
15
16
|
const mockOnStatusChange = vi.fn()
|
|
17
|
+
const mockRestoreConnection = vi.fn()
|
|
16
18
|
const mockSendTransaction = vi.fn()
|
|
17
19
|
const mockSignData = vi.fn()
|
|
18
20
|
|
|
@@ -32,6 +34,7 @@ const {
|
|
|
32
34
|
connect = mockConnect
|
|
33
35
|
disconnect = mockDisconnect
|
|
34
36
|
onStatusChange = mockOnStatusChange
|
|
37
|
+
restoreConnection = mockRestoreConnection
|
|
35
38
|
sendTransaction = mockSendTransaction
|
|
36
39
|
signData = mockSignData
|
|
37
40
|
__options: any
|
|
@@ -45,6 +48,7 @@ const {
|
|
|
45
48
|
mockConnect,
|
|
46
49
|
mockDisconnect,
|
|
47
50
|
mockOnStatusChange,
|
|
51
|
+
mockRestoreConnection,
|
|
48
52
|
mockSendTransaction,
|
|
49
53
|
mockSignData,
|
|
50
54
|
MockTonConnect,
|
|
@@ -71,6 +75,7 @@ vi.mock('@meshconnect/uwc-ton-connector', async () => {
|
|
|
71
75
|
})
|
|
72
76
|
|
|
73
77
|
import { TonWalletService } from './ton-wallet-service'
|
|
78
|
+
import { WALLET_RESPONSE_TIMEOUT_MS } from '@meshconnect/uwc-ton-connector'
|
|
74
79
|
|
|
75
80
|
async function connectService(
|
|
76
81
|
svc: TonWalletService
|
|
@@ -91,9 +96,18 @@ describe('TonWalletService', () => {
|
|
|
91
96
|
|
|
92
97
|
beforeEach(() => {
|
|
93
98
|
vi.clearAllMocks()
|
|
99
|
+
localStorage.clear()
|
|
100
|
+
// Default: restoreConnection is a no-op resolve. Individual tests can
|
|
101
|
+
// override to simulate a wallet that emits a wallet on restore.
|
|
102
|
+
mockRestoreConnection.mockResolvedValue(undefined)
|
|
94
103
|
service = new TonWalletService('https://example.com/manifest.json')
|
|
95
104
|
})
|
|
96
105
|
|
|
106
|
+
afterEach(() => {
|
|
107
|
+
// Some tests switch to fake timers; never let that leak into the next test.
|
|
108
|
+
vi.useRealTimers()
|
|
109
|
+
})
|
|
110
|
+
|
|
97
111
|
describe('connect', () => {
|
|
98
112
|
it('sets up onStatusChange listener before calling sdk.connect', async () => {
|
|
99
113
|
const callOrder: string[] = []
|
|
@@ -270,9 +284,96 @@ describe('TonWalletService', () => {
|
|
|
270
284
|
expect(mockDisconnect).toHaveBeenCalled()
|
|
271
285
|
})
|
|
272
286
|
|
|
273
|
-
it('
|
|
274
|
-
|
|
275
|
-
|
|
287
|
+
it('invokes onSessionRestored when restoration succeeds', async () => {
|
|
288
|
+
localStorage.setItem(
|
|
289
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection',
|
|
290
|
+
JSON.stringify({
|
|
291
|
+
type: 'injected',
|
|
292
|
+
jsBridgeKey: 'tonkeeper',
|
|
293
|
+
nextRpcRequestId: 0
|
|
294
|
+
})
|
|
295
|
+
)
|
|
296
|
+
localStorage.setItem(
|
|
297
|
+
'uwc-ton-injected:mesh-ton-session-established-at',
|
|
298
|
+
String(Date.now())
|
|
299
|
+
)
|
|
300
|
+
mockRestoreConnection.mockResolvedValue(undefined)
|
|
301
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
302
|
+
queueMicrotask(() => callback({ account: { address: '0:abc' } }))
|
|
303
|
+
return vi.fn()
|
|
304
|
+
})
|
|
305
|
+
|
|
306
|
+
const onSessionRestored = vi.fn()
|
|
307
|
+
const restoringService = new TonWalletService(
|
|
308
|
+
'https://example.com/manifest.json',
|
|
309
|
+
onSessionRestored
|
|
310
|
+
)
|
|
311
|
+
await restoringService.connect('tonkeeper')
|
|
312
|
+
|
|
313
|
+
expect(onSessionRestored).toHaveBeenCalledTimes(1)
|
|
314
|
+
})
|
|
315
|
+
|
|
316
|
+
it('does not invoke onSessionRestored on a fresh handshake', async () => {
|
|
317
|
+
const onSessionRestored = vi.fn()
|
|
318
|
+
const freshService = new TonWalletService(
|
|
319
|
+
'https://example.com/manifest.json',
|
|
320
|
+
onSessionRestored
|
|
321
|
+
)
|
|
322
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
323
|
+
setTimeout(() => {
|
|
324
|
+
callback({ account: { address: 'UQBfresh' } })
|
|
325
|
+
}, 10)
|
|
326
|
+
return vi.fn()
|
|
327
|
+
})
|
|
328
|
+
mockConnect.mockResolvedValue(undefined)
|
|
329
|
+
|
|
330
|
+
await freshService.connect('tonkeeper')
|
|
331
|
+
|
|
332
|
+
expect(onSessionRestored).not.toHaveBeenCalled()
|
|
333
|
+
})
|
|
334
|
+
|
|
335
|
+
it('restores from storage without prompting when an injected session matches the requested jsBridgeKey', async () => {
|
|
336
|
+
// Seed a prior injected session in the same namespace the service uses.
|
|
337
|
+
localStorage.setItem(
|
|
338
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection',
|
|
339
|
+
JSON.stringify({
|
|
340
|
+
type: 'injected',
|
|
341
|
+
jsBridgeKey: 'tonkeeper',
|
|
342
|
+
nextRpcRequestId: 0
|
|
343
|
+
})
|
|
344
|
+
)
|
|
345
|
+
localStorage.setItem(
|
|
346
|
+
'uwc-ton-injected:mesh-ton-session-established-at',
|
|
347
|
+
String(Date.now())
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
mockRestoreConnection.mockImplementation(() => Promise.resolve())
|
|
351
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
352
|
+
queueMicrotask(() =>
|
|
353
|
+
callback({ account: { address: '0:restoredHex' } })
|
|
354
|
+
)
|
|
355
|
+
return vi.fn()
|
|
356
|
+
})
|
|
357
|
+
|
|
358
|
+
const result = await service.connect('tonkeeper')
|
|
359
|
+
|
|
360
|
+
expect(result.address).toBe('UQ_converted_restored')
|
|
361
|
+
expect(mockRestoreConnection).toHaveBeenCalledTimes(1)
|
|
362
|
+
// Fresh handshake must NOT run when restore succeeds.
|
|
363
|
+
expect(mockConnect).not.toHaveBeenCalled()
|
|
364
|
+
})
|
|
365
|
+
|
|
366
|
+
it('falls through to fresh connect when stored session targets a different wallet', async () => {
|
|
367
|
+
const storageKey =
|
|
368
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection'
|
|
369
|
+
localStorage.setItem(
|
|
370
|
+
storageKey,
|
|
371
|
+
JSON.stringify({
|
|
372
|
+
type: 'injected',
|
|
373
|
+
jsBridgeKey: 'mytonwallet',
|
|
374
|
+
nextRpcRequestId: 0
|
|
375
|
+
})
|
|
376
|
+
)
|
|
276
377
|
|
|
277
378
|
mockOnStatusChange.mockImplementation(callback => {
|
|
278
379
|
setTimeout(() => {
|
|
@@ -283,10 +384,65 @@ describe('TonWalletService', () => {
|
|
|
283
384
|
mockConnect.mockResolvedValue(undefined)
|
|
284
385
|
|
|
285
386
|
const result = await service.connect('tonkeeper')
|
|
387
|
+
|
|
286
388
|
expect(result.address).toBe('UQBfresh')
|
|
287
|
-
|
|
389
|
+
// Preflight wipes the stale session (directly, without calling
|
|
390
|
+
// sdk.disconnect — which would throw on a fresh SDK) and the fresh
|
|
391
|
+
// handshake runs.
|
|
392
|
+
expect(localStorage.getItem(storageKey)).toBeNull()
|
|
393
|
+
expect(mockDisconnect).not.toHaveBeenCalled()
|
|
394
|
+
expect(mockConnect).toHaveBeenCalled()
|
|
395
|
+
})
|
|
396
|
+
|
|
397
|
+
it('falls through to fresh connect when the stored session is older than the TTL', async () => {
|
|
398
|
+
const SEVEN_DAYS_MS = 7 * 24 * 60 * 60 * 1000
|
|
399
|
+
const storageKey =
|
|
400
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection'
|
|
401
|
+
const tsKey = 'uwc-ton-injected:mesh-ton-session-established-at'
|
|
402
|
+
const staleTs = Date.now() - SEVEN_DAYS_MS - 1
|
|
403
|
+
localStorage.setItem(
|
|
404
|
+
storageKey,
|
|
405
|
+
JSON.stringify({
|
|
406
|
+
type: 'injected',
|
|
407
|
+
jsBridgeKey: 'tonkeeper',
|
|
408
|
+
nextRpcRequestId: 0
|
|
409
|
+
})
|
|
410
|
+
)
|
|
411
|
+
localStorage.setItem(tsKey, String(staleTs))
|
|
288
412
|
|
|
289
|
-
|
|
413
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
414
|
+
setTimeout(() => callback({ account: { address: 'UQBfresh' } }), 10)
|
|
415
|
+
return vi.fn()
|
|
416
|
+
})
|
|
417
|
+
mockConnect.mockResolvedValue(undefined)
|
|
418
|
+
|
|
419
|
+
const result = await service.connect('tonkeeper')
|
|
420
|
+
|
|
421
|
+
expect(result.address).toBe('UQBfresh')
|
|
422
|
+
// Stale storage was cleared by the preflight; mockConnect ran the
|
|
423
|
+
// fresh handshake; the new fresh connect then wrote a refreshed
|
|
424
|
+
// timestamp (verified separately in the next test).
|
|
425
|
+
expect(mockConnect).toHaveBeenCalled()
|
|
426
|
+
expect(Number(localStorage.getItem(tsKey))).toBeGreaterThan(staleTs)
|
|
427
|
+
})
|
|
428
|
+
|
|
429
|
+
it('writes the session-established timestamp after a fresh handshake succeeds', async () => {
|
|
430
|
+
const tsKey = 'uwc-ton-injected:mesh-ton-session-established-at'
|
|
431
|
+
expect(localStorage.getItem(tsKey)).toBeNull()
|
|
432
|
+
|
|
433
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
434
|
+
setTimeout(() => callback({ account: { address: 'UQBfresh' } }), 10)
|
|
435
|
+
return vi.fn()
|
|
436
|
+
})
|
|
437
|
+
mockConnect.mockResolvedValue(undefined)
|
|
438
|
+
|
|
439
|
+
const before = Date.now()
|
|
440
|
+
await service.connect('tonkeeper')
|
|
441
|
+
const after = Date.now()
|
|
442
|
+
|
|
443
|
+
const written = Number(localStorage.getItem(tsKey))
|
|
444
|
+
expect(written).toBeGreaterThanOrEqual(before)
|
|
445
|
+
expect(written).toBeLessThanOrEqual(after)
|
|
290
446
|
})
|
|
291
447
|
|
|
292
448
|
it('ignores late timeout after successful connection (settled guard)', async () => {
|
|
@@ -389,6 +545,35 @@ describe('TonWalletService', () => {
|
|
|
389
545
|
expect(mockSendTransaction).toHaveBeenCalled()
|
|
390
546
|
expect(result).toBe('hash_of_te6cckEBAQEA...')
|
|
391
547
|
})
|
|
548
|
+
|
|
549
|
+
it('throws expired and clears the session when the wallet never responds', async () => {
|
|
550
|
+
await connectService(service)
|
|
551
|
+
const storageKey =
|
|
552
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection'
|
|
553
|
+
const tsKey = 'uwc-ton-injected:mesh-ton-session-established-at'
|
|
554
|
+
localStorage.setItem(storageKey, '{"type":"injected"}')
|
|
555
|
+
localStorage.setItem(tsKey, String(Date.now()))
|
|
556
|
+
|
|
557
|
+
// Session evicted mid-flight — the bridge request never resolves.
|
|
558
|
+
mockSendTransaction.mockReturnValue(new Promise<never>(() => undefined))
|
|
559
|
+
|
|
560
|
+
vi.useFakeTimers()
|
|
561
|
+
const captured = service
|
|
562
|
+
.sendTransaction({
|
|
563
|
+
to: 'UQBxyz',
|
|
564
|
+
amount: '1000000000',
|
|
565
|
+
from: 'UQBabc'
|
|
566
|
+
})
|
|
567
|
+
.catch((e: unknown) => e)
|
|
568
|
+
await vi.advanceTimersByTimeAsync(WALLET_RESPONSE_TIMEOUT_MS)
|
|
569
|
+
const error = (await captured) as { name?: string; type?: string }
|
|
570
|
+
vi.useRealTimers()
|
|
571
|
+
|
|
572
|
+
expect(error.name).toBe('WalletConnectorError')
|
|
573
|
+
expect(error.type).toBe('expired')
|
|
574
|
+
expect(localStorage.getItem(storageKey)).toBeNull()
|
|
575
|
+
expect(localStorage.getItem(tsKey)).toBeNull()
|
|
576
|
+
})
|
|
392
577
|
})
|
|
393
578
|
|
|
394
579
|
describe('signMessage', () => {
|
|
@@ -10,7 +10,10 @@ import type {
|
|
|
10
10
|
} from '@meshconnect/uwc-types'
|
|
11
11
|
import {
|
|
12
12
|
NamespacedStorage,
|
|
13
|
-
|
|
13
|
+
TON_CONNECT_INJECTED_STORAGE_PREFIX,
|
|
14
|
+
markSessionEstablished,
|
|
15
|
+
toFriendlyAddress,
|
|
16
|
+
tryRestoreInjectedSession
|
|
14
17
|
} from '@meshconnect/uwc-ton-connector'
|
|
15
18
|
import { getTonWallets, type DetectedTonWallet } from '../../ton-discovery'
|
|
16
19
|
import { extractTonSdkErrorMessage } from '../../utils/error-utils'
|
|
@@ -29,14 +32,22 @@ export class TonWalletService {
|
|
|
29
32
|
private connectedJsBridgeKey: string | null = null
|
|
30
33
|
private sdkInstance: TonConnect | null = null
|
|
31
34
|
private manifestUrl: string | (() => string) | undefined
|
|
35
|
+
private onSessionRestored: (() => void) | undefined
|
|
32
36
|
private toUserFriendlyAddress:
|
|
33
37
|
| ((hex: string, testOnly?: boolean) => string)
|
|
34
38
|
| null = null
|
|
35
39
|
private UserRejectsError: (new (...args: never[]) => Error) | null = null
|
|
36
40
|
private transactionService: TonTransactionService
|
|
41
|
+
// ONC-2717 restore preflight bookkeeping — mirrors TonConnectConnector.
|
|
42
|
+
private abortPendingConnect: (() => void) | null = null
|
|
43
|
+
private connectGeneration = 0
|
|
37
44
|
|
|
38
|
-
constructor(
|
|
45
|
+
constructor(
|
|
46
|
+
manifestUrl?: string | (() => string),
|
|
47
|
+
onSessionRestored?: () => void
|
|
48
|
+
) {
|
|
39
49
|
this.manifestUrl = manifestUrl
|
|
50
|
+
this.onSessionRestored = onSessionRestored
|
|
40
51
|
this.transactionService = new TonTransactionService()
|
|
41
52
|
}
|
|
42
53
|
|
|
@@ -85,20 +96,40 @@ export class TonWalletService {
|
|
|
85
96
|
this.toUserFriendlyAddress = toUserFriendlyAddress
|
|
86
97
|
this.UserRejectsError = UserRejectsError
|
|
87
98
|
|
|
99
|
+
this.connectGeneration++
|
|
100
|
+
const generation = this.connectGeneration
|
|
101
|
+
|
|
88
102
|
this.sdkInstance = new TonConnect({
|
|
89
|
-
storage: new NamespacedStorage(
|
|
103
|
+
storage: new NamespacedStorage(TON_CONNECT_INJECTED_STORAGE_PREFIX),
|
|
90
104
|
manifestUrl: resolvedManifestUrl,
|
|
91
105
|
analytics: { mode: 'off' }
|
|
92
106
|
})
|
|
93
107
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
// ONC-2717: try resuming an existing injected session before falling
|
|
109
|
+
// through to the fresh-handshake path. The wallet decides via its own
|
|
110
|
+
// restoreConnection API whether to silently re-issue the connect event
|
|
111
|
+
// or drop the session — SDK clears its own storage on failure.
|
|
112
|
+
const restored = await tryRestoreInjectedSession(
|
|
113
|
+
{ requestedJsBridgeKey: jsBridgeKey, sdk: this.sdkInstance, generation },
|
|
114
|
+
{
|
|
115
|
+
getCurrentGeneration: () => this.connectGeneration,
|
|
116
|
+
setAbortHook: fn => {
|
|
117
|
+
this.abortPendingConnect = fn
|
|
118
|
+
},
|
|
119
|
+
toUserFriendlyAddressFn: this.toUserFriendlyAddress,
|
|
120
|
+
...(this.onSessionRestored
|
|
121
|
+
? { onSessionRestored: this.onSessionRestored }
|
|
122
|
+
: {})
|
|
99
123
|
}
|
|
124
|
+
)
|
|
125
|
+
if (restored) {
|
|
126
|
+
this.connectedAddress = restored.address
|
|
127
|
+
this.connectedJsBridgeKey = jsBridgeKey
|
|
128
|
+
return restored
|
|
100
129
|
}
|
|
101
130
|
|
|
131
|
+
// No prior session matched — proceed with a fresh handshake. The
|
|
132
|
+
// preflight already cleaned up any stale state on jsBridgeKey mismatch.
|
|
102
133
|
// Listen BEFORE connect — sdk.connect() is fire-and-forget
|
|
103
134
|
const sdkRef = this.sdkInstance
|
|
104
135
|
const walletPromise = new Promise<{ address: string; publicKey?: string }>(
|
|
@@ -148,6 +179,7 @@ export class TonWalletService {
|
|
|
148
179
|
|
|
149
180
|
this.sdkInstance.connect({ jsBridgeKey })
|
|
150
181
|
const { address, publicKey } = await walletPromise
|
|
182
|
+
await markSessionEstablished(TON_CONNECT_INJECTED_STORAGE_PREFIX)
|
|
151
183
|
|
|
152
184
|
try {
|
|
153
185
|
this.connectedAddress = this.toUserFriendlyAddress
|
|
@@ -237,6 +269,8 @@ export class TonWalletService {
|
|
|
237
269
|
}
|
|
238
270
|
|
|
239
271
|
async disconnect(): Promise<void> {
|
|
272
|
+
this.abortPendingConnect?.()
|
|
273
|
+
this.abortPendingConnect = null
|
|
240
274
|
if (this.sdkInstance) {
|
|
241
275
|
try {
|
|
242
276
|
await this.sdkInstance.disconnect()
|
package/src/utils/error-utils.ts
CHANGED
|
@@ -31,6 +31,13 @@ export function extractTonSdkErrorMessage(error: unknown): string {
|
|
|
31
31
|
* Detects if the error is a user rejection or an unknown error
|
|
32
32
|
*/
|
|
33
33
|
export function parseError(error: unknown): never {
|
|
34
|
+
// Already-typed connector errors (e.g. the `expired` timeout from
|
|
35
|
+
// withWalletResponseTimeout) must propagate unchanged — re-deriving the
|
|
36
|
+
// type here would downgrade them to 'unknown'.
|
|
37
|
+
if (error instanceof WalletConnectorError) {
|
|
38
|
+
throw error
|
|
39
|
+
}
|
|
40
|
+
|
|
34
41
|
let message: string
|
|
35
42
|
let isRejected = false
|
|
36
43
|
|