@meshconnect/uwc-injected-connector 0.10.7 → 0.10.8-snapshot.16b2139
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-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 +32 -10
- package/dist/services/ton/ton-wallet-service.js.map +1 -1
- package/package.json +5 -5
- package/src/injected-connector.ts +4 -1
- package/src/services/ton/ton-wallet-service.test.ts +97 -6
- package/src/services/ton/ton-wallet-service.ts +40 -8
|
@@ -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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"}
|
|
@@ -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;AAO/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;IAwH7C,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, 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) => {
|
|
@@ -168,6 +188,8 @@ export class TonWalletService {
|
|
|
168
188
|
this.connectedAddress = address;
|
|
169
189
|
}
|
|
170
190
|
async disconnect() {
|
|
191
|
+
this.abortPendingConnect?.();
|
|
192
|
+
this.abortPendingConnect = null;
|
|
171
193
|
if (this.sdkInstance) {
|
|
172
194
|
try {
|
|
173
195
|
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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"}
|
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.16b2139",
|
|
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.16b2139",
|
|
31
|
+
"@meshconnect/uwc-constants": "0.6.1-snapshot.16b2139",
|
|
32
|
+
"@meshconnect/uwc-ton-connector": "0.5.5-snapshot.16b2139",
|
|
33
|
+
"@meshconnect/uwc-types": "0.12.1-snapshot.16b2139"
|
|
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,
|
|
@@ -4,6 +4,7 @@ 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,
|
|
@@ -91,6 +95,10 @@ describe('TonWalletService', () => {
|
|
|
91
95
|
|
|
92
96
|
beforeEach(() => {
|
|
93
97
|
vi.clearAllMocks()
|
|
98
|
+
localStorage.clear()
|
|
99
|
+
// Default: restoreConnection is a no-op resolve. Individual tests can
|
|
100
|
+
// override to simulate a wallet that emits a wallet on restore.
|
|
101
|
+
mockRestoreConnection.mockResolvedValue(undefined)
|
|
94
102
|
service = new TonWalletService('https://example.com/manifest.json')
|
|
95
103
|
})
|
|
96
104
|
|
|
@@ -270,10 +278,37 @@ describe('TonWalletService', () => {
|
|
|
270
278
|
expect(mockDisconnect).toHaveBeenCalled()
|
|
271
279
|
})
|
|
272
280
|
|
|
273
|
-
it('
|
|
274
|
-
|
|
275
|
-
|
|
281
|
+
it('invokes onSessionRestored when restoration succeeds', async () => {
|
|
282
|
+
localStorage.setItem(
|
|
283
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection',
|
|
284
|
+
JSON.stringify({
|
|
285
|
+
type: 'injected',
|
|
286
|
+
jsBridgeKey: 'tonkeeper',
|
|
287
|
+
nextRpcRequestId: 0
|
|
288
|
+
})
|
|
289
|
+
)
|
|
290
|
+
mockRestoreConnection.mockResolvedValue(undefined)
|
|
291
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
292
|
+
queueMicrotask(() => callback({ account: { address: '0:abc' } }))
|
|
293
|
+
return vi.fn()
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
const onSessionRestored = vi.fn()
|
|
297
|
+
const restoringService = new TonWalletService(
|
|
298
|
+
'https://example.com/manifest.json',
|
|
299
|
+
onSessionRestored
|
|
300
|
+
)
|
|
301
|
+
await restoringService.connect('tonkeeper')
|
|
302
|
+
|
|
303
|
+
expect(onSessionRestored).toHaveBeenCalledTimes(1)
|
|
304
|
+
})
|
|
276
305
|
|
|
306
|
+
it('does not invoke onSessionRestored on a fresh handshake', async () => {
|
|
307
|
+
const onSessionRestored = vi.fn()
|
|
308
|
+
const freshService = new TonWalletService(
|
|
309
|
+
'https://example.com/manifest.json',
|
|
310
|
+
onSessionRestored
|
|
311
|
+
)
|
|
277
312
|
mockOnStatusChange.mockImplementation(callback => {
|
|
278
313
|
setTimeout(() => {
|
|
279
314
|
callback({ account: { address: 'UQBfresh' } })
|
|
@@ -282,11 +317,67 @@ describe('TonWalletService', () => {
|
|
|
282
317
|
})
|
|
283
318
|
mockConnect.mockResolvedValue(undefined)
|
|
284
319
|
|
|
320
|
+
await freshService.connect('tonkeeper')
|
|
321
|
+
|
|
322
|
+
expect(onSessionRestored).not.toHaveBeenCalled()
|
|
323
|
+
})
|
|
324
|
+
|
|
325
|
+
it('restores from storage without prompting when an injected session matches the requested jsBridgeKey', async () => {
|
|
326
|
+
// Seed a prior injected session in the same namespace the service uses.
|
|
327
|
+
localStorage.setItem(
|
|
328
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection',
|
|
329
|
+
JSON.stringify({
|
|
330
|
+
type: 'injected',
|
|
331
|
+
jsBridgeKey: 'tonkeeper',
|
|
332
|
+
nextRpcRequestId: 0
|
|
333
|
+
})
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
mockRestoreConnection.mockImplementation(() => Promise.resolve())
|
|
337
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
338
|
+
queueMicrotask(() =>
|
|
339
|
+
callback({ account: { address: '0:restoredHex' } })
|
|
340
|
+
)
|
|
341
|
+
return vi.fn()
|
|
342
|
+
})
|
|
343
|
+
|
|
285
344
|
const result = await service.connect('tonkeeper')
|
|
286
|
-
expect(result.address).toBe('UQBfresh')
|
|
287
|
-
expect(mockDisconnect).toHaveBeenCalled()
|
|
288
345
|
|
|
289
|
-
|
|
346
|
+
expect(result.address).toBe('UQ_converted_restored')
|
|
347
|
+
expect(mockRestoreConnection).toHaveBeenCalledTimes(1)
|
|
348
|
+
// Fresh handshake must NOT run when restore succeeds.
|
|
349
|
+
expect(mockConnect).not.toHaveBeenCalled()
|
|
350
|
+
})
|
|
351
|
+
|
|
352
|
+
it('falls through to fresh connect when stored session targets a different wallet', async () => {
|
|
353
|
+
const storageKey =
|
|
354
|
+
'uwc-ton-injected:ton-connect-storage_bridge-connection'
|
|
355
|
+
localStorage.setItem(
|
|
356
|
+
storageKey,
|
|
357
|
+
JSON.stringify({
|
|
358
|
+
type: 'injected',
|
|
359
|
+
jsBridgeKey: 'mytonwallet',
|
|
360
|
+
nextRpcRequestId: 0
|
|
361
|
+
})
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
mockOnStatusChange.mockImplementation(callback => {
|
|
365
|
+
setTimeout(() => {
|
|
366
|
+
callback({ account: { address: 'UQBfresh' } })
|
|
367
|
+
}, 10)
|
|
368
|
+
return vi.fn()
|
|
369
|
+
})
|
|
370
|
+
mockConnect.mockResolvedValue(undefined)
|
|
371
|
+
|
|
372
|
+
const result = await service.connect('tonkeeper')
|
|
373
|
+
|
|
374
|
+
expect(result.address).toBe('UQBfresh')
|
|
375
|
+
// Preflight wipes the stale session (directly, without calling
|
|
376
|
+
// sdk.disconnect — which would throw on a fresh SDK) and the fresh
|
|
377
|
+
// handshake runs.
|
|
378
|
+
expect(localStorage.getItem(storageKey)).toBeNull()
|
|
379
|
+
expect(mockDisconnect).not.toHaveBeenCalled()
|
|
380
|
+
expect(mockConnect).toHaveBeenCalled()
|
|
290
381
|
})
|
|
291
382
|
|
|
292
383
|
it('ignores late timeout after successful connection (settled guard)', async () => {
|
|
@@ -10,7 +10,9 @@ import type {
|
|
|
10
10
|
} from '@meshconnect/uwc-types'
|
|
11
11
|
import {
|
|
12
12
|
NamespacedStorage,
|
|
13
|
-
|
|
13
|
+
TON_CONNECT_INJECTED_STORAGE_PREFIX,
|
|
14
|
+
toFriendlyAddress,
|
|
15
|
+
tryRestoreInjectedSession
|
|
14
16
|
} from '@meshconnect/uwc-ton-connector'
|
|
15
17
|
import { getTonWallets, type DetectedTonWallet } from '../../ton-discovery'
|
|
16
18
|
import { extractTonSdkErrorMessage } from '../../utils/error-utils'
|
|
@@ -29,14 +31,22 @@ export class TonWalletService {
|
|
|
29
31
|
private connectedJsBridgeKey: string | null = null
|
|
30
32
|
private sdkInstance: TonConnect | null = null
|
|
31
33
|
private manifestUrl: string | (() => string) | undefined
|
|
34
|
+
private onSessionRestored: (() => void) | undefined
|
|
32
35
|
private toUserFriendlyAddress:
|
|
33
36
|
| ((hex: string, testOnly?: boolean) => string)
|
|
34
37
|
| null = null
|
|
35
38
|
private UserRejectsError: (new (...args: never[]) => Error) | null = null
|
|
36
39
|
private transactionService: TonTransactionService
|
|
40
|
+
// ONC-2717 restore preflight bookkeeping — mirrors TonConnectConnector.
|
|
41
|
+
private abortPendingConnect: (() => void) | null = null
|
|
42
|
+
private connectGeneration = 0
|
|
37
43
|
|
|
38
|
-
constructor(
|
|
44
|
+
constructor(
|
|
45
|
+
manifestUrl?: string | (() => string),
|
|
46
|
+
onSessionRestored?: () => void
|
|
47
|
+
) {
|
|
39
48
|
this.manifestUrl = manifestUrl
|
|
49
|
+
this.onSessionRestored = onSessionRestored
|
|
40
50
|
this.transactionService = new TonTransactionService()
|
|
41
51
|
}
|
|
42
52
|
|
|
@@ -85,20 +95,40 @@ export class TonWalletService {
|
|
|
85
95
|
this.toUserFriendlyAddress = toUserFriendlyAddress
|
|
86
96
|
this.UserRejectsError = UserRejectsError
|
|
87
97
|
|
|
98
|
+
this.connectGeneration++
|
|
99
|
+
const generation = this.connectGeneration
|
|
100
|
+
|
|
88
101
|
this.sdkInstance = new TonConnect({
|
|
89
|
-
storage: new NamespacedStorage(
|
|
102
|
+
storage: new NamespacedStorage(TON_CONNECT_INJECTED_STORAGE_PREFIX),
|
|
90
103
|
manifestUrl: resolvedManifestUrl,
|
|
91
104
|
analytics: { mode: 'off' }
|
|
92
105
|
})
|
|
93
106
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
107
|
+
// ONC-2717: try resuming an existing injected session before falling
|
|
108
|
+
// through to the fresh-handshake path. The wallet decides via its own
|
|
109
|
+
// restoreConnection API whether to silently re-issue the connect event
|
|
110
|
+
// or drop the session — SDK clears its own storage on failure.
|
|
111
|
+
const restored = await tryRestoreInjectedSession(
|
|
112
|
+
{ requestedJsBridgeKey: jsBridgeKey, sdk: this.sdkInstance, generation },
|
|
113
|
+
{
|
|
114
|
+
getCurrentGeneration: () => this.connectGeneration,
|
|
115
|
+
setAbortHook: fn => {
|
|
116
|
+
this.abortPendingConnect = fn
|
|
117
|
+
},
|
|
118
|
+
toUserFriendlyAddressFn: this.toUserFriendlyAddress,
|
|
119
|
+
...(this.onSessionRestored
|
|
120
|
+
? { onSessionRestored: this.onSessionRestored }
|
|
121
|
+
: {})
|
|
99
122
|
}
|
|
123
|
+
)
|
|
124
|
+
if (restored) {
|
|
125
|
+
this.connectedAddress = restored.address
|
|
126
|
+
this.connectedJsBridgeKey = jsBridgeKey
|
|
127
|
+
return restored
|
|
100
128
|
}
|
|
101
129
|
|
|
130
|
+
// No prior session matched — proceed with a fresh handshake. The
|
|
131
|
+
// preflight already cleaned up any stale state on jsBridgeKey mismatch.
|
|
102
132
|
// Listen BEFORE connect — sdk.connect() is fire-and-forget
|
|
103
133
|
const sdkRef = this.sdkInstance
|
|
104
134
|
const walletPromise = new Promise<{ address: string; publicKey?: string }>(
|
|
@@ -237,6 +267,8 @@ export class TonWalletService {
|
|
|
237
267
|
}
|
|
238
268
|
|
|
239
269
|
async disconnect(): Promise<void> {
|
|
270
|
+
this.abortPendingConnect?.()
|
|
271
|
+
this.abortPendingConnect = null
|
|
240
272
|
if (this.sdkInstance) {
|
|
241
273
|
try {
|
|
242
274
|
await this.sdkInstance.disconnect()
|