@subwallet/extension-base 1.0.12-0 → 1.0.13-1
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 +89 -0
- package/background/KoniTypes.js +18 -19
- package/background/handlers/Extension.js +17 -2
- package/background/handlers/State.d.ts +0 -1
- package/background/handlers/State.js +4 -8
- package/background/types.d.ts +6 -1
- package/cjs/background/KoniTypes.js +21 -11
- package/cjs/background/handlers/Extension.js +22 -6
- package/cjs/background/handlers/State.js +4 -8
- package/cjs/constants/index.js +7 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/balance.js +5 -0
- package/cjs/koni/api/dotsama/transfer.js +6 -0
- 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/cron.js +12 -1
- package/cjs/koni/background/handlers/Extension.js +457 -131
- package/cjs/koni/background/handlers/State.js +236 -53
- package/cjs/koni/background/handlers/Tabs.js +61 -9
- package/cjs/koni/background/subscription.js +3 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/Metadata.js +3 -0
- package/cjs/services/chain-service/constants.js +10 -4
- package/cjs/services/chain-service/handler/SubstrateApi.js +2 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -1
- package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +147 -0
- package/cjs/services/chain-service/index.js +54 -5
- package/cjs/services/chain-service/utils.js +32 -0
- package/cjs/services/event-service/types.js +3 -1
- 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/storage-service/DatabaseService.js +31 -1
- package/cjs/services/storage-service/databases/index.js +3 -0
- package/cjs/services/storage-service/db-stores/MantaPay.js +40 -0
- 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 +78 -1
- package/cjs/utils/lazy.js +52 -0
- package/constants/index.d.ts +2 -0
- package/constants/index.js +2 -0
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/balance.js +6 -1
- package/koni/api/dotsama/transfer.js +7 -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/cron.d.ts +1 -0
- package/koni/background/cron.js +13 -2
- package/koni/background/handlers/Extension.d.ts +11 -0
- package/koni/background/handlers/Extension.js +329 -12
- package/koni/background/handlers/State.d.ts +17 -3
- package/koni/background/handlers/State.js +238 -52
- package/koni/background/handlers/Tabs.d.ts +2 -0
- package/koni/background/handlers/Tabs.js +58 -7
- package/koni/background/subscription.js +3 -0
- package/package.json +72 -6
- package/packageInfo.js +1 -1
- package/page/Metadata.d.ts +2 -0
- package/page/Metadata.js +3 -0
- package/services/chain-service/constants.d.ts +3 -0
- package/services/chain-service/constants.js +5 -2
- package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
- package/services/chain-service/handler/SubstrateApi.js +2 -1
- package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +3 -1
- package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +30 -0
- package/services/chain-service/handler/manta/MantaPrivateHandler.js +140 -0
- package/services/chain-service/handler/types.d.ts +2 -0
- package/services/chain-service/index.d.ts +7 -3
- package/services/chain-service/index.js +56 -7
- package/services/chain-service/utils.d.ts +3 -0
- package/services/chain-service/utils.js +28 -0
- package/services/event-service/types.d.ts +3 -0
- package/services/event-service/types.js +3 -1
- 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/storage-service/DatabaseService.d.ts +10 -1
- package/services/storage-service/DatabaseService.js +31 -1
- package/services/storage-service/databases/index.d.ts +2 -0
- package/services/storage-service/databases/index.js +3 -0
- package/services/storage-service/db-stores/MantaPay.d.ts +9 -0
- package/services/storage-service/db-stores/MantaPay.js +32 -0
- 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 +4 -0
- package/utils/index.js +10 -2
- package/utils/lazy.d.ts +2 -0
- package/utils/lazy.js +43 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.uniqueStringArray = void 0;
|
|
7
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
|
|
10
|
+
const uniqueStringArray = array => {
|
|
11
|
+
const map = {};
|
|
12
|
+
array.forEach(v => {
|
|
13
|
+
map[v] = v;
|
|
14
|
+
});
|
|
15
|
+
return Object.keys(map);
|
|
16
|
+
};
|
|
17
|
+
exports.uniqueStringArray = uniqueStringArray;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RuntimeInfo = void 0;
|
|
7
|
+
var _KoniTypes = require("../background/KoniTypes");
|
|
8
|
+
// Copyright 2019-2022 @polkadot/extension authors & contributors
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
function detectRuntimeEnvironment() {
|
|
12
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
13
|
+
// Web environment
|
|
14
|
+
return {
|
|
15
|
+
environment: _KoniTypes.RuntimeEnvironment.Web,
|
|
16
|
+
version: navigator.userAgent,
|
|
17
|
+
host: window.location.host,
|
|
18
|
+
protocol: window.location.protocol
|
|
19
|
+
};
|
|
20
|
+
} else if (typeof self !== 'undefined' && typeof importScripts !== 'undefined') {
|
|
21
|
+
// Service Worker environment
|
|
22
|
+
return {
|
|
23
|
+
environment: _KoniTypes.RuntimeEnvironment.ServiceWorker,
|
|
24
|
+
version: navigator.userAgent,
|
|
25
|
+
host: self.location.host,
|
|
26
|
+
protocol: window.location.protocol
|
|
27
|
+
};
|
|
28
|
+
} else if (typeof process !== 'undefined' && process.versions && process.versions.node) {
|
|
29
|
+
// Node.js environment
|
|
30
|
+
return {
|
|
31
|
+
environment: _KoniTypes.RuntimeEnvironment.Node,
|
|
32
|
+
version: process.versions.node
|
|
33
|
+
};
|
|
34
|
+
} else if (typeof chrome !== 'undefined' && typeof chrome.runtime !== 'undefined') {
|
|
35
|
+
// Extension environment (Chrome)
|
|
36
|
+
return {
|
|
37
|
+
environment: _KoniTypes.RuntimeEnvironment.ExtensionChrome,
|
|
38
|
+
version: chrome.runtime.getManifest().version,
|
|
39
|
+
host: window.location.host,
|
|
40
|
+
protocol: window.location.protocol
|
|
41
|
+
};
|
|
42
|
+
} else if (typeof browser !== 'undefined' && typeof browser.runtime !== 'undefined') {
|
|
43
|
+
// Extension environment (Firefox)
|
|
44
|
+
return {
|
|
45
|
+
environment: _KoniTypes.RuntimeEnvironment.ExtensionFirefox,
|
|
46
|
+
version: browser.runtime.getManifest().version,
|
|
47
|
+
host: window.location.host,
|
|
48
|
+
protocol: window.location.protocol
|
|
49
|
+
};
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
} else if (typeof WorkerGlobalScope !== 'undefined') {
|
|
52
|
+
// Web Worker environment
|
|
53
|
+
return {
|
|
54
|
+
environment: _KoniTypes.RuntimeEnvironment.WebWorker,
|
|
55
|
+
version: ''
|
|
56
|
+
};
|
|
57
|
+
} else {
|
|
58
|
+
// Unknown environment
|
|
59
|
+
return {
|
|
60
|
+
environment: _KoniTypes.RuntimeEnvironment.Unknown,
|
|
61
|
+
version: ''
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const RuntimeInfo = detectRuntimeEnvironment();
|
|
66
|
+
exports.RuntimeInfo = RuntimeInfo;
|
package/cjs/utils/index.js
CHANGED
|
@@ -3,6 +3,40 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
notDef: true,
|
|
8
|
+
isDef: true,
|
|
9
|
+
nonEmptyArr: true,
|
|
10
|
+
isEmptyArray: true,
|
|
11
|
+
isAccountAll: true,
|
|
12
|
+
reformatAddress: true,
|
|
13
|
+
filterAddressByNetworkKey: true,
|
|
14
|
+
categoryAddresses: true,
|
|
15
|
+
categoryNetworks: true,
|
|
16
|
+
convertToEvmAddress: true,
|
|
17
|
+
isUrl: true,
|
|
18
|
+
inJestTest: true,
|
|
19
|
+
parseIpfsLink: true,
|
|
20
|
+
hexToStr: true,
|
|
21
|
+
utf16ToString: true,
|
|
22
|
+
hexToUTF16: true,
|
|
23
|
+
isValidSubstrateAddress: true,
|
|
24
|
+
toUnit: true,
|
|
25
|
+
sumBN: true,
|
|
26
|
+
convertFundStatus: true,
|
|
27
|
+
isAddressesEqual: true,
|
|
28
|
+
isValidProvider: true,
|
|
29
|
+
getCurrentProvider: true,
|
|
30
|
+
getNftProvider: true,
|
|
31
|
+
mergeNetworkProviders: true,
|
|
32
|
+
filterAndSortingAccountByAuthType: true,
|
|
33
|
+
parseRawNumber: true,
|
|
34
|
+
isSameAddress: true,
|
|
35
|
+
getDomainFromUrl: true,
|
|
36
|
+
waitTimeout: true,
|
|
37
|
+
stripUrl: true,
|
|
38
|
+
canDerive: true
|
|
39
|
+
};
|
|
6
40
|
Object.defineProperty(exports, "canDerive", {
|
|
7
41
|
enumerable: true,
|
|
8
42
|
get: function () {
|
|
@@ -29,6 +63,7 @@ exports.mergeNetworkProviders = mergeNetworkProviders;
|
|
|
29
63
|
exports.parseIpfsLink = exports.notDef = exports.nonEmptyArr = void 0;
|
|
30
64
|
exports.parseRawNumber = parseRawNumber;
|
|
31
65
|
exports.reformatAddress = reformatAddress;
|
|
66
|
+
exports.stripUrl = void 0;
|
|
32
67
|
exports.sumBN = sumBN;
|
|
33
68
|
exports.toUnit = void 0;
|
|
34
69
|
exports.utf16ToString = utf16ToString;
|
|
@@ -38,6 +73,42 @@ var _constants = require("@subwallet/extension-base/constants");
|
|
|
38
73
|
var _util = require("@polkadot/util");
|
|
39
74
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
40
75
|
var _canDerive = require("./canDerive");
|
|
76
|
+
var _array = require("./array");
|
|
77
|
+
Object.keys(_array).forEach(function (key) {
|
|
78
|
+
if (key === "default" || key === "__esModule") return;
|
|
79
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
80
|
+
if (key in exports && exports[key] === _array[key]) return;
|
|
81
|
+
Object.defineProperty(exports, key, {
|
|
82
|
+
enumerable: true,
|
|
83
|
+
get: function () {
|
|
84
|
+
return _array[key];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
var _environment = require("./environment");
|
|
89
|
+
Object.keys(_environment).forEach(function (key) {
|
|
90
|
+
if (key === "default" || key === "__esModule") return;
|
|
91
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
92
|
+
if (key in exports && exports[key] === _environment[key]) return;
|
|
93
|
+
Object.defineProperty(exports, key, {
|
|
94
|
+
enumerable: true,
|
|
95
|
+
get: function () {
|
|
96
|
+
return _environment[key];
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
var _lazy = require("./lazy");
|
|
101
|
+
Object.keys(_lazy).forEach(function (key) {
|
|
102
|
+
if (key === "default" || key === "__esModule") return;
|
|
103
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
104
|
+
if (key in exports && exports[key] === _lazy[key]) return;
|
|
105
|
+
Object.defineProperty(exports, key, {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function () {
|
|
108
|
+
return _lazy[key];
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
41
112
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
42
113
|
// SPDX-License-Identifier: Apache-2.0
|
|
43
114
|
|
|
@@ -329,4 +400,10 @@ function getDomainFromUrl(url) {
|
|
|
329
400
|
}
|
|
330
401
|
async function waitTimeout(ms) {
|
|
331
402
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
332
|
-
}
|
|
403
|
+
}
|
|
404
|
+
const stripUrl = url => {
|
|
405
|
+
(0, _util.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:`);
|
|
406
|
+
const parts = url.split('/');
|
|
407
|
+
return parts[2];
|
|
408
|
+
};
|
|
409
|
+
exports.stripUrl = stripUrl;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addLazy = addLazy;
|
|
7
|
+
exports.removeLazy = removeLazy;
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
const lazyMap = {};
|
|
12
|
+
function removeLazy(key) {
|
|
13
|
+
if (lazyMap[key]) {
|
|
14
|
+
clearTimeout(lazyMap[key].timeout);
|
|
15
|
+
delete lazyMap[key];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Add or update new lazy thread
|
|
20
|
+
function addLazy(key, callback) {
|
|
21
|
+
let lazyTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;
|
|
22
|
+
let maxLazyTime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 3000;
|
|
23
|
+
const existed = lazyMap[key];
|
|
24
|
+
const now = new Date().getTime();
|
|
25
|
+
if (existed) {
|
|
26
|
+
clearTimeout(existed.timeout);
|
|
27
|
+
lazyMap[key] = {
|
|
28
|
+
...existed,
|
|
29
|
+
callback
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Fire callback if last fire is too long
|
|
33
|
+
if (now - existed.lastFire >= maxLazyTime) {
|
|
34
|
+
callback();
|
|
35
|
+
lazyMap[key].lastFire = now;
|
|
36
|
+
} else {
|
|
37
|
+
lazyMap[key].timeout = setTimeout(() => {
|
|
38
|
+
// This will be fire in the last call of lazy thread
|
|
39
|
+
callback();
|
|
40
|
+
lazyMap[key].lastFire = new Date().getTime();
|
|
41
|
+
removeLazy(key);
|
|
42
|
+
}, lazyTime);
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
// Fire callback immediately in the first time
|
|
46
|
+
callback();
|
|
47
|
+
lazyMap[key] = {
|
|
48
|
+
callback,
|
|
49
|
+
lastFire: now
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
package/constants/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare const CRON_GET_API_MAP_STATUS = 10000;
|
|
|
12
12
|
export declare const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
|
|
13
13
|
export declare const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
|
|
14
14
|
export declare const CRON_RECOVER_HISTORY_INTERVAL = 30000;
|
|
15
|
+
export declare const CRON_SYNC_MANTA_PAY = 300000;
|
|
16
|
+
export declare const MANTA_PAY_BALANCE_INTERVAL = 30000;
|
|
15
17
|
export declare const ALL_ACCOUNT_KEY = "ALL";
|
|
16
18
|
export declare const ALL_NETWORK_KEY = "all";
|
|
17
19
|
export declare const ALL_GENESIS_HASH: null;
|
package/constants/index.js
CHANGED
|
@@ -15,6 +15,8 @@ export const CRON_GET_API_MAP_STATUS = 10000;
|
|
|
15
15
|
export const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
|
|
16
16
|
export const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
|
|
17
17
|
export const CRON_RECOVER_HISTORY_INTERVAL = 30000;
|
|
18
|
+
export const CRON_SYNC_MANTA_PAY = 300000;
|
|
19
|
+
export const MANTA_PAY_BALANCE_INTERVAL = 30000;
|
|
18
20
|
export const ALL_ACCOUNT_KEY = 'ALL';
|
|
19
21
|
export const ALL_NETWORK_KEY = 'all';
|
|
20
22
|
export const ALL_GENESIS_HASH = null;
|
package/defaults.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const ALLOWED_PATH: readonly ["/", "/settings/security", "/accounts/connect-ledger", "/accounts/restore-json", "/accounts/new-seed-phrase"];
|
|
1
|
+
declare const ALLOWED_PATH: readonly ["/", "/settings/security", "/accounts/connect-ledger", "/accounts/restore-json", "/accounts/detail", "/accounts/new-seed-phrase"];
|
|
2
2
|
declare const PHISHING_PAGE_REDIRECT = "/phishing-page-detected";
|
|
3
3
|
declare const EXTENSION_PREFIX: string;
|
|
4
4
|
declare const PORT_MOBILE: string;
|
package/defaults.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @polkadot/extension-base authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/new-seed-phrase'];
|
|
4
|
+
const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/detail', '/accounts/new-seed-phrase'];
|
|
5
5
|
const PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
|
|
6
6
|
const EXTENSION_PREFIX = process.env.EXTENSION_PREFIX || '';
|
|
7
7
|
const PORT_MOBILE = `${EXTENSION_PREFIX}mobile`;
|
|
@@ -9,7 +9,7 @@ import { getERC20Contract } from '@subwallet/extension-base/koni/api/tokens/evm/
|
|
|
9
9
|
import { getPSP22ContractPromise } from '@subwallet/extension-base/koni/api/tokens/wasm';
|
|
10
10
|
import { getDefaultWeightV2 } from '@subwallet/extension-base/koni/api/tokens/wasm/utils';
|
|
11
11
|
import { state } from '@subwallet/extension-base/koni/background/handlers';
|
|
12
|
-
import { _BALANCE_CHAIN_GROUP, _PURE_EVM_CHAINS } from '@subwallet/extension-base/services/chain-service/constants';
|
|
12
|
+
import { _BALANCE_CHAIN_GROUP, _MANTA_ZK_CHAIN_GROUP, _PURE_EVM_CHAINS, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
|
|
13
13
|
import { _checkSmartContractSupportByChain, _getChainNativeTokenSlug, _getContractAddressOfToken, _getTokenOnChainAssetId, _getTokenOnChainInfo, _isChainEvmCompatible, _isPureEvmChain, _isSubstrateRelayChain } from '@subwallet/extension-base/services/chain-service/utils';
|
|
14
14
|
import { categoryAddresses, sumBN } from '@subwallet/extension-base/utils';
|
|
15
15
|
import BigN from 'bignumber.js';
|
|
@@ -324,6 +324,11 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
|
|
|
324
324
|
}
|
|
325
325
|
async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
326
326
|
const tokenMap = state.getAssetByChainAndAsset(chain, [_AssetType.LOCAL]);
|
|
327
|
+
Object.values(tokenMap).forEach(token => {
|
|
328
|
+
if (_MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_ZK_ASSET_PREFIX)) {
|
|
329
|
+
delete tokenMap[token.slug];
|
|
330
|
+
}
|
|
331
|
+
});
|
|
327
332
|
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
328
333
|
try {
|
|
329
334
|
const assetIndex = _getTokenOnChainAssetId(tokenInfo);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import { getPSP22ContractPromise } from '@subwallet/extension-base/koni/api/tokens/wasm';
|
|
5
5
|
import { getWasmContractGasLimit } from '@subwallet/extension-base/koni/api/tokens/wasm/utils';
|
|
6
|
-
import { _BALANCE_TOKEN_GROUP, _TRANSFER_CHAIN_GROUP, _TRANSFER_NOT_SUPPORTED_CHAINS } from '@subwallet/extension-base/services/chain-service/constants';
|
|
6
|
+
import { _BALANCE_TOKEN_GROUP, _MANTA_ZK_CHAIN_GROUP, _TRANSFER_CHAIN_GROUP, _TRANSFER_NOT_SUPPORTED_CHAINS, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
|
|
7
7
|
import { _getContractAddressOfToken, _getTokenOnChainAssetId, _getTokenOnChainInfo, _isChainEvmCompatible, _isNativeToken, _isTokenWasmSmartContract } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
8
|
import { BN } from '@polkadot/util';
|
|
9
9
|
function isRefCount(accountInfo) {
|
|
@@ -34,6 +34,12 @@ export async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMa
|
|
|
34
34
|
supportTransferAll: true
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
+
if (tokenInfo.symbol.startsWith(_ZK_ASSET_PREFIX) && _MANTA_ZK_CHAIN_GROUP.includes(tokenInfo.originChain)) {
|
|
38
|
+
return {
|
|
39
|
+
supportTransfer: false,
|
|
40
|
+
supportTransferAll: false
|
|
41
|
+
};
|
|
42
|
+
}
|
|
37
43
|
if (_TRANSFER_NOT_SUPPORTED_CHAINS.includes(networkKey)) {
|
|
38
44
|
return {
|
|
39
45
|
supportTransfer: false,
|
package/koni/api/nft/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import { RuntimeInfo } from '@subwallet/extension-base/utils';
|
|
4
5
|
export const SINGULAR_V1_ENDPOINT = 'https://singular.rmrk-api.xyz/api/account-rmrk1/';
|
|
5
6
|
export const SINGULAR_V2_ENDPOINT = 'https://singular.rmrk-api.xyz/api/account/';
|
|
6
7
|
export const KANARIA_ENDPOINT = 'https://kanaria.rmrk.app/api/rmrk2/';
|
|
@@ -68,9 +69,6 @@ export let SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME;
|
|
|
68
69
|
const RANDOM_IPFS_GATEWAY_SETTING = [{
|
|
69
70
|
provider: IPFS_IO_GATEWAY,
|
|
70
71
|
weight: 0 // Not stable
|
|
71
|
-
}, {
|
|
72
|
-
provider: NFT_STORAGE_GATEWAY,
|
|
73
|
-
weight: 50
|
|
74
72
|
}, {
|
|
75
73
|
provider: CF_IPFS_GATEWAY,
|
|
76
74
|
weight: 4
|
|
@@ -89,13 +87,20 @@ const RANDOM_IPFS_GATEWAY_SETTING = [{
|
|
|
89
87
|
}, {
|
|
90
88
|
provider: IPFS_GATEWAY_CLOUD,
|
|
91
89
|
weight: 0 // Deceptive site warning
|
|
92
|
-
}, {
|
|
93
|
-
provider: IPFS_FLEEK,
|
|
94
|
-
weight: 4
|
|
95
90
|
}, {
|
|
96
91
|
provider: IPFS_TELOS_MIAMI,
|
|
97
92
|
weight: 0
|
|
98
93
|
}];
|
|
94
|
+
if (!RuntimeInfo.protocol || RuntimeInfo.protocol && !RuntimeInfo.protocol.startsWith('http')) {
|
|
95
|
+
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
96
|
+
provider: NFT_STORAGE_GATEWAY,
|
|
97
|
+
weight: 50
|
|
98
|
+
});
|
|
99
|
+
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
100
|
+
provider: IPFS_FLEEK,
|
|
101
|
+
weight: 4
|
|
102
|
+
});
|
|
103
|
+
}
|
|
99
104
|
const RANDOM_IPFS_GATEWAY_TOTAL_WEIGHT = RANDOM_IPFS_GATEWAY_SETTING.reduce((value, item) => value + item.weight, 0);
|
|
100
105
|
export function getRandomIpfsGateway() {
|
|
101
106
|
const weighedItems = [];
|
|
@@ -5,7 +5,7 @@ import { getBeneficiary, getDestinationChainLocation, getDestWeight, getTokenLoc
|
|
|
5
5
|
import { _isNativeToken, _isSubstrateRelayChain } from '@subwallet/extension-base/services/chain-service/utils';
|
|
6
6
|
export function getExtrinsicByPolkadotXcmPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
|
|
7
7
|
const weightParam = getDestWeight();
|
|
8
|
-
const version = ['statemint', 'statemine', 'shiden'].includes(originChainInfo.slug) ? 'V3' : 'V1';
|
|
8
|
+
const version = ['statemint', 'statemine', 'shiden', 'astar'].includes(originChainInfo.slug) ? 'V3' : 'V1';
|
|
9
9
|
const beneficiary = getBeneficiary(destinationChainInfo, recipientAddress, version);
|
|
10
10
|
const destination = getDestinationChainLocation(originChainInfo, destinationChainInfo, version);
|
|
11
11
|
let assetLocation = getTokenLocation(tokenInfo, value, version);
|
package/koni/api/xcm/xTokens.js
CHANGED
|
@@ -18,7 +18,7 @@ function getCurrencyId(tokenInfo) {
|
|
|
18
18
|
return _getTokenOnChainInfo(tokenInfo) || _getTokenOnChainAssetId(tokenInfo);
|
|
19
19
|
}
|
|
20
20
|
export function getExtrinsicByXtokensPallet(tokenInfo, originChainInfo, destinationChainInfo, recipientAddress, value, api) {
|
|
21
|
-
const weightParam = ['pioneer'
|
|
22
|
-
const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot'].includes(originChainInfo.slug) ? 'V3' : undefined;
|
|
21
|
+
const weightParam = ['pioneer'].includes(originChainInfo.slug) ? FOUR_INSTRUCTIONS_WEIGHT : getDestWeight();
|
|
22
|
+
const destVersion = ['moonbeam', 'moonriver', 'bifrost_dot', 'interlay', 'hydradx_main'].includes(originChainInfo.slug) ? 'V3' : undefined;
|
|
23
23
|
return api.tx.xTokens.transfer(getCurrencyId(tokenInfo), value, getDestMultilocation(destinationChainInfo, recipientAddress, destVersion), weightParam);
|
|
24
24
|
}
|
|
@@ -24,6 +24,7 @@ export declare class KoniCron {
|
|
|
24
24
|
removeAllCrons: () => void;
|
|
25
25
|
start: () => Promise<void>;
|
|
26
26
|
stop: () => Promise<void>;
|
|
27
|
+
syncMantaPay: () => void;
|
|
27
28
|
refreshNft: (address: string, apiMap: ApiMap, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>) => () => void;
|
|
28
29
|
resetNft: (newAddress: string) => void;
|
|
29
30
|
resetStakingReward: () => void;
|
package/koni/background/cron.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_NFT_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL, CRON_REFRESH_STAKING_REWARD_INTERVAL } from '@subwallet/extension-base/constants';
|
|
4
|
+
import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_NFT_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL, CRON_REFRESH_STAKING_REWARD_INTERVAL, CRON_SYNC_MANTA_PAY } from '@subwallet/extension-base/constants';
|
|
5
5
|
import { _isChainSupportEvmNft, _isChainSupportNativeNft, _isChainSupportSubstrateStaking, _isChainSupportWasmNft } from '@subwallet/extension-base/services/chain-service/utils';
|
|
6
6
|
import { waitTimeout } from '@subwallet/extension-base/utils';
|
|
7
7
|
import { Subject } from 'rxjs';
|
|
@@ -62,6 +62,7 @@ export class KoniCron {
|
|
|
62
62
|
const commonReload = eventTypes.some(eventType => commonReloadEvents.includes(eventType));
|
|
63
63
|
const chainUpdated = eventTypes.includes('chain.updateState');
|
|
64
64
|
const stakingSubmitted = eventTypes.includes('transaction.submitStaking');
|
|
65
|
+
const reloadMantaPay = eventTypes.includes('mantaPay.submitTransaction') || eventTypes.includes('mantaPay.enable');
|
|
65
66
|
const updatedChains = [];
|
|
66
67
|
if (chainUpdated) {
|
|
67
68
|
events.forEach(event => {
|
|
@@ -71,7 +72,7 @@ export class KoniCron {
|
|
|
71
72
|
}
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
|
-
if (!commonReload && !chainUpdated && !stakingSubmitted) {
|
|
75
|
+
if (!commonReload && !chainUpdated && !stakingSubmitted && !reloadMantaPay) {
|
|
75
76
|
return;
|
|
76
77
|
}
|
|
77
78
|
const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
|
|
@@ -82,6 +83,9 @@ export class KoniCron {
|
|
|
82
83
|
const needUpdateNft = this.needUpdateNft(chainInfoMap, updatedChains);
|
|
83
84
|
const needUpdateStaking = this.needUpdateStaking(chainInfoMap, updatedChains);
|
|
84
85
|
|
|
86
|
+
// MantaPay
|
|
87
|
+
reloadMantaPay && this.removeCron('syncMantaPay');
|
|
88
|
+
|
|
85
89
|
// NFT
|
|
86
90
|
(commonReload || needUpdateNft) && this.resetNft(address);
|
|
87
91
|
(commonReload || needUpdateNft) && this.removeCron('refreshNft');
|
|
@@ -99,6 +103,7 @@ export class KoniCron {
|
|
|
99
103
|
(commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshStakingReward', this.refreshStakingReward(address), CRON_REFRESH_STAKING_REWARD_INTERVAL);
|
|
100
104
|
(commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(address), CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
|
|
101
105
|
needUpdateStaking && this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate), CRON_REFRESH_CHAIN_STAKING_METADATA);
|
|
106
|
+
reloadMantaPay && this.addCron('syncMantaPay', this.syncMantaPay, CRON_SYNC_MANTA_PAY);
|
|
102
107
|
} else {
|
|
103
108
|
this.setStakingRewardReady();
|
|
104
109
|
}
|
|
@@ -113,6 +118,7 @@ export class KoniCron {
|
|
|
113
118
|
this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), CRON_REFRESH_STAKING_REWARD_INTERVAL);
|
|
114
119
|
this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
|
|
115
120
|
this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap()), CRON_REFRESH_CHAIN_STAKING_METADATA);
|
|
121
|
+
this.addCron('syncMantaPay', this.syncMantaPay, CRON_SYNC_MANTA_PAY);
|
|
116
122
|
} else {
|
|
117
123
|
this.setStakingRewardReady();
|
|
118
124
|
}
|
|
@@ -136,6 +142,11 @@ export class KoniCron {
|
|
|
136
142
|
this.status = 'stopped';
|
|
137
143
|
return Promise.resolve();
|
|
138
144
|
};
|
|
145
|
+
syncMantaPay = () => {
|
|
146
|
+
if (this.state.isMantaPayEnabled) {
|
|
147
|
+
this.state.syncMantaPay().catch(console.warn);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
139
150
|
refreshNft = (address, apiMap, smartContractNfts, chainInfoMap) => {
|
|
140
151
|
return () => {
|
|
141
152
|
this.subscriptions.subscribeNft(address, apiMap.substrate, apiMap.evm, smartContractNfts, chainInfoMap);
|
|
@@ -188,5 +188,16 @@ export default class KoniExtension {
|
|
|
188
188
|
private reloadCron;
|
|
189
189
|
private getLogoMap;
|
|
190
190
|
private passPhishingPage;
|
|
191
|
+
private connectWalletConnect;
|
|
192
|
+
private connectWCSubscribe;
|
|
193
|
+
private approveWalletConnectSession;
|
|
194
|
+
private rejectWalletConnectSession;
|
|
195
|
+
private subscribeWalletConnectSessions;
|
|
196
|
+
private disconnectWalletConnectSession;
|
|
197
|
+
private enableMantaPay;
|
|
198
|
+
private initSyncMantaPay;
|
|
199
|
+
private disableMantaPay;
|
|
200
|
+
private subscribeMantaPayConfig;
|
|
201
|
+
private subscribeMantaPaySyncState;
|
|
191
202
|
handle<TMessageType extends MessageTypes>(id: string, type: TMessageType, request: RequestTypes[TMessageType], port: chrome.runtime.Port): Promise<ResponseType<TMessageType>>;
|
|
192
203
|
}
|