@subwallet/extension-base 1.1.59-0 → 1.1.60-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 +18 -1
- package/cjs/constants/staking.js +2 -1
- package/cjs/constants/storage.js +4 -2
- package/cjs/koni/api/coingecko.js +58 -15
- package/cjs/koni/api/nft/config.js +26 -22
- package/cjs/koni/background/handlers/Extension.js +130 -122
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +7 -1
- package/cjs/services/chain-service/index.js +6 -1
- package/cjs/services/chain-service/utils/index.js +34 -14
- package/cjs/services/price-service/coingecko.js +54 -35
- package/cjs/services/price-service/index.js +94 -12
- package/cjs/services/setting-service/constants.js +4 -1
- package/cjs/services/storage-service/DatabaseService.js +2 -3
- package/cjs/utils/number.js +84 -1
- package/cjs/utils/staticData/index.js +6 -1
- package/constants/staking.js +2 -1
- package/constants/storage.d.ts +1 -0
- package/constants/storage.js +2 -1
- package/koni/api/coingecko.d.ts +2 -2
- package/koni/api/coingecko.js +58 -15
- package/koni/api/nft/config.js +27 -21
- package/koni/background/handlers/Extension.d.ts +1 -0
- package/koni/background/handlers/Extension.js +7 -0
- package/package.json +7 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/substrate/index.js +8 -2
- package/services/chain-service/index.js +6 -1
- package/services/chain-service/utils/index.d.ts +13 -0
- package/services/chain-service/utils/index.js +32 -14
- package/services/price-service/coingecko.d.ts +3 -2
- package/services/price-service/coingecko.js +50 -32
- package/services/price-service/index.d.ts +9 -1
- package/services/price-service/index.js +95 -14
- package/services/setting-service/constants.d.ts +1 -0
- package/services/setting-service/constants.js +2 -0
- package/services/storage-service/DatabaseService.d.ts +1 -1
- package/services/storage-service/DatabaseService.js +2 -3
- package/utils/number.d.ts +1 -0
- package/utils/number.js +82 -0
- package/utils/staticData/currencySymbol.json +11 -0
- package/utils/staticData/index.d.ts +3 -0
- package/utils/staticData/index.js +4 -0
|
@@ -138,11 +138,22 @@ export interface StakingRewardJson {
|
|
|
138
138
|
data: Record<string, StakingRewardItem>;
|
|
139
139
|
}
|
|
140
140
|
export interface PriceJson {
|
|
141
|
+
currency: CurrencyType;
|
|
141
142
|
ready?: boolean;
|
|
142
|
-
|
|
143
|
+
currencyData: CurrencyJson;
|
|
144
|
+
exchangeRateMap: Record<string, ExchangeRateJSON>;
|
|
143
145
|
priceMap: Record<string, number>;
|
|
144
146
|
price24hMap: Record<string, number>;
|
|
145
147
|
}
|
|
148
|
+
export interface ExchangeRateJSON {
|
|
149
|
+
exchange: number;
|
|
150
|
+
label: string;
|
|
151
|
+
}
|
|
152
|
+
export interface CurrencyJson {
|
|
153
|
+
label: string;
|
|
154
|
+
isPrefix: boolean;
|
|
155
|
+
symbol: string;
|
|
156
|
+
}
|
|
146
157
|
export declare enum APIItemState {
|
|
147
158
|
PENDING = "pending",
|
|
148
159
|
READY = "ready",
|
|
@@ -301,6 +312,7 @@ export interface CurrentAccountInfo {
|
|
|
301
312
|
allGenesisHash?: string;
|
|
302
313
|
}
|
|
303
314
|
export declare type LanguageType = 'en' | 'zh' | 'fr' | 'tr' | 'pl' | 'th' | 'ur' | 'vi' | 'ja' | 'ru';
|
|
315
|
+
export declare type CurrencyType = 'USD' | 'BRL' | 'CNY' | 'EUR' | 'GBP' | 'HKD' | 'JPY' | 'RUB' | 'VND';
|
|
304
316
|
export declare type LanguageOptionType = {
|
|
305
317
|
text: string;
|
|
306
318
|
value: LanguageType;
|
|
@@ -312,6 +324,7 @@ export declare enum WalletUnlockType {
|
|
|
312
324
|
}
|
|
313
325
|
export interface UiSettings {
|
|
314
326
|
language: LanguageType;
|
|
327
|
+
currency: string;
|
|
315
328
|
browserConfirmationType: BrowserConfirmationType;
|
|
316
329
|
isShowZeroBalance: boolean;
|
|
317
330
|
isShowBalance: boolean;
|
|
@@ -342,6 +355,9 @@ export declare type RequestChangeShowZeroBalance = {
|
|
|
342
355
|
export declare type RequestChangeLanguage = {
|
|
343
356
|
language: LanguageType;
|
|
344
357
|
};
|
|
358
|
+
export declare type RequestChangePriceCurrency = {
|
|
359
|
+
currency: CurrencyType;
|
|
360
|
+
};
|
|
345
361
|
export declare type RequestChangeShowBalance = {
|
|
346
362
|
enable: boolean;
|
|
347
363
|
};
|
|
@@ -1765,6 +1781,7 @@ export interface KoniRequestSignatures {
|
|
|
1765
1781
|
'pri(settings.saveUnlockType)': [RequestUnlockType, boolean];
|
|
1766
1782
|
'pri(settings.saveEnableChainPatrol)': [RequestChangeEnableChainPatrol, boolean];
|
|
1767
1783
|
'pri(settings.saveLanguage)': [RequestChangeLanguage, boolean];
|
|
1784
|
+
'pri(settings.savePriceCurrency)': [RequestChangePriceCurrency, boolean];
|
|
1768
1785
|
'pri(settings.saveShowZeroBalance)': [RequestChangeShowZeroBalance, boolean];
|
|
1769
1786
|
'pri(settings.saveShowBalance)': [RequestChangeShowBalance, boolean];
|
|
1770
1787
|
'pri(settings.logo.assets.subscribe)': [null, Record<string, string>, Record<string, string>];
|
package/cjs/constants/staking.js
CHANGED
package/cjs/constants/storage.js
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.LANGUAGE = void 0;
|
|
6
|
+
exports.LANGUAGE = exports.CURRENCY = void 0;
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
10
10
|
const LANGUAGE = 'current-language';
|
|
11
|
-
exports.LANGUAGE = LANGUAGE;
|
|
11
|
+
exports.LANGUAGE = LANGUAGE;
|
|
12
|
+
const CURRENCY = 'current-currency';
|
|
13
|
+
exports.CURRENCY = CURRENCY;
|
|
@@ -5,33 +5,76 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getTokenPrice = void 0;
|
|
8
|
+
var _staticData = require("@subwallet/extension-base/utils/staticData");
|
|
8
9
|
var _axios = _interopRequireDefault(require("axios"));
|
|
9
10
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
12
|
|
|
13
|
+
let useBackupApi = false;
|
|
12
14
|
const getTokenPrice = async function (priceIds) {
|
|
13
|
-
let
|
|
15
|
+
let currencyCode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'USD';
|
|
14
16
|
try {
|
|
15
|
-
|
|
16
|
-
const idStr = priceIds.join(',');
|
|
17
|
-
const
|
|
18
|
-
|
|
17
|
+
var _resMultiPromise$, _resMultiPromise$2;
|
|
18
|
+
const idStr = Array.from(priceIds).join(',');
|
|
19
|
+
const getPriceMap = async () => {
|
|
20
|
+
var _rs, _rs2;
|
|
21
|
+
let rs;
|
|
22
|
+
if (!useBackupApi) {
|
|
23
|
+
try {
|
|
24
|
+
rs = await _axios.default.get(`https://api.coingecko.com/api/v3/coins/markets?vs_currency=${currencyCode.toLowerCase()}&per_page=250&ids=${idStr}`);
|
|
25
|
+
} catch (err) {
|
|
26
|
+
useBackupApi = true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (useBackupApi || ((_rs = rs) === null || _rs === void 0 ? void 0 : _rs.status) !== 200) {
|
|
30
|
+
useBackupApi = true;
|
|
31
|
+
rs = await _axios.default.get(`https://chain-data.subwallet.app/api/price/get?ids=${idStr}`);
|
|
32
|
+
}
|
|
33
|
+
if (((_rs2 = rs) === null || _rs2 === void 0 ? void 0 : _rs2.status) !== 200) {
|
|
34
|
+
console.warn('Failed to get token price');
|
|
35
|
+
}
|
|
36
|
+
return rs;
|
|
37
|
+
};
|
|
38
|
+
const getExchangeRate = async () => {
|
|
39
|
+
var _rs3;
|
|
40
|
+
let rs;
|
|
41
|
+
try {
|
|
42
|
+
rs = await _axios.default.get('https://api-cache.subwallet.app/exchange-rate');
|
|
43
|
+
} catch (e) {
|
|
44
|
+
console.warn('Failed to get exchange rate');
|
|
45
|
+
}
|
|
46
|
+
if (((_rs3 = rs) === null || _rs3 === void 0 ? void 0 : _rs3.status) !== 200) {
|
|
47
|
+
console.warn('Failed to get exchange rate');
|
|
48
|
+
}
|
|
49
|
+
return rs;
|
|
50
|
+
};
|
|
51
|
+
const resMultiPromise = await Promise.all([getPriceMap(), getExchangeRate()]);
|
|
52
|
+
const responseDataPrice = ((_resMultiPromise$ = resMultiPromise[0]) === null || _resMultiPromise$ === void 0 ? void 0 : _resMultiPromise$.data) || [];
|
|
53
|
+
const responseDataExchangeRate = ((_resMultiPromise$2 = resMultiPromise[1]) === null || _resMultiPromise$2 === void 0 ? void 0 : _resMultiPromise$2.data) || {};
|
|
19
54
|
const priceMap = {};
|
|
20
55
|
const price24hMap = {};
|
|
21
|
-
|
|
56
|
+
const exchangeRateMap = Object.keys(responseDataExchangeRate.conversion_rates).reduce((map, exchangeKey) => {
|
|
57
|
+
if (!_staticData.staticData[_staticData.StaticKey.CURRENCY_SYMBOL][exchangeKey]) {
|
|
58
|
+
return map;
|
|
59
|
+
}
|
|
60
|
+
map[exchangeKey] = {
|
|
61
|
+
exchange: responseDataExchangeRate.conversion_rates[exchangeKey],
|
|
62
|
+
label: _staticData.staticData[_staticData.StaticKey.CURRENCY_SYMBOL][exchangeKey].label
|
|
63
|
+
};
|
|
64
|
+
return map;
|
|
65
|
+
}, {});
|
|
66
|
+
const currencyData = _staticData.staticData[_staticData.StaticKey.CURRENCY_SYMBOL][currencyCode];
|
|
67
|
+
responseDataPrice.forEach(val => {
|
|
22
68
|
const currentPrice = val.current_price || 0;
|
|
23
69
|
const price24h = currentPrice - (val.price_change_24h || 0);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// if (inverseMap[val.id]) {
|
|
28
|
-
// priceMap[inverseMap[val.id]] = currentPrice;
|
|
29
|
-
// price24hMap[inverseMap[val.id]] = price24h;
|
|
30
|
-
// }
|
|
70
|
+
const exchangeRate = exchangeRateMap[currencyCode] || 1;
|
|
71
|
+
priceMap[val.id] = currentPrice * exchangeRate.exchange;
|
|
72
|
+
price24hMap[val.id] = price24h * exchangeRate.exchange;
|
|
31
73
|
});
|
|
32
|
-
|
|
33
74
|
return {
|
|
34
|
-
currency,
|
|
75
|
+
currency: currencyCode,
|
|
76
|
+
currencyData,
|
|
77
|
+
exchangeRateMap,
|
|
35
78
|
priceMap,
|
|
36
79
|
price24hMap
|
|
37
80
|
};
|
|
@@ -126,7 +126,7 @@ const TRANSFER_CHAIN_ID = {
|
|
|
126
126
|
[SUPPORTED_TRANSFER_EVM_CHAIN_NAME.shibuya]: 81
|
|
127
127
|
};
|
|
128
128
|
exports.TRANSFER_CHAIN_ID = TRANSFER_CHAIN_ID;
|
|
129
|
-
let SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME;
|
|
129
|
+
let SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME; // This is for localhost or http only
|
|
130
130
|
exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME;
|
|
131
131
|
(function (SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME) {
|
|
132
132
|
SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME["statemine"] = "statemine";
|
|
@@ -150,27 +150,31 @@ if (isFirefox) {
|
|
|
150
150
|
weight: 5000
|
|
151
151
|
});
|
|
152
152
|
}
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
153
|
+
if (_utils.RuntimeInfo.protocol && _utils.RuntimeInfo.protocol.startsWith('http')) {
|
|
154
|
+
// This is for https
|
|
155
|
+
if (_utils.RuntimeInfo.protocol.startsWith('https')) {
|
|
156
|
+
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
157
|
+
provider: IPFS_FLEEK,
|
|
158
|
+
weight: 4
|
|
159
|
+
}, {
|
|
160
|
+
provider: IPFS_GATEWAY_4EVERLAND,
|
|
161
|
+
weight: 2
|
|
162
|
+
}, {
|
|
163
|
+
provider: IPFS_W3S_LINK,
|
|
164
|
+
weight: 1
|
|
165
|
+
}, {
|
|
166
|
+
provider: CF_IPFS_GATEWAY,
|
|
167
|
+
weight: 4
|
|
168
|
+
}, {
|
|
169
|
+
provider: PINATA_IPFS_GATEWAY,
|
|
170
|
+
weight: 1 // Rate limit too low
|
|
171
|
+
}, {
|
|
172
|
+
provider: IPFS_IO,
|
|
173
|
+
weight: 5
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
// This is for extension env or other
|
|
174
178
|
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
175
179
|
provider: NFT_STORAGE_GATEWAY,
|
|
176
180
|
weight: 50
|