@subwallet/extension-base 1.3.31-1 → 1.3.33-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 +94 -3
- package/background/KoniTypes.js +14 -0
- package/background/errors/CardanoProviderError.d.ts +6 -0
- package/background/errors/CardanoProviderError.js +61 -0
- package/background/types.d.ts +2 -2
- package/cjs/background/KoniTypes.js +16 -1
- package/cjs/background/errors/CardanoProviderError.js +67 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/index.js +4 -1
- package/cjs/core/logic-validation/request.js +50 -3
- package/cjs/koni/api/contract-handler/evm/web3.js +21 -0
- package/cjs/koni/api/staking/bonding/utils.js +24 -3
- package/cjs/koni/background/handlers/Extension.js +141 -107
- package/cjs/koni/background/handlers/State.js +232 -6
- package/cjs/koni/background/handlers/Tabs.js +277 -55
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/cardano/cips/cip30.js +63 -0
- package/cjs/page/cardano/cips/index.js +20 -0
- package/cjs/page/cardano/index.js +41 -0
- package/cjs/page/{SubWalleEvmProvider.js → evm/index.js} +2 -2
- package/cjs/page/index.js +9 -4
- package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +6 -2
- package/cjs/services/balance-service/transfer/xcm/index.js +2 -0
- package/cjs/services/chain-service/handler/CardanoApi.js +33 -0
- package/cjs/services/chain-service/index.js +31 -0
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +42 -8
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/tao.js +13 -13
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
- package/cjs/services/price-service/coingecko.js +22 -3
- package/cjs/services/price-service/index.js +75 -2
- package/cjs/services/request-service/constants.js +3 -1
- package/cjs/services/request-service/handler/AuthRequestHandler.js +38 -5
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +45 -3
- package/cjs/services/request-service/helper/index.js +419 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +1 -1
- package/cjs/services/swap-service/handler/base-handler.js +81 -21
- package/cjs/services/swap-service/handler/hydradx-handler.js +1 -1
- package/cjs/services/swap-service/handler/uniswap-handler.js +274 -45
- package/cjs/services/swap-service/index.js +33 -11
- package/cjs/services/swap-service/utils.js +15 -2
- package/cjs/utils/auth.js +2 -1
- package/cjs/utils/cardano.js +20 -0
- package/cjs/utils/index.js +16 -4
- package/cjs/utils/price.js +28 -0
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/index.d.ts +1 -0
- package/constants/index.js +1 -0
- package/core/logic-validation/request.d.ts +6 -2
- package/core/logic-validation/request.js +51 -5
- package/koni/api/contract-handler/evm/web3.d.ts +2 -0
- package/koni/api/contract-handler/evm/web3.js +19 -0
- package/koni/api/staking/bonding/utils.d.ts +2 -1
- package/koni/api/staking/bonding/utils.js +23 -3
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +32 -2
- package/koni/background/handlers/State.d.ts +6 -1
- package/koni/background/handlers/State.js +228 -6
- package/koni/background/handlers/Tabs.d.ts +11 -1
- package/koni/background/handlers/Tabs.js +242 -19
- package/package.json +67 -42
- package/packageInfo.js +1 -1
- package/page/cardano/cips/cip30.d.ts +22 -0
- package/page/cardano/cips/cip30.js +55 -0
- package/page/cardano/cips/index.d.ts +3 -0
- package/page/cardano/cips/index.js +7 -0
- package/page/cardano/index.d.ts +13 -0
- package/page/cardano/index.js +34 -0
- package/page/{SubWalleEvmProvider.d.ts → evm/index.d.ts} +3 -2
- package/page/{SubWalleEvmProvider.js → evm/index.js} +1 -1
- package/page/index.d.ts +3 -2
- package/page/index.js +6 -2
- package/page/{Accounts.d.ts → substrate/Accounts.d.ts} +1 -1
- package/page/{Metadata.d.ts → substrate/Metadata.d.ts} +1 -1
- package/page/{PostMessageProvider.d.ts → substrate/PostMessageProvider.d.ts} +1 -1
- package/page/{Signer.d.ts → substrate/Signer.d.ts} +1 -1
- package/page/{Injected.d.ts → substrate/index.d.ts} +1 -1
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +14 -0
- package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +4 -0
- package/services/balance-service/transfer/xcm/acrossBridge/index.js +4 -1
- package/services/balance-service/transfer/xcm/index.js +2 -0
- package/services/chain-service/handler/CardanoApi.d.ts +3 -1
- package/services/chain-service/handler/CardanoApi.js +33 -0
- package/services/chain-service/index.d.ts +5 -1
- package/services/chain-service/index.js +32 -1
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
- package/services/earning-service/handlers/native-staking/dtao.js +2 -2
- package/services/earning-service/handlers/native-staking/mythos.js +42 -8
- package/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
- package/services/earning-service/handlers/native-staking/tao.js +14 -14
- package/services/earning-service/handlers/nomination-pool/index.js +1 -1
- package/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
- package/services/price-service/coingecko.d.ts +2 -1
- package/services/price-service/coingecko.js +19 -1
- package/services/price-service/index.d.ts +11 -1
- package/services/price-service/index.js +78 -5
- package/services/request-service/constants.js +3 -1
- package/services/request-service/handler/AuthRequestHandler.js +40 -7
- package/services/request-service/handler/CardanoRequestHandler.d.ts +2 -0
- package/services/request-service/handler/CardanoRequestHandler.js +45 -3
- package/services/request-service/helper/index.d.ts +54 -0
- package/services/request-service/helper/index.js +406 -1
- package/services/request-service/types.d.ts +3 -1
- package/services/swap-service/handler/asset-hub/handler.js +1 -1
- package/services/swap-service/handler/base-handler.d.ts +3 -1
- package/services/swap-service/handler/base-handler.js +82 -22
- package/services/swap-service/handler/hydradx-handler.js +1 -1
- package/services/swap-service/handler/uniswap-handler.d.ts +5 -0
- package/services/swap-service/handler/uniswap-handler.js +275 -46
- package/services/swap-service/index.js +34 -12
- package/services/swap-service/utils.d.ts +3 -2
- package/services/swap-service/utils.js +13 -1
- package/types/swap/index.d.ts +1 -0
- package/types/transaction/process.d.ts +2 -0
- package/utils/auth.js +3 -2
- package/utils/cardano.d.ts +2 -0
- package/utils/cardano.js +12 -0
- package/utils/index.d.ts +2 -1
- package/utils/index.js +2 -1
- package/utils/price.d.ts +3 -0
- package/utils/price.js +20 -0
- package/cjs/utils/canDerive.js +0 -12
- package/utils/canDerive.d.ts +0 -2
- package/utils/canDerive.js +0 -6
- /package/cjs/page/{Accounts.js → substrate/Accounts.js} +0 -0
- /package/cjs/page/{Metadata.js → substrate/Metadata.js} +0 -0
- /package/cjs/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
- /package/cjs/page/{Signer.js → substrate/Signer.js} +0 -0
- /package/cjs/page/{Injected.js → substrate/index.js} +0 -0
- /package/page/{Accounts.js → substrate/Accounts.js} +0 -0
- /package/page/{Metadata.js → substrate/Metadata.js} +0 -0
- /package/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
- /package/page/{Signer.js → substrate/Signer.js} +0 -0
- /package/page/{Injected.js → substrate/index.js} +0 -0
|
@@ -27,7 +27,8 @@ const DEFAULT_PRICE_SUBJECT = {
|
|
|
27
27
|
},
|
|
28
28
|
priceMap: {},
|
|
29
29
|
price24hMap: {},
|
|
30
|
-
exchangeRateMap: {}
|
|
30
|
+
exchangeRateMap: {},
|
|
31
|
+
lastUpdatedMap: {}
|
|
31
32
|
};
|
|
32
33
|
const checkFetchSuccess = (obj1, obj2) => {
|
|
33
34
|
return Object.keys(obj1).length > 0 && Object.keys(obj2).length > 0;
|
|
@@ -41,6 +42,7 @@ class PriceService {
|
|
|
41
42
|
});
|
|
42
43
|
this.rawPriceSubject = new _rxjs.BehaviorSubject({});
|
|
43
44
|
this.rawExchangeRateMap = new _rxjs.BehaviorSubject({});
|
|
45
|
+
this.historyTokenPriceSubject = new _rxjs.BehaviorSubject({});
|
|
44
46
|
this.status = _types.ServiceStatus.NOT_INITIALIZED;
|
|
45
47
|
this.dbService = dbService;
|
|
46
48
|
this.eventService = eventService;
|
|
@@ -99,6 +101,7 @@ class PriceService {
|
|
|
99
101
|
}
|
|
100
102
|
async calculatePriceMap(currency) {
|
|
101
103
|
let {
|
|
104
|
+
lastUpdatedMap,
|
|
102
105
|
price24hMap,
|
|
103
106
|
priceMap
|
|
104
107
|
} = this.rawPriceSubject.value;
|
|
@@ -129,7 +132,10 @@ class PriceService {
|
|
|
129
132
|
},
|
|
130
133
|
currency: currencyKey,
|
|
131
134
|
exchangeRateMap: exchangeRateData,
|
|
132
|
-
currencyData: _staticData.staticData[_staticData.StaticKey.CURRENCY_SYMBOL][currencyKey || DEFAULT_CURRENCY]
|
|
135
|
+
currencyData: _staticData.staticData[_staticData.StaticKey.CURRENCY_SYMBOL][currencyKey || DEFAULT_CURRENCY],
|
|
136
|
+
lastUpdatedMap: {
|
|
137
|
+
...lastUpdatedMap
|
|
138
|
+
}
|
|
133
139
|
};
|
|
134
140
|
if (currencyKey === DEFAULT_CURRENCY) {
|
|
135
141
|
return finalPriceMap;
|
|
@@ -171,6 +177,73 @@ class PriceService {
|
|
|
171
177
|
});
|
|
172
178
|
this.refreshTimeout = setTimeout(this.refreshPriceData.bind(this), _constants.CRON_REFRESH_PRICE_INTERVAL);
|
|
173
179
|
}
|
|
180
|
+
async getHistoryTokenPriceData(priceId, timeframe) {
|
|
181
|
+
var _this$rawExchangeRate;
|
|
182
|
+
const id = (0, _utils.getTokenPriceHistoryId)(priceId, timeframe);
|
|
183
|
+
const currentData = this.historyTokenPriceSubject.value[id];
|
|
184
|
+
const now = Date.now();
|
|
185
|
+
const timeInterval = _utils.TIME_INTERVAL[timeframe];
|
|
186
|
+
let history = currentData ? structuredClone(currentData) : undefined;
|
|
187
|
+
const needsRefresh = !history || history.length === 0 || now - history[history.length - 1].time > timeInterval;
|
|
188
|
+
if (needsRefresh) {
|
|
189
|
+
const {
|
|
190
|
+
history: newHistory
|
|
191
|
+
} = await (0, _coingecko.getHistoryPrice)(priceId, timeframe);
|
|
192
|
+
if (newHistory.length > 0) {
|
|
193
|
+
history = newHistory;
|
|
194
|
+
|
|
195
|
+
// Update internal cache
|
|
196
|
+
this.historyTokenPriceSubject.next({
|
|
197
|
+
...this.historyTokenPriceSubject.value,
|
|
198
|
+
[id]: structuredClone(history)
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (!history) {
|
|
203
|
+
return {
|
|
204
|
+
history: []
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Resolve current currency
|
|
209
|
+
const {
|
|
210
|
+
promise,
|
|
211
|
+
resolve
|
|
212
|
+
} = (0, _promise.createPromiseHandler)();
|
|
213
|
+
this.getCurrentCurrency(resolve);
|
|
214
|
+
const currencyKey = await promise;
|
|
215
|
+
const exchangeRate = (_this$rawExchangeRate = this.rawExchangeRateMap.value[currencyKey || DEFAULT_CURRENCY]) === null || _this$rawExchangeRate === void 0 ? void 0 : _this$rawExchangeRate.exchange;
|
|
216
|
+
|
|
217
|
+
// Convert value if needed
|
|
218
|
+
if (exchangeRate && currencyKey !== DEFAULT_CURRENCY) {
|
|
219
|
+
history = history.map(point => ({
|
|
220
|
+
...point,
|
|
221
|
+
value: point.value * exchangeRate
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
history
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
subscribeCurrentTokenPrice(priceId, callback) {
|
|
229
|
+
const priceData = this.priceSubject.value;
|
|
230
|
+
const currentPrice = {
|
|
231
|
+
value: priceData.priceMap[priceId],
|
|
232
|
+
value24h: priceData.price24hMap[priceId],
|
|
233
|
+
time: priceData.lastUpdatedMap[priceId].getTime()
|
|
234
|
+
};
|
|
235
|
+
const unsubscribe = this.priceSubject.pipe((0, _rxjs.map)(valueSubject => ({
|
|
236
|
+
value: valueSubject.priceMap[priceId],
|
|
237
|
+
value24h: valueSubject.price24hMap[priceId],
|
|
238
|
+
time: valueSubject.lastUpdatedMap[priceId].getTime()
|
|
239
|
+
})), (0, _rxjs.distinctUntilChanged)()).subscribe(callback);
|
|
240
|
+
return {
|
|
241
|
+
unsubscribe: () => {
|
|
242
|
+
unsubscribe.unsubscribe();
|
|
243
|
+
},
|
|
244
|
+
currentPrice
|
|
245
|
+
};
|
|
246
|
+
}
|
|
174
247
|
async init() {
|
|
175
248
|
this.status = _types.ServiceStatus.INITIALIZING;
|
|
176
249
|
// Fetch data from storage
|
|
@@ -12,7 +12,9 @@ exports.EXTENSION_REQUEST_URL = EXTENSION_REQUEST_URL;
|
|
|
12
12
|
const PREDEFINED_CHAIN_DAPP_CHAIN_MAP = {
|
|
13
13
|
'portal.astar.network': ['astar', 'astarEvm'],
|
|
14
14
|
'apps.moonbeam.network': ['moonbeam', 'moonriver'],
|
|
15
|
-
'app.stellaswap.com': ['moonbeam']
|
|
15
|
+
'app.stellaswap.com': ['moonbeam'],
|
|
16
|
+
'testnet-preprod.minswap.org': ['cardano_preproduction'],
|
|
17
|
+
'localhost:7777': ['cardano_preproduction']
|
|
16
18
|
};
|
|
17
19
|
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = PREDEFINED_CHAIN_DAPP_CHAIN_MAP;
|
|
18
20
|
const WEB_APP_URL = [
|
|
@@ -45,6 +45,13 @@ class AuthRequestHandler {
|
|
|
45
45
|
value.accountAuthTypes = ['evm', 'substrate'];
|
|
46
46
|
needUpdateAuthList = true;
|
|
47
47
|
}
|
|
48
|
+
const existKeyEvmNetworkConnect = value.currentEvmNetworkKey;
|
|
49
|
+
if (existKeyEvmNetworkConnect) {
|
|
50
|
+
value.currentNetworkMap = {
|
|
51
|
+
evm: existKeyEvmNetworkConnect
|
|
52
|
+
};
|
|
53
|
+
needUpdateAuthList = true;
|
|
54
|
+
}
|
|
48
55
|
acc[key] = {
|
|
49
56
|
...value
|
|
50
57
|
};
|
|
@@ -158,6 +165,18 @@ class AuthRequestHandler {
|
|
|
158
165
|
}
|
|
159
166
|
}
|
|
160
167
|
}
|
|
168
|
+
if (options.accessType === 'cardano') {
|
|
169
|
+
const cardanoChains = Object.values(chainInfoMaps).filter(_utils._isChainCardanoCompatible);
|
|
170
|
+
chainInfo = (defaultChain ? chainInfoMaps[defaultChain] : chainInfoMaps.cardano) || cardanoChains[0]; // auto active cardano mainnet chain, because dont support switch network yet
|
|
171
|
+
|
|
172
|
+
if (options.autoActive) {
|
|
173
|
+
var _chainInfo3;
|
|
174
|
+
if (!needEnableChains.includes((_chainInfo3 = chainInfo) === null || _chainInfo3 === void 0 ? void 0 : _chainInfo3.slug)) {
|
|
175
|
+
var _chainInfo4;
|
|
176
|
+
needEnableChains.push((_chainInfo4 = chainInfo) === null || _chainInfo4 === void 0 ? void 0 : _chainInfo4.slug);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
161
180
|
needEnableChains = needEnableChains.filter(slug => {
|
|
162
181
|
var _chainStateMap$slug;
|
|
163
182
|
return !((_chainStateMap$slug = chainStateMap[slug]) !== null && _chainStateMap$slug !== void 0 && _chainStateMap$slug.active);
|
|
@@ -206,20 +225,31 @@ class AuthRequestHandler {
|
|
|
206
225
|
if ((0, _keyring.isTonAddress)(a) && !accountAuthTypes.includes('ton')) {
|
|
207
226
|
return true;
|
|
208
227
|
}
|
|
228
|
+
if ((0, _keyring.isCardanoAddress)(a) && !accountAuthTypes.includes('cardano')) {
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
209
231
|
return false;
|
|
210
232
|
});
|
|
211
233
|
backupAllowed.forEach(acc => {
|
|
212
234
|
isAllowedMap[acc] = true;
|
|
213
235
|
});
|
|
214
236
|
}
|
|
215
|
-
|
|
237
|
+
const defaultNetworkMap = {};
|
|
216
238
|
if (accountAuthTypes.includes('evm')) {
|
|
217
239
|
const chainInfo = this.getDAppChainInfo({
|
|
218
240
|
accessType: 'evm',
|
|
219
241
|
autoActive: true,
|
|
220
242
|
url
|
|
221
243
|
});
|
|
222
|
-
|
|
244
|
+
defaultNetworkMap.evm = chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.slug;
|
|
245
|
+
}
|
|
246
|
+
if (accountAuthTypes.includes('cardano')) {
|
|
247
|
+
const chainInfo = this.getDAppChainInfo({
|
|
248
|
+
accessType: 'cardano',
|
|
249
|
+
autoActive: true,
|
|
250
|
+
url
|
|
251
|
+
});
|
|
252
|
+
defaultNetworkMap.cardano = chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.slug;
|
|
223
253
|
}
|
|
224
254
|
this.getAuthorize(value => {
|
|
225
255
|
let authorizeList = {};
|
|
@@ -243,7 +273,7 @@ class AuthRequestHandler {
|
|
|
243
273
|
origin,
|
|
244
274
|
url,
|
|
245
275
|
accountAuthTypes: [...new Set([...accountAuthTypes, ...((existed === null || existed === void 0 ? void 0 : existed.accountAuthTypes) || [])])],
|
|
246
|
-
|
|
276
|
+
currentNetworkMap: existed ? existed.currentNetworkMap : defaultNetworkMap
|
|
247
277
|
};
|
|
248
278
|
this.setAuthorize(authorizeList, () => {
|
|
249
279
|
cb();
|
|
@@ -347,12 +377,14 @@ class AuthRequestHandler {
|
|
|
347
377
|
list.push(...allowedListByRequestType.filter(a => (0, _keyring.isSubstrateAddress)(a)));
|
|
348
378
|
} else if (accountAuthType === 'ton') {
|
|
349
379
|
list.push(...allowedListByRequestType.filter(a => (0, _keyring.isTonAddress)(a)));
|
|
380
|
+
} else if (accountAuthType === 'cardano') {
|
|
381
|
+
list.push(...allowedListByRequestType.filter(a => (0, _keyring.isCardanoAddress)(a)));
|
|
350
382
|
}
|
|
351
383
|
return list;
|
|
352
384
|
}, []);
|
|
353
385
|
if (!confirmAnotherType && !request.reConfirm && allowedListByRequestType.length !== 0) {
|
|
354
386
|
// Prevent appear confirmation popup
|
|
355
|
-
return
|
|
387
|
+
return true;
|
|
356
388
|
}
|
|
357
389
|
} else {
|
|
358
390
|
// Auto auth for web app
|
|
@@ -368,7 +400,8 @@ class AuthRequestHandler {
|
|
|
368
400
|
isAllowedMap,
|
|
369
401
|
origin,
|
|
370
402
|
url,
|
|
371
|
-
accountAuthTypes: _constants.ALL_ACCOUNT_AUTH_TYPES
|
|
403
|
+
accountAuthTypes: _constants.ALL_ACCOUNT_AUTH_TYPES,
|
|
404
|
+
currentNetworkMap: {}
|
|
372
405
|
};
|
|
373
406
|
this.setAuthorize(authList);
|
|
374
407
|
return true;
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _cardanoSerializationLibNodejs = require("@emurgo/cardano-serialization-lib-nodejs");
|
|
7
8
|
var _request = require("@subwallet/extension-base/utils/request");
|
|
8
9
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
9
10
|
var _i18next = require("i18next");
|
|
@@ -18,7 +19,8 @@ class CardanoRequestHandler {
|
|
|
18
19
|
confirmationsQueueSubjectCardano = new _rxjs.BehaviorSubject({
|
|
19
20
|
cardanoSignatureRequest: {},
|
|
20
21
|
cardanoSendTransactionRequest: {},
|
|
21
|
-
cardanoWatchTransactionRequest: {}
|
|
22
|
+
cardanoWatchTransactionRequest: {},
|
|
23
|
+
cardanoSignTransactionRequest: {}
|
|
22
24
|
});
|
|
23
25
|
confirmationsPromiseMap = {};
|
|
24
26
|
constructor(requestService) {
|
|
@@ -122,9 +124,11 @@ class CardanoRequestHandler {
|
|
|
122
124
|
async decorateResult(t, request, result) {
|
|
123
125
|
if (result.payload === '') {
|
|
124
126
|
if (t === 'cardanoSignatureRequest') {
|
|
125
|
-
|
|
127
|
+
result.payload = this.signMessage(request);
|
|
126
128
|
} else if (t === 'cardanoSendTransactionRequest') {
|
|
127
129
|
result.payload = this.signTransactionCardano(request);
|
|
130
|
+
} else if (t === 'cardanoSignTransactionRequest') {
|
|
131
|
+
result.payload = this.signDappTransactionCardano(request);
|
|
128
132
|
}
|
|
129
133
|
if (t === 'cardanoSignatureRequest' || t === 'cardanoSendTransactionRequest') {
|
|
130
134
|
const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
|
|
@@ -134,6 +138,17 @@ class CardanoRequestHandler {
|
|
|
134
138
|
}
|
|
135
139
|
}
|
|
136
140
|
}
|
|
141
|
+
signMessage(confirmation) {
|
|
142
|
+
const {
|
|
143
|
+
address,
|
|
144
|
+
payload
|
|
145
|
+
} = confirmation.payload;
|
|
146
|
+
const pair = _uiKeyring.keyring.getPair(address);
|
|
147
|
+
if (pair.isLocked) {
|
|
148
|
+
_uiKeyring.keyring.unlockPair(pair.address);
|
|
149
|
+
}
|
|
150
|
+
return pair.cardano.signMessage(payload, true);
|
|
151
|
+
}
|
|
137
152
|
signTransactionCardano(confirmation) {
|
|
138
153
|
// alibaba
|
|
139
154
|
const transaction = confirmation.payload;
|
|
@@ -145,7 +160,34 @@ class CardanoRequestHandler {
|
|
|
145
160
|
if (pair.isLocked) {
|
|
146
161
|
_uiKeyring.keyring.unlockPair(pair.address);
|
|
147
162
|
}
|
|
148
|
-
return pair.cardano.
|
|
163
|
+
return pair.cardano.signTransaction(cardanoPayload);
|
|
164
|
+
}
|
|
165
|
+
signDappTransactionCardano(confirmation) {
|
|
166
|
+
var _FixedTransaction$fro;
|
|
167
|
+
// alibaba
|
|
168
|
+
const transaction = confirmation.payload;
|
|
169
|
+
const {
|
|
170
|
+
addressRequireKeyTypes,
|
|
171
|
+
cardanoPayload,
|
|
172
|
+
from
|
|
173
|
+
} = transaction;
|
|
174
|
+
const vkeyWitnessesFinal = _cardanoSerializationLibNodejs.Vkeywitnesses.new();
|
|
175
|
+
const txWitnessSet = (_FixedTransaction$fro = _cardanoSerializationLibNodejs.FixedTransaction.from_hex(cardanoPayload).witness_set()) !== null && _FixedTransaction$fro !== void 0 ? _FixedTransaction$fro : _cardanoSerializationLibNodejs.TransactionWitnessSet.new();
|
|
176
|
+
const pair = _uiKeyring.keyring.getPair(from);
|
|
177
|
+
if (pair.isLocked) {
|
|
178
|
+
_uiKeyring.keyring.unlockPair(pair.address);
|
|
179
|
+
}
|
|
180
|
+
const keyTypes = [...new Set(addressRequireKeyTypes)];
|
|
181
|
+
const vKeyWitnessesHex = pair.cardano.signTransaction(cardanoPayload, {
|
|
182
|
+
needVkeywitness: true,
|
|
183
|
+
keyTypes
|
|
184
|
+
});
|
|
185
|
+
const vKeyWitnesses = _cardanoSerializationLibNodejs.Vkeywitnesses.from_hex(vKeyWitnessesHex);
|
|
186
|
+
for (let i = 0; i < vKeyWitnesses.len(); i++) {
|
|
187
|
+
vkeyWitnessesFinal.add(vKeyWitnesses.get(i));
|
|
188
|
+
}
|
|
189
|
+
txWitnessSet.set_vkeys(vkeyWitnessesFinal);
|
|
190
|
+
return txWitnessSet.to_hex();
|
|
149
191
|
}
|
|
150
192
|
resetWallet() {
|
|
151
193
|
const confirmations = this.confirmationsQueueSubjectCardano.getValue();
|