@subwallet/extension-base 1.0.11-2 → 1.0.13-0
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/background/KoniTypes.d.ts +52 -0
- package/background/KoniTypes.js +10 -18
- package/background/handlers/State.d.ts +0 -1
- package/background/handlers/State.js +4 -8
- package/cjs/background/KoniTypes.js +12 -10
- package/cjs/background/handlers/State.js +4 -8
- package/cjs/koni/api/nft/config.js +11 -6
- package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/xTokens.js +2 -2
- package/cjs/koni/background/handlers/Extension.js +150 -1
- package/cjs/koni/background/handlers/State.js +14 -3
- package/cjs/koni/background/handlers/Tabs.js +61 -9
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/Metadata.js +3 -0
- package/cjs/services/chain-service/utils.js +28 -1
- package/cjs/services/migration-service/scripts/MigrateEthProvider.js +32 -0
- package/cjs/services/migration-service/scripts/index.js +12 -10
- package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -9
- package/cjs/services/request-service/handler/SubstrateRequestHandler.js +2 -2
- package/cjs/services/request-service/handler/WalletConnectRequestHandler.js +71 -0
- package/cjs/services/request-service/index.js +24 -6
- package/cjs/services/transaction-service/helpers/index.js +3 -2
- package/cjs/services/transaction-service/index.js +2 -1
- package/cjs/services/wallet-connect-service/constants.js +38 -0
- package/cjs/services/wallet-connect-service/handler/Eip155RequestHandler.js +113 -0
- package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +123 -0
- package/cjs/services/wallet-connect-service/helpers.js +81 -0
- package/cjs/services/wallet-connect-service/index.js +273 -0
- package/cjs/services/wallet-connect-service/types.js +27 -0
- package/cjs/utils/array.js +17 -0
- package/cjs/utils/environment.js +66 -0
- package/cjs/utils/index.js +66 -1
- package/koni/api/nft/config.js +11 -6
- package/koni/api/xcm/polkadotXcm.js +1 -1
- package/koni/api/xcm/xTokens.js +2 -2
- package/koni/background/handlers/Extension.d.ts +6 -0
- package/koni/background/handlers/Extension.js +144 -2
- package/koni/background/handlers/State.d.ts +2 -0
- package/koni/background/handlers/State.js +14 -3
- package/koni/background/handlers/Tabs.d.ts +2 -0
- package/koni/background/handlers/Tabs.js +58 -7
- package/package.json +72 -18
- package/packageInfo.js +1 -1
- package/page/Metadata.d.ts +2 -0
- package/page/Metadata.js +3 -0
- package/services/chain-service/utils.d.ts +2 -0
- package/services/chain-service/utils.js +25 -1
- package/services/migration-service/scripts/MigrateEthProvider.d.ts +4 -0
- package/services/migration-service/scripts/MigrateEthProvider.js +24 -0
- package/services/migration-service/scripts/index.js +12 -10
- package/services/request-service/handler/AuthRequestHandler.d.ts +0 -1
- package/services/request-service/handler/AuthRequestHandler.js +5 -10
- package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -1
- package/services/request-service/handler/SubstrateRequestHandler.js +2 -2
- package/services/request-service/handler/WalletConnectRequestHandler.d.ts +15 -0
- package/services/request-service/handler/WalletConnectRequestHandler.js +62 -0
- package/services/request-service/index.d.ts +7 -2
- package/services/request-service/index.js +24 -6
- package/services/transaction-service/helpers/index.d.ts +1 -1
- package/services/transaction-service/helpers/index.js +2 -2
- package/services/transaction-service/index.js +2 -1
- package/services/transaction-service/types.d.ts +2 -1
- package/services/wallet-connect-service/constants.d.ts +11 -0
- package/services/wallet-connect-service/constants.js +23 -0
- package/services/wallet-connect-service/handler/Eip155RequestHandler.d.ts +8 -0
- package/services/wallet-connect-service/handler/Eip155RequestHandler.js +106 -0
- package/services/wallet-connect-service/handler/PolkadotRequestHandler.d.ts +8 -0
- package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +114 -0
- package/services/wallet-connect-service/helpers.d.ts +12 -0
- package/services/wallet-connect-service/helpers.js +67 -0
- package/services/wallet-connect-service/index.d.ts +20 -0
- package/services/wallet-connect-service/index.js +265 -0
- package/services/wallet-connect-service/types.d.ts +46 -0
- package/services/wallet-connect-service/types.js +20 -0
- package/utils/array.d.ts +1 -0
- package/utils/array.js +10 -0
- package/utils/environment.d.ts +2 -0
- package/utils/environment.js +59 -0
- package/utils/index.d.ts +3 -0
- package/utils/index.js +9 -2
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.0.
|
|
20
|
+
"version": "1.0.13-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -655,6 +655,11 @@
|
|
|
655
655
|
"require": "./cjs/services/migration-service/scripts/MigrateChainPatrol.js",
|
|
656
656
|
"default": "./services/migration-service/scripts/MigrateChainPatrol.js"
|
|
657
657
|
},
|
|
658
|
+
"./services/migration-service/scripts/MigrateEthProvider": {
|
|
659
|
+
"types": "./services/migration-service/scripts/MigrateEthProvider.d.ts",
|
|
660
|
+
"require": "./cjs/services/migration-service/scripts/MigrateEthProvider.js",
|
|
661
|
+
"default": "./services/migration-service/scripts/MigrateEthProvider.js"
|
|
662
|
+
},
|
|
658
663
|
"./services/migration-service/scripts/MigrateImportedToken": {
|
|
659
664
|
"types": "./services/migration-service/scripts/MigrateImportedToken.d.ts",
|
|
660
665
|
"require": "./cjs/services/migration-service/scripts/MigrateImportedToken.js",
|
|
@@ -730,6 +735,11 @@
|
|
|
730
735
|
"require": "./cjs/services/request-service/handler/SubstrateRequestHandler.js",
|
|
731
736
|
"default": "./services/request-service/handler/SubstrateRequestHandler.js"
|
|
732
737
|
},
|
|
738
|
+
"./services/request-service/handler/WalletConnectRequestHandler": {
|
|
739
|
+
"types": "./services/request-service/handler/WalletConnectRequestHandler.d.ts",
|
|
740
|
+
"require": "./cjs/services/request-service/handler/WalletConnectRequestHandler.js",
|
|
741
|
+
"default": "./services/request-service/handler/WalletConnectRequestHandler.js"
|
|
742
|
+
},
|
|
733
743
|
"./services/request-service/helper": {
|
|
734
744
|
"types": "./services/request-service/helper/index.d.ts",
|
|
735
745
|
"require": "./cjs/services/request-service/helper/index.js",
|
|
@@ -895,6 +905,36 @@
|
|
|
895
905
|
"require": "./cjs/services/transaction-service/utils.js",
|
|
896
906
|
"default": "./services/transaction-service/utils.js"
|
|
897
907
|
},
|
|
908
|
+
"./services/wallet-connect-service": {
|
|
909
|
+
"types": "./services/wallet-connect-service/index.d.ts",
|
|
910
|
+
"require": "./cjs/services/wallet-connect-service/index.js",
|
|
911
|
+
"default": "./services/wallet-connect-service/index.js"
|
|
912
|
+
},
|
|
913
|
+
"./services/wallet-connect-service/constants": {
|
|
914
|
+
"types": "./services/wallet-connect-service/constants.d.ts",
|
|
915
|
+
"require": "./cjs/services/wallet-connect-service/constants.js",
|
|
916
|
+
"default": "./services/wallet-connect-service/constants.js"
|
|
917
|
+
},
|
|
918
|
+
"./services/wallet-connect-service/handler/Eip155RequestHandler": {
|
|
919
|
+
"types": "./services/wallet-connect-service/handler/Eip155RequestHandler.d.ts",
|
|
920
|
+
"require": "./cjs/services/wallet-connect-service/handler/Eip155RequestHandler.js",
|
|
921
|
+
"default": "./services/wallet-connect-service/handler/Eip155RequestHandler.js"
|
|
922
|
+
},
|
|
923
|
+
"./services/wallet-connect-service/handler/PolkadotRequestHandler": {
|
|
924
|
+
"types": "./services/wallet-connect-service/handler/PolkadotRequestHandler.d.ts",
|
|
925
|
+
"require": "./cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js",
|
|
926
|
+
"default": "./services/wallet-connect-service/handler/PolkadotRequestHandler.js"
|
|
927
|
+
},
|
|
928
|
+
"./services/wallet-connect-service/helpers": {
|
|
929
|
+
"types": "./services/wallet-connect-service/helpers.d.ts",
|
|
930
|
+
"require": "./cjs/services/wallet-connect-service/helpers.js",
|
|
931
|
+
"default": "./services/wallet-connect-service/helpers.js"
|
|
932
|
+
},
|
|
933
|
+
"./services/wallet-connect-service/types": {
|
|
934
|
+
"types": "./services/wallet-connect-service/types.d.ts",
|
|
935
|
+
"require": "./cjs/services/wallet-connect-service/types.js",
|
|
936
|
+
"default": "./services/wallet-connect-service/types.js"
|
|
937
|
+
},
|
|
898
938
|
"./signers/substrates/KeyringSigner": {
|
|
899
939
|
"types": "./signers/substrates/KeyringSigner.d.ts",
|
|
900
940
|
"require": "./cjs/signers/substrates/KeyringSigner.js",
|
|
@@ -1015,11 +1055,21 @@
|
|
|
1015
1055
|
"require": "./cjs/utils/address.js",
|
|
1016
1056
|
"default": "./utils/address.js"
|
|
1017
1057
|
},
|
|
1058
|
+
"./utils/array": {
|
|
1059
|
+
"types": "./utils/array.d.ts",
|
|
1060
|
+
"require": "./cjs/utils/array.js",
|
|
1061
|
+
"default": "./utils/array.js"
|
|
1062
|
+
},
|
|
1018
1063
|
"./utils/canDerive": {
|
|
1019
1064
|
"types": "./utils/canDerive.d.ts",
|
|
1020
1065
|
"require": "./cjs/utils/canDerive.js",
|
|
1021
1066
|
"default": "./utils/canDerive.js"
|
|
1022
1067
|
},
|
|
1068
|
+
"./utils/environment": {
|
|
1069
|
+
"types": "./utils/environment.d.ts",
|
|
1070
|
+
"require": "./cjs/utils/environment.js",
|
|
1071
|
+
"default": "./utils/environment.js"
|
|
1072
|
+
},
|
|
1023
1073
|
"./utils/eth": {
|
|
1024
1074
|
"types": "./utils/eth.d.ts",
|
|
1025
1075
|
"require": "./cjs/utils/eth.js",
|
|
@@ -1073,32 +1123,36 @@
|
|
|
1073
1123
|
"@ethereumjs/common": "^2.6.5",
|
|
1074
1124
|
"@ethereumjs/tx": "^4.0.2",
|
|
1075
1125
|
"@ethersproject/abi": "^5.7.0",
|
|
1126
|
+
"@json-rpc-tools/utils": "^1.7.6",
|
|
1076
1127
|
"@metamask/safe-event-emitter": "^2.0.0",
|
|
1077
1128
|
"@metaverse-network-sdk/type-definitions": "^0.0.1-13",
|
|
1078
1129
|
"@oak-foundation/types": "^0.0.23",
|
|
1079
|
-
"@polkadot/api": "^10.
|
|
1080
|
-
"@polkadot/api-contract": "^10.
|
|
1081
|
-
"@polkadot/api-derive": "^10.
|
|
1082
|
-
"@polkadot/apps-config": "^0.
|
|
1083
|
-
"@polkadot/hw-ledger": "^12.2
|
|
1084
|
-
"@polkadot/networks": "^12.2
|
|
1130
|
+
"@polkadot/api": "^10.9.1",
|
|
1131
|
+
"@polkadot/api-contract": "^10.9.1",
|
|
1132
|
+
"@polkadot/api-derive": "^10.9.1",
|
|
1133
|
+
"@polkadot/apps-config": "^0.132.1",
|
|
1134
|
+
"@polkadot/hw-ledger": "^12.3.2",
|
|
1135
|
+
"@polkadot/networks": "^12.3.2",
|
|
1085
1136
|
"@polkadot/phishing": "^0.21.5",
|
|
1086
|
-
"@polkadot/rpc-provider": "^10.
|
|
1087
|
-
"@polkadot/types": "^10.
|
|
1088
|
-
"@polkadot/types-augment": "^10.
|
|
1089
|
-
"@polkadot/ui-settings": "^3.
|
|
1090
|
-
"@polkadot/util": "^12.2
|
|
1091
|
-
"@polkadot/util-crypto": "^12.2
|
|
1137
|
+
"@polkadot/rpc-provider": "^10.9.1",
|
|
1138
|
+
"@polkadot/types": "^10.9.1",
|
|
1139
|
+
"@polkadot/types-augment": "^10.9.1",
|
|
1140
|
+
"@polkadot/ui-settings": "^3.5.1",
|
|
1141
|
+
"@polkadot/util": "^12.3.2",
|
|
1142
|
+
"@polkadot/util-crypto": "^12.3.2",
|
|
1092
1143
|
"@reduxjs/toolkit": "^1.9.1",
|
|
1093
1144
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
1094
1145
|
"@substrate/connect": "^0.7.26",
|
|
1095
|
-
"@subwallet/chain-list": "^0.2.
|
|
1096
|
-
"@subwallet/extension-base": "^1.0.
|
|
1097
|
-
"@subwallet/extension-chains": "^1.0.
|
|
1098
|
-
"@subwallet/extension-dapp": "^1.0.
|
|
1099
|
-
"@subwallet/extension-inject": "^1.0.
|
|
1146
|
+
"@subwallet/chain-list": "^0.2.4",
|
|
1147
|
+
"@subwallet/extension-base": "^1.0.13-0",
|
|
1148
|
+
"@subwallet/extension-chains": "^1.0.13-0",
|
|
1149
|
+
"@subwallet/extension-dapp": "^1.0.13-0",
|
|
1150
|
+
"@subwallet/extension-inject": "^1.0.13-0",
|
|
1100
1151
|
"@subwallet/keyring": "^0.0.10",
|
|
1101
1152
|
"@subwallet/ui-keyring": "^0.0.10",
|
|
1153
|
+
"@walletconnect/sign-client": "^2.8.4",
|
|
1154
|
+
"@walletconnect/types": "^2.8.4",
|
|
1155
|
+
"@walletconnect/utils": "^2.8.4",
|
|
1102
1156
|
"axios": "^1.2.1",
|
|
1103
1157
|
"bignumber.js": "^9.1.1",
|
|
1104
1158
|
"bn.js": "^5.2.1",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.0.
|
|
10
|
+
version: '1.0.13-0'
|
|
11
11
|
};
|
package/page/Metadata.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { InjectedMetadata, InjectedMetadataKnown, MetadataDef } from '@subwallet/extension-inject/types';
|
|
2
2
|
import type { SendRequest } from './types';
|
|
3
|
+
import { RequestAddPspToken } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
4
|
export default class Metadata implements InjectedMetadata {
|
|
4
5
|
constructor(_sendRequest: SendRequest);
|
|
5
6
|
get(): Promise<InjectedMetadataKnown[]>;
|
|
6
7
|
provide(definition: MetadataDef): Promise<boolean>;
|
|
8
|
+
addToken(request: RequestAddPspToken): Promise<boolean>;
|
|
7
9
|
}
|
package/page/Metadata.js
CHANGED
|
@@ -63,3 +63,5 @@ export declare function _isAssetFungibleToken(chainAsset: _ChainAsset): boolean;
|
|
|
63
63
|
export declare function _getCrowdloanUrlFromChain(chainInfo: _ChainInfo): string;
|
|
64
64
|
export declare function _isCustomProvider(providerKey: string): boolean;
|
|
65
65
|
export declare function _generateCustomProviderKey(index: number): string;
|
|
66
|
+
export declare const findChainInfoByHalfGenesisHash: (chainMap: Record<string, _ChainInfo>, halfGenesisHash?: string) => _ChainInfo | null;
|
|
67
|
+
export declare const findChainInfoByChainId: (chainMap: Record<string, _ChainInfo>, chainId?: number) => _ChainInfo | null;
|
|
@@ -330,4 +330,28 @@ export function _isCustomProvider(providerKey) {
|
|
|
330
330
|
}
|
|
331
331
|
export function _generateCustomProviderKey(index) {
|
|
332
332
|
return `${_CUSTOM_PREFIX}provider-${index}`;
|
|
333
|
-
}
|
|
333
|
+
}
|
|
334
|
+
export const findChainInfoByHalfGenesisHash = (chainMap, halfGenesisHash) => {
|
|
335
|
+
if (!halfGenesisHash) {
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
for (const chainInfo of Object.values(chainMap)) {
|
|
339
|
+
var _getSubstrateGenesisH;
|
|
340
|
+
if (((_getSubstrateGenesisH = _getSubstrateGenesisHash(chainInfo)) === null || _getSubstrateGenesisH === void 0 ? void 0 : _getSubstrateGenesisH.toLowerCase().substring(2, 2 + 32)) === halfGenesisHash.toLowerCase()) {
|
|
341
|
+
return chainInfo;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return null;
|
|
345
|
+
};
|
|
346
|
+
export const findChainInfoByChainId = (chainMap, chainId) => {
|
|
347
|
+
if (!chainId) {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
for (const chainInfo of Object.values(chainMap)) {
|
|
351
|
+
var _chainInfo$evmInfo5;
|
|
352
|
+
if (((_chainInfo$evmInfo5 = chainInfo.evmInfo) === null || _chainInfo$evmInfo5 === void 0 ? void 0 : _chainInfo$evmInfo5.evmChainId) === chainId) {
|
|
353
|
+
return chainInfo;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return null;
|
|
357
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
|
|
5
|
+
export default class MigrateEthProvider extends BaseMigrationJob {
|
|
6
|
+
async run() {
|
|
7
|
+
const state = this.state;
|
|
8
|
+
const slug = 'ethereum';
|
|
9
|
+
const oldProvider = 'Cloudflare';
|
|
10
|
+
const newProvider = 'Llamarpc';
|
|
11
|
+
const chainState = state.getChainStateByKey(slug);
|
|
12
|
+
const chainInfo = state.getChainInfo(slug);
|
|
13
|
+
if (chainState.active && chainState.currentProvider === oldProvider) {
|
|
14
|
+
await state.upsertChainInfo({
|
|
15
|
+
mode: 'update',
|
|
16
|
+
chainEditInfo: {
|
|
17
|
+
currentProvider: newProvider,
|
|
18
|
+
slug: slug,
|
|
19
|
+
providers: chainInfo.providers
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import AutoEnableChainsTokens from
|
|
5
|
-
import MigrateAuthUrls from
|
|
6
|
-
import MigrateAutoLock from
|
|
7
|
-
import MigrateChainPatrol from
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
4
|
+
import AutoEnableChainsTokens from "./AutoEnableChainsTokens.js";
|
|
5
|
+
import MigrateAuthUrls from "./MigrateAuthUrls.js";
|
|
6
|
+
import MigrateAutoLock from "./MigrateAutoLock.js";
|
|
7
|
+
import MigrateChainPatrol from "./MigrateChainPatrol.js";
|
|
8
|
+
import MigrateEthProvider from "./MigrateEthProvider.js";
|
|
9
|
+
import MigrateImportedToken from "./MigrateImportedToken.js";
|
|
10
|
+
import MigrateLedgerAccount from "./MigrateLedgerAccount.js";
|
|
11
|
+
import MigrateNetworkSettings from "./MigrateNetworkSettings.js";
|
|
12
|
+
import MigrateSettings from "./MigrateSettings.js";
|
|
13
|
+
import MigrateTransactionHistory from "./MigrateTransactionHistory.js";
|
|
13
14
|
export const EVERYTIME = '__everytime__';
|
|
14
15
|
export default {
|
|
15
16
|
'1.0.1-11': MigrateNetworkSettings,
|
|
@@ -20,6 +21,7 @@ export default {
|
|
|
20
21
|
'1.0.1-60': MigrateAuthUrls,
|
|
21
22
|
'1.0.3-01': MigrateAutoLock,
|
|
22
23
|
'1.0.3-02': MigrateChainPatrol,
|
|
23
|
-
'1.0.9-01': MigrateLedgerAccount
|
|
24
|
+
'1.0.9-01': MigrateLedgerAccount,
|
|
25
|
+
'1.0.12-02': MigrateEthProvider
|
|
24
26
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
25
27
|
};
|
|
@@ -15,7 +15,6 @@ export default class AuthRequestHandler {
|
|
|
15
15
|
private readonly evmChainSubject;
|
|
16
16
|
readonly authSubjectV2: BehaviorSubject<AuthorizeRequest[]>;
|
|
17
17
|
constructor(requestService: RequestService, chainService: ChainService, keyringService: KeyringService);
|
|
18
|
-
stripUrl(url: string): string;
|
|
19
18
|
private getAddressList;
|
|
20
19
|
get numAuthRequestsV2(): number;
|
|
21
20
|
private get allAuthRequestsV2();
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
|
|
5
5
|
import { PREDEFINED_CHAIN_DAPP_CHAIN_MAP } from '@subwallet/extension-base/services/request-service/constants';
|
|
6
6
|
import AuthorizeStore from '@subwallet/extension-base/stores/Authorize';
|
|
7
|
-
import { getDomainFromUrl } from '@subwallet/extension-base/utils';
|
|
7
|
+
import { getDomainFromUrl, stripUrl } from '@subwallet/extension-base/utils';
|
|
8
8
|
import { getId } from '@subwallet/extension-base/utils/getId';
|
|
9
9
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
10
10
|
import { assert } from '@polkadot/util';
|
|
@@ -24,11 +24,6 @@ export default class AuthRequestHandler {
|
|
|
24
24
|
this.#requestService = requestService;
|
|
25
25
|
this.#chainService = chainService;
|
|
26
26
|
}
|
|
27
|
-
stripUrl(url) {
|
|
28
|
-
assert(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), `Invalid url ${url}, expected to start with http: or https: or ipfs: or ipns:`);
|
|
29
|
-
const parts = url.split('/');
|
|
30
|
-
return parts[2];
|
|
31
|
-
}
|
|
32
27
|
getAddressList(value = false) {
|
|
33
28
|
const addressList = Object.keys(this.keyringService.accounts);
|
|
34
29
|
return addressList.reduce((addressList, v) => ({
|
|
@@ -161,7 +156,7 @@ export default class AuthRequestHandler {
|
|
|
161
156
|
if (value) {
|
|
162
157
|
authorizeList = value;
|
|
163
158
|
}
|
|
164
|
-
const existed = authorizeList[
|
|
159
|
+
const existed = authorizeList[stripUrl(url)];
|
|
165
160
|
|
|
166
161
|
// On cancel don't save anything
|
|
167
162
|
if (isCancelled) {
|
|
@@ -170,7 +165,7 @@ export default class AuthRequestHandler {
|
|
|
170
165
|
cb();
|
|
171
166
|
return;
|
|
172
167
|
}
|
|
173
|
-
authorizeList[
|
|
168
|
+
authorizeList[stripUrl(url)] = {
|
|
174
169
|
count: 0,
|
|
175
170
|
id: idStr,
|
|
176
171
|
isAllowed,
|
|
@@ -210,7 +205,7 @@ export default class AuthRequestHandler {
|
|
|
210
205
|
if (!authList) {
|
|
211
206
|
authList = {};
|
|
212
207
|
}
|
|
213
|
-
const idStr =
|
|
208
|
+
const idStr = stripUrl(url);
|
|
214
209
|
// Do not enqueue duplicate authorization requests.
|
|
215
210
|
const isDuplicate = Object.values(this.#authRequestsV2).some(request => request.idStr === idStr);
|
|
216
211
|
assert(!isDuplicate, `The source ${url} has a pending authorization request`);
|
|
@@ -265,7 +260,7 @@ export default class AuthRequestHandler {
|
|
|
265
260
|
return this.authorizeUrlSubject;
|
|
266
261
|
}
|
|
267
262
|
ensureUrlAuthorizedV2(url) {
|
|
268
|
-
const idStr =
|
|
263
|
+
const idStr = stripUrl(url);
|
|
269
264
|
return new Promise((resolve, reject) => {
|
|
270
265
|
this.getAuthorize(value => {
|
|
271
266
|
if (!value) {
|
|
@@ -12,7 +12,7 @@ export default class SubstrateRequestHandler {
|
|
|
12
12
|
private updateIconSign;
|
|
13
13
|
private signComplete;
|
|
14
14
|
get numSubstrateRequests(): number;
|
|
15
|
-
sign(url: string, request: RequestSign, account: AccountJson): Promise<ResponseSigning>;
|
|
15
|
+
sign(url: string, request: RequestSign, account: AccountJson, _id?: string): Promise<ResponseSigning>;
|
|
16
16
|
signTransaction(id: string, address: string, url: string, payload: SignerPayloadJSON): Promise<ResponseSigning>;
|
|
17
17
|
resetWallet(): void;
|
|
18
18
|
}
|
|
@@ -57,8 +57,8 @@ export default class SubstrateRequestHandler {
|
|
|
57
57
|
get numSubstrateRequests() {
|
|
58
58
|
return Object.keys(this.#substrateRequests).length;
|
|
59
59
|
}
|
|
60
|
-
sign(url, request, account) {
|
|
61
|
-
const id = getId();
|
|
60
|
+
sign(url, request, account, _id) {
|
|
61
|
+
const id = _id || getId();
|
|
62
62
|
return new Promise((resolve, reject) => {
|
|
63
63
|
this.#substrateRequests[id] = {
|
|
64
64
|
...this.signComplete(id, resolve, reject),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import RequestService from '@subwallet/extension-base/services/request-service';
|
|
2
|
+
import { RequestWalletConnectSession, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
export default class WalletConnectRequestHandler {
|
|
5
|
+
#private;
|
|
6
|
+
readonly connectWCSubject: BehaviorSubject<WalletConnectSessionRequest[]>;
|
|
7
|
+
constructor(requestService: RequestService);
|
|
8
|
+
get allConnectWCRequests(): WalletConnectSessionRequest[];
|
|
9
|
+
get numConnectWCRequests(): number;
|
|
10
|
+
getConnectWCRequest(id: string): RequestWalletConnectSession;
|
|
11
|
+
private updateIconConnectWC;
|
|
12
|
+
private connectWCComplete;
|
|
13
|
+
addConnectWCRequest(request: WalletConnectSessionRequest): void;
|
|
14
|
+
resetWallet(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
// WC = WalletConnect
|
|
7
|
+
export default class WalletConnectRequestHandler {
|
|
8
|
+
#requestService;
|
|
9
|
+
#walletConnectSessionRequests = {};
|
|
10
|
+
connectWCSubject = new BehaviorSubject([]);
|
|
11
|
+
constructor(requestService) {
|
|
12
|
+
this.#requestService = requestService;
|
|
13
|
+
}
|
|
14
|
+
get allConnectWCRequests() {
|
|
15
|
+
return Object.values(this.#walletConnectSessionRequests)
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
+
.map(({
|
|
18
|
+
reject,
|
|
19
|
+
resolve,
|
|
20
|
+
...data
|
|
21
|
+
}) => data);
|
|
22
|
+
}
|
|
23
|
+
get numConnectWCRequests() {
|
|
24
|
+
return Object.keys(this.#walletConnectSessionRequests).length;
|
|
25
|
+
}
|
|
26
|
+
getConnectWCRequest(id) {
|
|
27
|
+
return this.#walletConnectSessionRequests[id];
|
|
28
|
+
}
|
|
29
|
+
updateIconConnectWC(shouldClose) {
|
|
30
|
+
this.connectWCSubject.next(this.allConnectWCRequests);
|
|
31
|
+
this.#requestService.updateIconV2(shouldClose);
|
|
32
|
+
}
|
|
33
|
+
connectWCComplete = id => {
|
|
34
|
+
const complete = shouldClose => {
|
|
35
|
+
delete this.#walletConnectSessionRequests[id];
|
|
36
|
+
this.updateIconConnectWC(shouldClose);
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
reject: () => {
|
|
40
|
+
complete(true);
|
|
41
|
+
},
|
|
42
|
+
resolve: () => {
|
|
43
|
+
complete(true);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
addConnectWCRequest(request) {
|
|
48
|
+
const id = request.id;
|
|
49
|
+
this.#walletConnectSessionRequests[id] = {
|
|
50
|
+
...this.connectWCComplete(id),
|
|
51
|
+
...request
|
|
52
|
+
};
|
|
53
|
+
this.updateIconConnectWC();
|
|
54
|
+
this.#requestService.popupOpen();
|
|
55
|
+
}
|
|
56
|
+
resetWallet() {
|
|
57
|
+
for (const request of Object.values(this.#walletConnectSessionRequests)) {
|
|
58
|
+
request.reject(new Error('Reset wallet'));
|
|
59
|
+
}
|
|
60
|
+
this.connectWCSubject.next([]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -4,6 +4,7 @@ import { ChainService } from '@subwallet/extension-base/services/chain-service';
|
|
|
4
4
|
import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
|
|
5
5
|
import { AuthUrls, MetaRequest } from '@subwallet/extension-base/services/request-service/types';
|
|
6
6
|
import SettingService from '@subwallet/extension-base/services/setting-service/SettingService';
|
|
7
|
+
import { WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
7
8
|
import { MetadataDef } from '@subwallet/extension-inject/types';
|
|
8
9
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
9
10
|
import { SignerPayloadJSON } from '@polkadot/types/types/extrinsic';
|
|
@@ -14,7 +15,6 @@ export default class RequestService {
|
|
|
14
15
|
constructor(chainService: ChainService, settingService: SettingService, keyringService: KeyringService);
|
|
15
16
|
get numAllRequests(): number;
|
|
16
17
|
updateIconV2(shouldClose?: boolean): void;
|
|
17
|
-
stripUrl(url: string): string;
|
|
18
18
|
getAddressList(value?: boolean): Record<string, boolean>;
|
|
19
19
|
get popup(): number[];
|
|
20
20
|
popupClose(): void;
|
|
@@ -43,7 +43,7 @@ export default class RequestService {
|
|
|
43
43
|
ensureUrlAuthorizedV2(url: string): Promise<boolean>;
|
|
44
44
|
get signSubject(): BehaviorSubject<SigningRequest[]>;
|
|
45
45
|
get allSubstrateRequests(): SigningRequest[];
|
|
46
|
-
sign(url: string, request: RequestSign, account: AccountJson): Promise<ResponseSigning>;
|
|
46
|
+
sign(url: string, request: RequestSign, account: AccountJson, id?: string): Promise<ResponseSigning>;
|
|
47
47
|
get numSubstrateRequests(): number;
|
|
48
48
|
get numEvmRequests(): number;
|
|
49
49
|
get confirmationsQueueSubject(): BehaviorSubject<ConfirmationsQueue>;
|
|
@@ -52,6 +52,11 @@ export default class RequestService {
|
|
|
52
52
|
addConfirmation<CT extends ConfirmationType>(id: string, url: string, type: CT, payload: ConfirmationDefinitions[CT][0]['payload'], options?: ConfirmationsQueueItemOptions, validator?: (input: ConfirmationDefinitions[CT][1]) => Error | undefined): Promise<ConfirmationDefinitions[CT][1]>;
|
|
53
53
|
completeConfirmation(request: RequestConfirmationComplete): Promise<boolean>;
|
|
54
54
|
updateConfirmation<CT extends ConfirmationType>(id: string, type: CT, payload: ConfirmationDefinitions[CT][0]['payload'], options?: ConfirmationsQueueItemOptions, validator?: (input: ConfirmationDefinitions[CT][1]) => Error | undefined): void;
|
|
55
|
+
getConnectWCRequest(id: string): import("@subwallet/extension-base/services/wallet-connect-service/types").RequestWalletConnectSession;
|
|
56
|
+
get connectWCSubject(): BehaviorSubject<WalletConnectSessionRequest[]>;
|
|
57
|
+
get allConnectWCRequests(): WalletConnectSessionRequest[];
|
|
58
|
+
get numConnectWCRequests(): number;
|
|
59
|
+
addConnectWCRequest(request: WalletConnectSessionRequest): void;
|
|
55
60
|
get numRequests(): number;
|
|
56
61
|
resetWallet(): void;
|
|
57
62
|
}
|
|
@@ -6,6 +6,7 @@ import EvmRequestHandler from '@subwallet/extension-base/services/request-servic
|
|
|
6
6
|
import MetadataRequestHandler from '@subwallet/extension-base/services/request-service/handler/MetadataRequestHandler';
|
|
7
7
|
import PopupHandler from '@subwallet/extension-base/services/request-service/handler/PopupHandler';
|
|
8
8
|
import SubstrateRequestHandler from '@subwallet/extension-base/services/request-service/handler/SubstrateRequestHandler';
|
|
9
|
+
import WalletConnectRequestHandler from '@subwallet/extension-base/services/request-service/handler/WalletConnectRequestHandler';
|
|
9
10
|
export default class RequestService {
|
|
10
11
|
// Common
|
|
11
12
|
#chainService;
|
|
@@ -14,6 +15,7 @@ export default class RequestService {
|
|
|
14
15
|
#authRequestHandler;
|
|
15
16
|
#substrateRequestHandler;
|
|
16
17
|
#evmRequestHandler;
|
|
18
|
+
#walletConnectRequestHandler;
|
|
17
19
|
|
|
18
20
|
// Common
|
|
19
21
|
constructor(chainService, settingService, keyringService) {
|
|
@@ -25,6 +27,7 @@ export default class RequestService {
|
|
|
25
27
|
this.#authRequestHandler = new AuthRequestHandler(this, this.#chainService, this.keyringService);
|
|
26
28
|
this.#substrateRequestHandler = new SubstrateRequestHandler(this);
|
|
27
29
|
this.#evmRequestHandler = new EvmRequestHandler(this);
|
|
30
|
+
this.#walletConnectRequestHandler = new WalletConnectRequestHandler(this);
|
|
28
31
|
|
|
29
32
|
// Reset icon on start service
|
|
30
33
|
this.updateIconV2();
|
|
@@ -35,9 +38,6 @@ export default class RequestService {
|
|
|
35
38
|
updateIconV2(shouldClose) {
|
|
36
39
|
this.#popupHandler.updateIconV2(shouldClose);
|
|
37
40
|
}
|
|
38
|
-
stripUrl(url) {
|
|
39
|
-
return this.#authRequestHandler.stripUrl(url);
|
|
40
|
-
}
|
|
41
41
|
getAddressList(value = false) {
|
|
42
42
|
const addressList = Object.keys(this.keyringService.accounts);
|
|
43
43
|
return addressList.reduce((addressList, v) => ({
|
|
@@ -128,8 +128,8 @@ export default class RequestService {
|
|
|
128
128
|
get allSubstrateRequests() {
|
|
129
129
|
return this.#substrateRequestHandler.allSubstrateRequests;
|
|
130
130
|
}
|
|
131
|
-
sign(url, request, account) {
|
|
132
|
-
return this.#substrateRequestHandler.sign(url, request, account);
|
|
131
|
+
sign(url, request, account, id) {
|
|
132
|
+
return this.#substrateRequestHandler.sign(url, request, account, id);
|
|
133
133
|
}
|
|
134
134
|
get numSubstrateRequests() {
|
|
135
135
|
return this.#substrateRequestHandler.numSubstrateRequests;
|
|
@@ -158,14 +158,32 @@ export default class RequestService {
|
|
|
158
158
|
return this.#evmRequestHandler.updateConfirmation(id, type, payload, options, validator);
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
+
// Wallet Connect requests
|
|
162
|
+
getConnectWCRequest(id) {
|
|
163
|
+
return this.#walletConnectRequestHandler.getConnectWCRequest(id);
|
|
164
|
+
}
|
|
165
|
+
get connectWCSubject() {
|
|
166
|
+
return this.#walletConnectRequestHandler.connectWCSubject;
|
|
167
|
+
}
|
|
168
|
+
get allConnectWCRequests() {
|
|
169
|
+
return this.#walletConnectRequestHandler.allConnectWCRequests;
|
|
170
|
+
}
|
|
171
|
+
get numConnectWCRequests() {
|
|
172
|
+
return this.#walletConnectRequestHandler.numConnectWCRequests;
|
|
173
|
+
}
|
|
174
|
+
addConnectWCRequest(request) {
|
|
175
|
+
return this.#walletConnectRequestHandler.addConnectWCRequest(request);
|
|
176
|
+
}
|
|
177
|
+
|
|
161
178
|
// General methods
|
|
162
179
|
get numRequests() {
|
|
163
|
-
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests;
|
|
180
|
+
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests;
|
|
164
181
|
}
|
|
165
182
|
resetWallet() {
|
|
166
183
|
this.#authRequestHandler.resetWallet();
|
|
167
184
|
this.#substrateRequestHandler.resetWallet();
|
|
168
185
|
this.#evmRequestHandler.resetWallet();
|
|
169
186
|
this.#metadataRequestHandler.resetWallet();
|
|
187
|
+
this.#walletConnectRequestHandler.resetWallet();
|
|
170
188
|
}
|
|
171
189
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
2
|
import { SWTransaction } from '@subwallet/extension-base/services/transaction-service/types';
|
|
3
3
|
import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
|
|
4
|
-
export declare const getTransactionId: (chainType: string, chain: string, isInternal: boolean) => string;
|
|
4
|
+
export declare const getTransactionId: (chainType: string, chain: string, isInternal: boolean, isWalletConnect?: boolean) => string;
|
|
5
5
|
export declare const getValidationId: (chainType: string, chain: string) => string;
|
|
6
6
|
export declare const isSubstrateTransaction: (tx: SWTransaction['transaction']) => tx is SubmittableExtrinsic;
|
|
7
7
|
export declare const getBaseTransactionInfo: (transaction: SWTransaction, chainInfoMap: Record<string, _ChainInfo>) => string;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
5
|
let transactionCount = 0;
|
|
6
6
|
let validationCount = 0;
|
|
7
|
-
export const getTransactionId = (chainType, chain, isInternal) => {
|
|
8
|
-
return `${isInternal ? 'internal' : 'external'}.${chainType}.${chain}.${Date.now()}.${++transactionCount}`;
|
|
7
|
+
export const getTransactionId = (chainType, chain, isInternal, isWalletConnect = false) => {
|
|
8
|
+
return `${isInternal ? 'internal' : !isWalletConnect ? 'external' : 'wallet-connect'}.${chainType}.${chain}.${Date.now()}.${++transactionCount}`;
|
|
9
9
|
};
|
|
10
10
|
export const getValidationId = (chainType, chain) => {
|
|
11
11
|
return `${chainType}.${chain}.${Date.now()}.${++validationCount}`;
|
|
@@ -13,6 +13,7 @@ import { TRANSACTION_TIMEOUT } from '@subwallet/extension-base/services/transact
|
|
|
13
13
|
import { parseTransferEventLogs, parseXcmEventLogs } from '@subwallet/extension-base/services/transaction-service/event-parser';
|
|
14
14
|
import { getBaseTransactionInfo, getTransactionId, isSubstrateTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
|
|
15
15
|
import { getExplorerLink, parseTransactionData } from '@subwallet/extension-base/services/transaction-service/utils';
|
|
16
|
+
import { isWalletConnectRequest } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
|
|
16
17
|
import { anyNumberToBN } from '@subwallet/extension-base/utils/eth';
|
|
17
18
|
import { mergeTransactionAndSignature } from '@subwallet/extension-base/utils/eth/mergeTransactionAndSignature';
|
|
18
19
|
import { isContractAddress, parseContractInput } from '@subwallet/extension-base/utils/eth/parseTransaction';
|
|
@@ -170,7 +171,7 @@ export default class TransactionService {
|
|
|
170
171
|
}
|
|
171
172
|
fillTransactionDefaultInfo(transaction) {
|
|
172
173
|
const isInternal = !transaction.url;
|
|
173
|
-
const transactionId = getTransactionId(transaction.chainType, transaction.chain, isInternal);
|
|
174
|
+
const transactionId = getTransactionId(transaction.chainType, transaction.chain, isInternal, isWalletConnectRequest(transaction.id));
|
|
174
175
|
return {
|
|
175
176
|
...transaction,
|
|
176
177
|
createdAt: new Date().getTime(),
|
|
@@ -23,7 +23,8 @@ export interface SWTransaction extends ValidateTransactionResponse, Partial<Pick
|
|
|
23
23
|
}
|
|
24
24
|
export declare type SWTransactionResult = Omit<SWTransaction, 'transaction' | 'additionalValidator' | 'eventsHandler'>;
|
|
25
25
|
declare type SwInputBase = Pick<SWTransaction, 'address' | 'url' | 'data' | 'extrinsicType' | 'chain' | 'chainType' | 'ignoreWarnings' | 'transferNativeAmount'> & Partial<Pick<SWTransaction, 'additionalValidator' | 'eventsHandler'>>;
|
|
26
|
-
export interface SWTransactionInput extends SwInputBase {
|
|
26
|
+
export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransaction, 'estimateFee'>> {
|
|
27
|
+
id?: string;
|
|
27
28
|
transaction?: SWTransaction['transaction'] | null;
|
|
28
29
|
warnings?: SWTransaction['warnings'];
|
|
29
30
|
errors?: SWTransaction['errors'];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WalletConnectSigningMethod } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
2
|
+
import { SignClientTypes } from '@walletconnect/types';
|
|
3
|
+
export declare const PROJECT_ID = "6da34c0b48164d27681924dd9a46d6be";
|
|
4
|
+
export declare const RELAY_URL = "wss://relay.walletconnect.com";
|
|
5
|
+
export declare const DEFAULT_WALLET_CONNECT_OPTIONS: SignClientTypes.Options;
|
|
6
|
+
export declare const ALL_WALLET_CONNECT_EVENT: SignClientTypes.Event[];
|
|
7
|
+
export declare const WALLET_CONNECT_SUPPORTED_METHODS: WalletConnectSigningMethod[];
|
|
8
|
+
export declare const WALLET_CONNECT_REQUEST_KEY = "wallet-connect";
|
|
9
|
+
export declare const WALLET_CONNECT_EIP155_NAMESPACE = "eip155";
|
|
10
|
+
export declare const WALLET_CONNECT_POLKADOT_NAMESPACE = "polkadot";
|
|
11
|
+
export declare const WALLET_CONNECT_SUPPORT_NAMESPACES: string[];
|