@0xsequence/dapp-client 3.0.0-beta.10 → 3.0.0-beta.11
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/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +11 -0
- package/dist/ChainSessionManager.d.ts +3 -0
- package/dist/ChainSessionManager.d.ts.map +1 -1
- package/dist/ChainSessionManager.js +45 -1
- package/dist/DappTransport.d.ts.map +1 -1
- package/dist/DappTransport.js +1 -2
- package/package.json +5 -5
- package/src/ChainSessionManager.ts +52 -1
- package/src/DappTransport.ts +1 -4
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @0xsequence/dapp-client
|
|
2
2
|
|
|
3
|
+
## 3.0.0-beta.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3.0.0 beta
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @0xsequence/guard@3.0.0-beta.11
|
|
10
|
+
- @0xsequence/relayer@3.0.0-beta.11
|
|
11
|
+
- @0xsequence/wallet-core@3.0.0-beta.11
|
|
12
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.11
|
|
13
|
+
|
|
3
14
|
## 3.0.0-beta.10
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -31,6 +31,7 @@ export declare class ChainSessionManager {
|
|
|
31
31
|
loginMethod: LoginMethod | null;
|
|
32
32
|
userEmail: string | null;
|
|
33
33
|
private guard?;
|
|
34
|
+
private lastSignedCallCache?;
|
|
34
35
|
/**
|
|
35
36
|
* @param chainId The ID of the chain this manager is responsible for.
|
|
36
37
|
* @param keyMachineUrl The URL of the key management service.
|
|
@@ -206,6 +207,8 @@ export declare class ChainSessionManager {
|
|
|
206
207
|
* @private Resets the internal state and clears all persisted session data from storage.
|
|
207
208
|
*/
|
|
208
209
|
private _resetStateAndClearCredentials;
|
|
210
|
+
private _getCachedSignedCall;
|
|
211
|
+
private _fingerprintCalls;
|
|
209
212
|
}
|
|
210
213
|
export {};
|
|
211
214
|
//# sourceMappingURL=ChainSessionManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,OAAO,EAAE,GAAG,EAAqC,MAAM,IAAI,CAAA;AAcjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAWlD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EAEL,4BAA4B,EAC5B,WAAW,EACX,kBAAkB,EAElB,WAAW,EAEX,WAAW,EAKX,SAAS,EAGV,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGpF,UAAU,2BAA2B;IACnC,uBAAuB,EAAE,4BAA4B,CAAA;CACtD;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IAEvD,OAAO,CAAC,cAAc,CAEhB;IAEN,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,eAAe,CAA+B;IAEtD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACzB,SAAS,EAAE,aAAa,GAAG,IAAI,CAAO;IAC7C,OAAO,CAAC,eAAe,CAAiB;IACjC,aAAa,EAAE,OAAO,CAAQ;IACrC,OAAO,CAAC,cAAc,CAAiB;IAChC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAO;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IACtC,OAAO,CAAC,KAAK,CAAC,CAAa;
|
|
1
|
+
{"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export class ChainSessionManager {
|
|
|
31
31
|
loginMethod = null;
|
|
32
32
|
userEmail = null;
|
|
33
33
|
guard;
|
|
34
|
+
lastSignedCallCache;
|
|
34
35
|
/**
|
|
35
36
|
* @param chainId The ID of the chain this manager is responsible for.
|
|
36
37
|
* @param keyMachineUrl The URL of the key management service.
|
|
@@ -612,6 +613,14 @@ export class ChainSessionManager {
|
|
|
612
613
|
}));
|
|
613
614
|
try {
|
|
614
615
|
const signedCall = await this._buildAndSignCalls(callsToSend);
|
|
616
|
+
const fingerprint = this._fingerprintCalls(callsToSend);
|
|
617
|
+
if (fingerprint) {
|
|
618
|
+
this.lastSignedCallCache = {
|
|
619
|
+
fingerprint,
|
|
620
|
+
signedCall,
|
|
621
|
+
createdAtMs: Date.now(),
|
|
622
|
+
};
|
|
623
|
+
}
|
|
615
624
|
const feeOptions = await this.relayer.feeOptions(signedCall.to, this.chainId, callsToSend);
|
|
616
625
|
return feeOptions.options;
|
|
617
626
|
}
|
|
@@ -668,7 +677,7 @@ export class ChainSessionManager {
|
|
|
668
677
|
callsToSend.unshift(transferCall);
|
|
669
678
|
}
|
|
670
679
|
}
|
|
671
|
-
const signedCalls = await this._buildAndSignCalls(callsToSend);
|
|
680
|
+
const signedCalls = this._getCachedSignedCall(callsToSend) ?? (await this._buildAndSignCalls(callsToSend));
|
|
672
681
|
const hash = await this.relayer.relay(signedCalls.to, signedCalls.data, this.chainId);
|
|
673
682
|
const status = await this._waitForTransactionReceipt(hash.opHash, this.chainId);
|
|
674
683
|
if (status.status === 'confirmed') {
|
|
@@ -838,4 +847,39 @@ export class ChainSessionManager {
|
|
|
838
847
|
await this.sequenceStorage.clearExplicitSessions();
|
|
839
848
|
await this.sequenceStorage.clearSessionlessConnection();
|
|
840
849
|
}
|
|
850
|
+
_getCachedSignedCall(calls) {
|
|
851
|
+
if (!this.lastSignedCallCache) {
|
|
852
|
+
return null;
|
|
853
|
+
}
|
|
854
|
+
const ttlMs = 30_000;
|
|
855
|
+
if (Date.now() - this.lastSignedCallCache.createdAtMs > ttlMs) {
|
|
856
|
+
this.lastSignedCallCache = undefined;
|
|
857
|
+
return null;
|
|
858
|
+
}
|
|
859
|
+
const fingerprint = this._fingerprintCalls(calls);
|
|
860
|
+
if (!fingerprint) {
|
|
861
|
+
return null;
|
|
862
|
+
}
|
|
863
|
+
if (fingerprint !== this.lastSignedCallCache.fingerprint) {
|
|
864
|
+
return null;
|
|
865
|
+
}
|
|
866
|
+
return this.lastSignedCallCache.signedCall;
|
|
867
|
+
}
|
|
868
|
+
_fingerprintCalls(calls) {
|
|
869
|
+
try {
|
|
870
|
+
return JSON.stringify(calls.map((call) => ({
|
|
871
|
+
to: call.to,
|
|
872
|
+
value: call.value?.toString() ?? '0',
|
|
873
|
+
data: call.data ?? '0x',
|
|
874
|
+
gasLimit: call.gasLimit?.toString() ?? '0',
|
|
875
|
+
delegateCall: call.delegateCall ?? false,
|
|
876
|
+
onlyFallback: call.onlyFallback ?? false,
|
|
877
|
+
behaviorOnError: call.behaviorOnError ?? 'revert',
|
|
878
|
+
})));
|
|
879
|
+
}
|
|
880
|
+
catch (error) {
|
|
881
|
+
console.warn('ChainSessionManager._fingerprintCalls failed:', error);
|
|
882
|
+
return null;
|
|
883
|
+
}
|
|
884
|
+
}
|
|
841
885
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DappTransport.d.ts","sourceRoot":"","sources":["../src/DappTransport.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EAEd,MAAM,kBAAkB,CAAA;AAgCzB,qBAAa,aAAa;aAqBN,SAAS,EAAE,MAAM;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa;IArB9B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAuB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAGlB,SAAS,EAAE,MAAM,EACxB,IAAI,GAAE,aAAmC,EAClD,gBAAgB,GAAE,gBAAqB,EACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAwC/C,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAEK,WAAW,CAAC,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAC/C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAoDR,qBAAqB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAuBL,mBAAmB,CAAC,SAAS,GAAG,GAAG,EAC9C,UAAU,GAAE,OAAc,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4EnF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgExC,WAAW,IAAI,IAAI;IAgB1B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"DappTransport.d.ts","sourceRoot":"","sources":["../src/DappTransport.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EAEd,MAAM,kBAAkB,CAAA;AAgCzB,qBAAa,aAAa;aAqBN,SAAS,EAAE,MAAM;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa;IArB9B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAuB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAGlB,SAAS,EAAE,MAAM,EACxB,IAAI,GAAE,aAAmC,EAClD,gBAAgB,GAAE,gBAAqB,EACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAwC/C,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAEK,WAAW,CAAC,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAC/C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAoDR,qBAAqB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAuBL,mBAAmB,CAAC,SAAS,GAAG,GAAG,EAC9C,UAAU,GAAE,OAAc,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4EnF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgExC,WAAW,IAAI,IAAI;IAgB1B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,aAAa,CAoCpB;IAED,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;CAGnB"}
|
package/dist/DappTransport.js
CHANGED
|
@@ -318,8 +318,7 @@ export class DappTransport {
|
|
|
318
318
|
if (event.origin !== this.walletOrigin) {
|
|
319
319
|
return;
|
|
320
320
|
}
|
|
321
|
-
|
|
322
|
-
if (!isPotentiallyValidSource && event.data?.type !== MessageType.WALLET_OPENED) {
|
|
321
|
+
if (!this.walletWindow || event.source !== this.walletWindow) {
|
|
323
322
|
return;
|
|
324
323
|
}
|
|
325
324
|
const message = event.data;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsequence/dapp-client",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ox": "^0.9.17",
|
|
28
|
-
"@0xsequence/
|
|
29
|
-
"@0xsequence/
|
|
30
|
-
"@0xsequence/wallet-
|
|
31
|
-
"@0xsequence/
|
|
28
|
+
"@0xsequence/wallet-primitives": "^3.0.0-beta.11",
|
|
29
|
+
"@0xsequence/guard": "^3.0.0-beta.11",
|
|
30
|
+
"@0xsequence/wallet-core": "^3.0.0-beta.11",
|
|
31
|
+
"@0xsequence/relayer": "^3.0.0-beta.11"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "tsc",
|
|
@@ -84,6 +84,11 @@ export class ChainSessionManager {
|
|
|
84
84
|
public loginMethod: LoginMethod | null = null
|
|
85
85
|
public userEmail: string | null = null
|
|
86
86
|
private guard?: GuardConfig
|
|
87
|
+
private lastSignedCallCache?: {
|
|
88
|
+
fingerprint: string
|
|
89
|
+
signedCall: { to: Address.Address; data: Hex.Hex }
|
|
90
|
+
createdAtMs: number
|
|
91
|
+
}
|
|
87
92
|
|
|
88
93
|
/**
|
|
89
94
|
* @param chainId The ID of the chain this manager is responsible for.
|
|
@@ -851,6 +856,14 @@ export class ChainSessionManager {
|
|
|
851
856
|
}))
|
|
852
857
|
try {
|
|
853
858
|
const signedCall = await this._buildAndSignCalls(callsToSend)
|
|
859
|
+
const fingerprint = this._fingerprintCalls(callsToSend)
|
|
860
|
+
if (fingerprint) {
|
|
861
|
+
this.lastSignedCallCache = {
|
|
862
|
+
fingerprint,
|
|
863
|
+
signedCall,
|
|
864
|
+
createdAtMs: Date.now(),
|
|
865
|
+
}
|
|
866
|
+
}
|
|
854
867
|
const feeOptions = await this.relayer.feeOptions(signedCall.to, this.chainId, callsToSend)
|
|
855
868
|
return feeOptions.options
|
|
856
869
|
} catch (err) {
|
|
@@ -907,7 +920,7 @@ export class ChainSessionManager {
|
|
|
907
920
|
callsToSend.unshift(transferCall)
|
|
908
921
|
}
|
|
909
922
|
}
|
|
910
|
-
const signedCalls = await this._buildAndSignCalls(callsToSend)
|
|
923
|
+
const signedCalls = this._getCachedSignedCall(callsToSend) ?? (await this._buildAndSignCalls(callsToSend))
|
|
911
924
|
const hash = await this.relayer.relay(signedCalls.to, signedCalls.data, this.chainId)
|
|
912
925
|
const status = await this._waitForTransactionReceipt(hash.opHash, this.chainId)
|
|
913
926
|
if (status.status === 'confirmed') {
|
|
@@ -1101,4 +1114,42 @@ export class ChainSessionManager {
|
|
|
1101
1114
|
await this.sequenceStorage.clearExplicitSessions()
|
|
1102
1115
|
await this.sequenceStorage.clearSessionlessConnection()
|
|
1103
1116
|
}
|
|
1117
|
+
|
|
1118
|
+
private _getCachedSignedCall(calls: Payload.Call[]): { to: Address.Address; data: Hex.Hex } | null {
|
|
1119
|
+
if (!this.lastSignedCallCache) {
|
|
1120
|
+
return null
|
|
1121
|
+
}
|
|
1122
|
+
const ttlMs = 30_000
|
|
1123
|
+
if (Date.now() - this.lastSignedCallCache.createdAtMs > ttlMs) {
|
|
1124
|
+
this.lastSignedCallCache = undefined
|
|
1125
|
+
return null
|
|
1126
|
+
}
|
|
1127
|
+
const fingerprint = this._fingerprintCalls(calls)
|
|
1128
|
+
if (!fingerprint) {
|
|
1129
|
+
return null
|
|
1130
|
+
}
|
|
1131
|
+
if (fingerprint !== this.lastSignedCallCache.fingerprint) {
|
|
1132
|
+
return null
|
|
1133
|
+
}
|
|
1134
|
+
return this.lastSignedCallCache.signedCall
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
private _fingerprintCalls(calls: Payload.Call[]): string | null {
|
|
1138
|
+
try {
|
|
1139
|
+
return JSON.stringify(
|
|
1140
|
+
calls.map((call) => ({
|
|
1141
|
+
to: call.to,
|
|
1142
|
+
value: call.value?.toString() ?? '0',
|
|
1143
|
+
data: call.data ?? '0x',
|
|
1144
|
+
gasLimit: call.gasLimit?.toString() ?? '0',
|
|
1145
|
+
delegateCall: call.delegateCall ?? false,
|
|
1146
|
+
onlyFallback: call.onlyFallback ?? false,
|
|
1147
|
+
behaviorOnError: call.behaviorOnError ?? 'revert',
|
|
1148
|
+
})),
|
|
1149
|
+
)
|
|
1150
|
+
} catch (error) {
|
|
1151
|
+
console.warn('ChainSessionManager._fingerprintCalls failed:', error)
|
|
1152
|
+
return null
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1104
1155
|
}
|
package/src/DappTransport.ts
CHANGED
|
@@ -378,10 +378,7 @@ export class DappTransport {
|
|
|
378
378
|
return
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
|
|
382
|
-
this.walletWindow && (event.source === this.walletWindow || !this.walletWindow.closed)
|
|
383
|
-
|
|
384
|
-
if (!isPotentiallyValidSource && event.data?.type !== MessageType.WALLET_OPENED) {
|
|
381
|
+
if (!this.walletWindow || event.source !== this.walletWindow) {
|
|
385
382
|
return
|
|
386
383
|
}
|
|
387
384
|
|