@subwallet/extension-base 1.2.32-0 → 1.2.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 +78 -227
- package/background/KoniTypes.js +3 -40
- package/background/errors/SWError.d.ts +4 -7
- package/background/errors/SWError.js +4 -0
- package/background/errors/TransactionError.d.ts +2 -2
- package/background/errors/TransactionError.js +2 -4
- package/background/handlers/State.d.ts +0 -12
- package/background/types.d.ts +9 -134
- package/background/warnings/TransactionWarning.d.ts +1 -1
- package/background/warnings/TransactionWarning.js +5 -1
- package/cjs/background/KoniTypes.js +4 -44
- package/cjs/background/errors/SWError.js +4 -0
- package/cjs/background/errors/TransactionError.js +13 -15
- package/cjs/background/warnings/TransactionWarning.js +6 -2
- package/cjs/constants/environment.js +13 -0
- package/cjs/constants/index.js +40 -13
- package/cjs/constants/signing.js +23 -0
- package/cjs/constants/storage.js +4 -2
- package/cjs/core/consts.js +20 -0
- package/cjs/core/logic-validation/recipientAddress.js +106 -0
- package/cjs/core/logic-validation/request.js +11 -19
- package/cjs/core/logic-validation/swap.js +5 -5
- package/cjs/core/logic-validation/transfer.js +83 -42
- package/cjs/core/types.js +26 -0
- package/cjs/core/utils.js +113 -0
- package/cjs/koni/api/dotsama/crowdloan.js +1 -1
- package/cjs/koni/api/nft/index.js +14 -5
- package/cjs/koni/api/staking/bonding/paraChain.js +8 -8
- package/cjs/koni/api/staking/bonding/relayChain.js +9 -9
- package/cjs/koni/api/staking/index.js +4 -1
- package/cjs/koni/background/cron.js +7 -7
- package/cjs/koni/background/handlers/Extension.js +510 -1446
- package/cjs/koni/background/handlers/State.js +61 -238
- package/cjs/koni/background/handlers/Tabs.js +143 -107
- package/cjs/koni/background/subscription.js +5 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/Accounts.js +2 -5
- package/cjs/page/SubWalleEvmProvider.js +1 -1
- package/cjs/page/index.js +2 -1
- package/cjs/services/balance-service/BalanceMapImpl.js +48 -20
- package/cjs/services/balance-service/helpers/subscribe/index.js +27 -12
- package/cjs/services/balance-service/helpers/subscribe/ton/consts.js +40 -0
- package/cjs/services/balance-service/helpers/subscribe/ton/ton.js +120 -0
- package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +181 -0
- package/cjs/services/balance-service/index.js +25 -13
- package/cjs/services/balance-service/transfer/token.js +41 -24
- package/cjs/services/balance-service/transfer/ton-transfer.js +136 -0
- package/cjs/services/buy-service/index.js +5 -1
- package/cjs/services/chain-service/constants.js +1 -1
- package/cjs/services/chain-service/handler/TonApi.js +213 -0
- package/cjs/services/chain-service/handler/TonChainHandler.js +81 -0
- package/cjs/services/chain-service/index.js +32 -8
- package/cjs/services/chain-service/utils/index.js +78 -22
- package/cjs/services/earning-service/constants/chains.js +3 -1
- package/cjs/services/earning-service/handlers/base.js +2 -1
- package/cjs/services/earning-service/handlers/lending/base.js +8 -9
- package/cjs/services/earning-service/handlers/lending/interlay.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +9 -10
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/astar.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +13 -13
- package/cjs/services/earning-service/handlers/native-staking/base.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +15 -15
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +14 -14
- package/cjs/services/earning-service/handlers/special.js +10 -10
- package/cjs/services/earning-service/service.js +26 -17
- package/cjs/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
- package/cjs/services/history-service/index.js +29 -11
- package/cjs/services/history-service/subscan-history.js +9 -21
- package/cjs/services/keyring-service/context/account-context.js +259 -0
- package/cjs/services/keyring-service/context/handlers/Base.js +20 -0
- package/cjs/services/keyring-service/context/handlers/Derive.js +377 -0
- package/cjs/services/keyring-service/context/handlers/Inject.js +75 -0
- package/cjs/services/keyring-service/context/handlers/Json.js +348 -0
- package/cjs/services/keyring-service/context/handlers/Ledger.js +165 -0
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +218 -0
- package/cjs/services/keyring-service/context/handlers/Modify.js +258 -0
- package/cjs/services/keyring-service/context/handlers/Secret.js +310 -0
- package/cjs/services/keyring-service/context/handlers/index.js +82 -0
- package/cjs/services/keyring-service/context/state.js +649 -0
- package/cjs/services/keyring-service/context/stores/AccountProxy.js +32 -0
- package/cjs/services/keyring-service/context/stores/Base.js +37 -0
- package/cjs/services/keyring-service/context/stores/CurrentAccount.js +28 -0
- package/cjs/services/keyring-service/context/stores/ModifyPair.js +19 -0
- package/cjs/services/keyring-service/context/stores/index.js +38 -0
- package/cjs/services/keyring-service/index.js +20 -164
- package/cjs/services/migration-service/scripts/index.js +6 -4
- package/cjs/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
- package/cjs/services/migration-service/scripts/keyring/MigratePairData.js +28 -0
- package/cjs/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
- package/cjs/services/request-service/constants.js +5 -3
- package/cjs/services/request-service/handler/AuthRequestHandler.js +104 -57
- package/cjs/services/request-service/handler/EvmRequestHandler.js +3 -4
- package/cjs/services/request-service/handler/SubstrateRequestHandler.js +5 -11
- package/cjs/services/request-service/handler/TonRequestHandler.js +175 -0
- package/cjs/services/request-service/index.js +24 -5
- package/cjs/services/swap-service/handler/asset-hub/handler.js +6 -5
- package/cjs/services/swap-service/handler/base-handler.js +8 -8
- package/cjs/services/swap-service/handler/chainflip-handler.js +5 -4
- package/cjs/services/swap-service/handler/hydradx-handler.js +4 -3
- package/cjs/services/swap-service/index.js +4 -4
- package/cjs/services/transaction-service/helpers/index.js +6 -1
- package/cjs/services/transaction-service/index.js +184 -84
- package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
- package/cjs/stores/AccountProxyStore.js +18 -0
- package/cjs/stores/ModifyPairStore.js +18 -0
- package/cjs/stores/index.js +23 -2
- package/cjs/types/account/action/add/index.js +38 -0
- package/cjs/types/account/action/add/json.js +1 -0
- package/cjs/types/account/action/add/mnemonic.js +1 -0
- package/cjs/types/account/action/add/secret.js +1 -0
- package/cjs/types/account/action/derive.js +1 -0
- package/cjs/types/account/action/edit.js +1 -0
- package/cjs/types/account/action/export.js +1 -0
- package/cjs/types/account/action/index.js +71 -0
- package/cjs/types/account/action/subscribe.js +16 -0
- package/cjs/types/account/action/validate.js +1 -0
- package/cjs/types/account/error/common.js +40 -0
- package/cjs/types/account/error/derive.js +55 -0
- package/cjs/types/account/error/index.js +27 -0
- package/cjs/types/account/index.js +38 -0
- package/cjs/types/account/info/current.js +1 -0
- package/cjs/types/account/info/index.js +38 -0
- package/cjs/types/account/info/keyring.js +90 -0
- package/cjs/types/account/info/proxy.js +49 -0
- package/cjs/types/error.js +1 -0
- package/cjs/types/index.js +44 -0
- package/cjs/types/transaction/data.js +1 -0
- package/cjs/types/transaction/error.js +53 -0
- package/cjs/types/transaction/index.js +49 -0
- package/cjs/types/transaction/request.js +1 -0
- package/cjs/types/transaction/warning.js +14 -0
- package/cjs/types/yield/actions/join/validate.js +1 -16
- package/cjs/utils/account/analyze.js +166 -0
- package/cjs/utils/account/common.js +121 -0
- package/cjs/utils/account/derive/index.js +27 -0
- package/cjs/utils/account/derive/info/index.js +27 -0
- package/cjs/utils/account/derive/info/solo.js +246 -0
- package/cjs/utils/account/derive/info/unified.js +112 -0
- package/cjs/utils/account/derive/validate.js +177 -0
- package/cjs/utils/account/index.js +49 -0
- package/cjs/utils/account/transform.js +566 -0
- package/cjs/utils/auth.js +46 -0
- package/cjs/utils/getId.js +8 -1
- package/cjs/utils/index.js +48 -62
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +6 -0
- package/constants/index.d.ts +5 -1
- package/constants/index.js +5 -2
- package/constants/signing.d.ts +4 -0
- package/constants/signing.js +15 -0
- package/constants/storage.d.ts +1 -0
- package/constants/storage.js +2 -1
- package/core/consts.d.ts +1 -0
- package/core/consts.js +13 -0
- package/core/logic-validation/recipientAddress.d.ts +2 -0
- package/core/logic-validation/recipientAddress.js +100 -0
- package/core/logic-validation/request.js +10 -18
- package/core/logic-validation/swap.js +1 -1
- package/core/logic-validation/transfer.d.ts +3 -2
- package/core/logic-validation/transfer.js +50 -10
- package/core/types.d.ts +26 -0
- package/core/types.js +19 -0
- package/core/utils.d.ts +10 -0
- package/core/utils.js +105 -0
- package/koni/api/dotsama/crowdloan.js +1 -1
- package/koni/api/nft/index.js +14 -5
- package/koni/api/staking/bonding/paraChain.js +2 -2
- package/koni/api/staking/bonding/relayChain.js +2 -2
- package/koni/api/staking/index.js +4 -1
- package/koni/background/cron.js +7 -7
- package/koni/background/handlers/Extension.d.ts +26 -35
- package/koni/background/handlers/Extension.js +337 -1242
- package/koni/background/handlers/State.d.ts +12 -19
- package/koni/background/handlers/State.js +57 -231
- package/koni/background/handlers/Tabs.d.ts +2 -3
- package/koni/background/handlers/Tabs.js +105 -61
- package/koni/background/subscription.js +5 -5
- package/package.json +352 -53
- package/packageInfo.js +1 -1
- package/page/Accounts.js +2 -5
- package/page/SubWalleEvmProvider.js +1 -1
- package/page/index.js +2 -1
- package/services/balance-service/BalanceMapImpl.d.ts +6 -4
- package/services/balance-service/BalanceMapImpl.js +44 -18
- package/services/balance-service/helpers/subscribe/index.d.ts +3 -4
- package/services/balance-service/helpers/subscribe/index.js +29 -14
- package/services/balance-service/helpers/subscribe/ton/consts.d.ts +18 -0
- package/services/balance-service/helpers/subscribe/ton/consts.js +28 -0
- package/services/balance-service/helpers/subscribe/ton/ton.d.ts +3 -0
- package/services/balance-service/helpers/subscribe/ton/ton.js +111 -0
- package/services/balance-service/helpers/subscribe/ton/types.d.ts +26 -0
- package/services/balance-service/helpers/subscribe/ton/utils.d.ts +32 -0
- package/services/balance-service/helpers/subscribe/ton/utils.js +159 -0
- package/services/balance-service/index.js +25 -13
- package/services/balance-service/transfer/token.d.ts +2 -2
- package/services/balance-service/transfer/token.js +18 -1
- package/services/balance-service/transfer/ton-transfer.d.ts +25 -0
- package/services/balance-service/transfer/ton-transfer.js +127 -0
- package/services/buy-service/index.js +5 -1
- package/services/buy-service/types.d.ts +2 -2
- package/services/chain-service/constants.js +1 -1
- package/services/chain-service/handler/TonApi.d.ts +52 -0
- package/services/chain-service/handler/TonApi.js +204 -0
- package/services/chain-service/handler/TonChainHandler.d.ts +17 -0
- package/services/chain-service/handler/TonChainHandler.js +73 -0
- package/services/chain-service/index.d.ts +5 -1
- package/services/chain-service/index.js +32 -8
- package/services/chain-service/types.d.ts +24 -0
- package/services/chain-service/utils/index.d.ts +10 -2
- package/services/chain-service/utils/index.js +59 -18
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +1 -0
- package/services/earning-service/handlers/base.js +3 -2
- package/services/earning-service/handlers/lending/base.js +1 -2
- package/services/earning-service/handlers/lending/interlay.js +2 -2
- package/services/earning-service/handlers/liquid-staking/base.js +1 -2
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
- package/services/earning-service/handlers/native-staking/amplitude.js +2 -2
- package/services/earning-service/handlers/native-staking/astar.js +2 -2
- package/services/earning-service/handlers/native-staking/base-para.js +2 -2
- package/services/earning-service/handlers/native-staking/base.js +2 -2
- package/services/earning-service/handlers/native-staking/para-chain.js +2 -2
- package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
- package/services/earning-service/handlers/nomination-pool/index.js +2 -2
- package/services/earning-service/handlers/special.js +2 -2
- package/services/earning-service/service.js +18 -9
- package/services/event-service/types.d.ts +3 -1
- package/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
- package/services/history-service/index.d.ts +4 -1
- package/services/history-service/index.js +29 -11
- package/services/history-service/subscan-history.js +8 -20
- package/services/keyring-service/context/account-context.d.ts +87 -0
- package/services/keyring-service/context/account-context.js +250 -0
- package/services/keyring-service/context/handlers/Base.d.ts +11 -0
- package/services/keyring-service/context/handlers/Base.js +13 -0
- package/services/keyring-service/context/handlers/Derive.d.ts +29 -0
- package/services/keyring-service/context/handlers/Derive.js +365 -0
- package/services/keyring-service/context/handlers/Inject.d.ts +11 -0
- package/services/keyring-service/context/handlers/Inject.js +69 -0
- package/services/keyring-service/context/handlers/Json.d.ts +18 -0
- package/services/keyring-service/context/handlers/Json.js +328 -0
- package/services/keyring-service/context/handlers/Ledger.d.ts +11 -0
- package/services/keyring-service/context/handlers/Ledger.js +158 -0
- package/services/keyring-service/context/handlers/Mnemonic.d.ts +15 -0
- package/services/keyring-service/context/handlers/Mnemonic.js +206 -0
- package/services/keyring-service/context/handlers/Modify.d.ts +16 -0
- package/services/keyring-service/context/handlers/Modify.js +250 -0
- package/services/keyring-service/context/handlers/Secret.d.ts +16 -0
- package/services/keyring-service/context/handlers/Secret.js +299 -0
- package/services/keyring-service/context/handlers/index.d.ts +7 -0
- package/services/keyring-service/context/handlers/index.js +10 -0
- package/services/keyring-service/context/state.d.ts +92 -0
- package/services/keyring-service/context/state.js +629 -0
- package/services/keyring-service/context/stores/AccountProxy.d.ts +13 -0
- package/services/keyring-service/context/stores/AccountProxy.js +25 -0
- package/services/keyring-service/context/stores/Base.d.ts +22 -0
- package/services/keyring-service/context/stores/Base.js +30 -0
- package/services/keyring-service/context/stores/CurrentAccount.d.ts +15 -0
- package/services/keyring-service/context/stores/CurrentAccount.js +21 -0
- package/services/keyring-service/context/stores/ModifyPair.d.ts +10 -0
- package/services/keyring-service/context/stores/ModifyPair.js +12 -0
- package/services/keyring-service/context/stores/index.d.ts +3 -0
- package/services/keyring-service/context/stores/index.js +6 -0
- package/services/keyring-service/index.d.ts +10 -22
- package/services/keyring-service/index.js +20 -161
- package/services/migration-service/scripts/index.js +6 -4
- package/services/migration-service/scripts/{MigrateLedgerAccountV2.d.ts → keyring/MigrateLedgerAccountV2.d.ts} +1 -1
- package/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
- package/services/migration-service/scripts/keyring/MigratePairData.d.ts +4 -0
- package/services/migration-service/scripts/keyring/MigratePairData.js +20 -0
- package/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
- package/services/request-service/constants.d.ts +1 -1
- package/services/request-service/constants.js +2 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
- package/services/request-service/handler/AuthRequestHandler.js +93 -45
- package/services/request-service/handler/EvmRequestHandler.js +3 -4
- package/services/request-service/handler/SubstrateRequestHandler.d.ts +2 -2
- package/services/request-service/handler/SubstrateRequestHandler.js +5 -11
- package/services/request-service/handler/TonRequestHandler.d.ts +17 -0
- package/services/request-service/handler/TonRequestHandler.js +168 -0
- package/services/request-service/index.d.ts +8 -3
- package/services/request-service/index.js +23 -5
- package/services/request-service/types.d.ts +6 -3
- package/services/swap-service/handler/asset-hub/handler.d.ts +1 -1
- package/services/swap-service/handler/asset-hub/handler.js +2 -1
- package/services/swap-service/handler/base-handler.js +1 -1
- package/services/swap-service/handler/chainflip-handler.d.ts +1 -1
- package/services/swap-service/handler/chainflip-handler.js +4 -3
- package/services/swap-service/handler/hydradx-handler.d.ts +1 -1
- package/services/swap-service/handler/hydradx-handler.js +2 -1
- package/services/swap-service/index.js +1 -1
- package/services/transaction-service/helpers/index.d.ts +2 -0
- package/services/transaction-service/helpers/index.js +4 -0
- package/services/transaction-service/index.d.ts +1 -0
- package/services/transaction-service/index.js +114 -17
- package/services/transaction-service/types.d.ts +4 -2
- package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
- package/stores/AccountProxyStore.d.ts +5 -0
- package/stores/AccountProxyStore.js +10 -0
- package/stores/Authorize.d.ts +1 -1
- package/stores/CurrentAccountStore.d.ts +1 -1
- package/stores/ModifyPairStore.d.ts +5 -0
- package/stores/ModifyPairStore.js +10 -0
- package/stores/index.d.ts +4 -1
- package/stores/index.js +5 -2
- package/types/account/action/add/index.d.ts +3 -0
- package/types/account/action/add/index.js +6 -0
- package/types/account/action/add/json.d.ts +29 -0
- package/types/account/action/add/json.js +1 -0
- package/types/account/action/add/mnemonic.d.ts +77 -0
- package/types/account/action/add/mnemonic.js +1 -0
- package/types/account/action/add/secret.d.ts +55 -0
- package/types/account/action/add/secret.js +1 -0
- package/types/account/action/derive.d.ts +77 -0
- package/types/account/action/derive.js +1 -0
- package/types/account/action/edit.d.ts +31 -0
- package/types/account/action/edit.js +1 -0
- package/types/account/action/export.d.ts +15 -0
- package/types/account/action/export.js +1 -0
- package/types/account/action/index.d.ts +6 -0
- package/types/account/action/index.js +9 -0
- package/types/account/action/subscribe.d.ts +22 -0
- package/types/account/action/subscribe.js +10 -0
- package/types/account/action/validate.d.ts +17 -0
- package/types/account/action/validate.js +1 -0
- package/types/account/error/common.d.ts +10 -0
- package/types/account/error/common.js +33 -0
- package/types/account/error/derive.d.ts +13 -0
- package/types/account/error/derive.js +48 -0
- package/types/account/error/index.d.ts +2 -0
- package/types/account/error/index.js +5 -0
- package/types/account/index.d.ts +3 -0
- package/types/account/index.js +6 -0
- package/types/account/info/current.d.ts +10 -0
- package/types/account/info/current.js +1 -0
- package/types/account/info/index.d.ts +3 -0
- package/types/account/info/index.js +6 -0
- package/types/account/info/keyring.d.ts +161 -0
- package/types/account/info/keyring.js +88 -0
- package/types/account/info/proxy.d.ts +73 -0
- package/types/account/info/proxy.js +46 -0
- package/types/balance/index.d.ts +4 -1
- package/types/buy.d.ts +3 -1
- package/types/error.d.ts +8 -0
- package/types/error.js +1 -0
- package/types/index.d.ts +4 -0
- package/types/index.js +5 -1
- package/types/transaction/data.d.ts +17 -0
- package/types/transaction/data.js +1 -0
- package/types/transaction/error.d.ts +39 -0
- package/types/transaction/error.js +44 -0
- package/types/transaction/index.d.ts +4 -0
- package/types/transaction/index.js +7 -0
- package/types/transaction/request.d.ts +24 -0
- package/types/transaction/request.js +1 -0
- package/types/transaction/warning.d.ts +5 -0
- package/types/transaction/warning.js +8 -0
- package/types/yield/actions/join/submit.d.ts +2 -2
- package/types/yield/actions/join/validate.d.ts +1 -6
- package/types/yield/actions/join/validate.js +1 -10
- package/types/yield/actions/others.d.ts +1 -1
- package/utils/account/analyze.d.ts +4 -0
- package/utils/account/analyze.js +159 -0
- package/utils/account/common.d.ts +16 -0
- package/utils/account/common.js +104 -0
- package/utils/account/derive/index.d.ts +2 -0
- package/utils/account/derive/index.js +5 -0
- package/utils/account/derive/info/index.d.ts +2 -0
- package/utils/account/derive/info/index.js +5 -0
- package/utils/account/derive/info/solo.d.ts +11 -0
- package/utils/account/derive/info/solo.js +230 -0
- package/utils/account/derive/info/unified.d.ts +7 -0
- package/utils/account/derive/info/unified.js +102 -0
- package/utils/account/derive/validate.d.ts +8 -0
- package/utils/account/derive/validate.js +165 -0
- package/utils/account/index.d.ts +4 -0
- package/utils/account/index.js +7 -0
- package/utils/account/transform.d.ts +41 -0
- package/utils/account/transform.js +533 -0
- package/utils/auth.d.ts +2 -0
- package/utils/auth.js +39 -0
- package/utils/canDerive.d.ts +1 -1
- package/utils/eth/mergeTransactionAndSignature.d.ts +1 -1
- package/utils/getId.d.ts +1 -0
- package/utils/getId.js +3 -1
- package/utils/index.d.ts +12 -5
- package/utils/index.js +28 -47
- package/cjs/signers/substrates/KeyringSigner.js +0 -35
- package/cjs/signers/substrates/LedgerSigner.js +0 -44
- package/cjs/signers/substrates/QrSigner.js +0 -63
- package/cjs/signers/types.js +0 -15
- package/cjs/signers/web3/QrSigner.js +0 -67
- package/cjs/utils/account.js +0 -34
- package/signers/substrates/KeyringSigner.d.ts +0 -13
- package/signers/substrates/KeyringSigner.js +0 -27
- package/signers/substrates/LedgerSigner.d.ts +0 -13
- package/signers/substrates/LedgerSigner.js +0 -37
- package/signers/substrates/QrSigner.d.ts +0 -20
- package/signers/substrates/QrSigner.js +0 -55
- package/signers/types.d.ts +0 -34
- package/signers/types.js +0 -9
- package/signers/web3/QrSigner.d.ts +0 -18
- package/signers/web3/QrSigner.js +0 -59
- package/types/transaction.d.ts +0 -3
- package/utils/account.d.ts +0 -5
- package/utils/account.js +0 -24
- /package/cjs/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
- /package/cjs/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
- /package/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
- /package/services/migration-service/scripts/{MigrateLedgerAccount.d.ts → keyring/MigrateLedgerAccount.d.ts} +0 -0
- /package/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
- /package/services/migration-service/scripts/{MigrateRemoveGenesisHash.d.ts → keyring/MigrateRemoveGenesisHash.d.ts} +0 -0
|
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
8
9
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
9
|
-
var
|
|
10
|
+
var _constants2 = require("@subwallet/extension-base/services/request-service/constants");
|
|
10
11
|
var _Authorize = _interopRequireDefault(require("@subwallet/extension-base/stores/Authorize"));
|
|
11
12
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
12
13
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
14
|
+
var _keyring = require("@subwallet/keyring");
|
|
13
15
|
var _rxjs = require("rxjs");
|
|
14
16
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
15
17
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
@@ -29,29 +31,51 @@ class AuthRequestHandler {
|
|
|
29
31
|
this.keyringService = keyringService;
|
|
30
32
|
this.#requestService = requestService;
|
|
31
33
|
this.#chainService = chainService;
|
|
32
|
-
this.
|
|
34
|
+
this.migrateAuthUrlInfoToUnified().then(() => {
|
|
35
|
+
this.init().catch(console.error);
|
|
36
|
+
}).catch(console.error);
|
|
33
37
|
}
|
|
34
38
|
async init() {
|
|
35
39
|
const authList = await this.getAuthList();
|
|
36
40
|
let needUpdateAuthList = false;
|
|
37
|
-
Object.entries(authList).
|
|
41
|
+
const updatedAuthList = Object.entries(authList).reduce((acc, _ref) => {
|
|
38
42
|
let [key, value] = _ref;
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
43
|
+
const existKeyBothConnectAuthType = _constants2.DAPP_CONNECT_BOTH_TYPE_ACCOUNT_URL.some(url_ => url_.includes(key));
|
|
44
|
+
if (existKeyBothConnectAuthType && (!value.accountAuthTypes || value.accountAuthTypes.length < 2)) {
|
|
45
|
+
value.accountAuthTypes = ['evm', 'substrate'];
|
|
41
46
|
needUpdateAuthList = true;
|
|
42
|
-
authList[key] = {
|
|
43
|
-
...value,
|
|
44
|
-
accountAuthType: 'both'
|
|
45
|
-
};
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
acc[key] = {
|
|
49
|
+
...value
|
|
50
|
+
};
|
|
51
|
+
return acc;
|
|
52
|
+
}, {});
|
|
48
53
|
if (needUpdateAuthList) {
|
|
49
|
-
this.setAuthorize(
|
|
54
|
+
this.setAuthorize(updatedAuthList);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async migrateAuthUrlInfoToUnified() {
|
|
58
|
+
const authList = await this.getAuthList();
|
|
59
|
+
let needUpdateAuthList = false;
|
|
60
|
+
const updatedAuthList = Object.entries(authList).reduce((acc, _ref2) => {
|
|
61
|
+
let [key, value] = _ref2;
|
|
62
|
+
if ('accountAuthType' in value) {
|
|
63
|
+
const oldValueStructure = value;
|
|
64
|
+
needUpdateAuthList = true;
|
|
65
|
+
value.accountAuthTypes = oldValueStructure.accountAuthType === 'both' ? ['substrate', 'evm'] : [oldValueStructure.accountAuthType || 'substrate'];
|
|
66
|
+
}
|
|
67
|
+
acc[key] = {
|
|
68
|
+
...value
|
|
69
|
+
};
|
|
70
|
+
return acc;
|
|
71
|
+
}, {});
|
|
72
|
+
if (needUpdateAuthList) {
|
|
73
|
+
this.setAuthorize(updatedAuthList);
|
|
50
74
|
}
|
|
51
75
|
}
|
|
52
76
|
getAddressList() {
|
|
53
77
|
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
54
|
-
const addressList = Object.keys(this.keyringService.
|
|
78
|
+
const addressList = Object.keys(this.keyringService.context.pairs);
|
|
55
79
|
return addressList.reduce((addressList, v) => ({
|
|
56
80
|
...addressList,
|
|
57
81
|
[v]: value
|
|
@@ -61,12 +85,12 @@ class AuthRequestHandler {
|
|
|
61
85
|
return Object.keys(this.#authRequestsV2).length;
|
|
62
86
|
}
|
|
63
87
|
get allAuthRequestsV2() {
|
|
64
|
-
return Object.values(this.#authRequestsV2).map(
|
|
88
|
+
return Object.values(this.#authRequestsV2).map(_ref3 => {
|
|
65
89
|
let {
|
|
66
90
|
id,
|
|
67
91
|
request,
|
|
68
92
|
url
|
|
69
|
-
} =
|
|
93
|
+
} = _ref3;
|
|
70
94
|
return {
|
|
71
95
|
id,
|
|
72
96
|
request,
|
|
@@ -113,14 +137,14 @@ class AuthRequestHandler {
|
|
|
113
137
|
let needEnableChains = [];
|
|
114
138
|
if (options.url) {
|
|
115
139
|
const domain = (0, _utils2.getDomainFromUrl)(options.url);
|
|
116
|
-
const predefinedSupportChains =
|
|
140
|
+
const predefinedSupportChains = _constants2.PREDEFINED_CHAIN_DAPP_CHAIN_MAP[domain];
|
|
117
141
|
if (!defaultChain && predefinedSupportChains) {
|
|
118
142
|
defaultChain = predefinedSupportChains[0];
|
|
119
143
|
options.autoActive && needEnableChains.push(...predefinedSupportChains);
|
|
120
144
|
}
|
|
121
145
|
}
|
|
122
146
|
let chainInfo;
|
|
123
|
-
if (
|
|
147
|
+
if (options.accessType === 'evm') {
|
|
124
148
|
const evmChains = Object.values(chainInfoMaps).filter(_utils._isChainEvmCompatible);
|
|
125
149
|
chainInfo = (defaultChain ? chainInfoMaps[defaultChain] : evmChains.find(chain => {
|
|
126
150
|
var _chainStateMap$chain$;
|
|
@@ -144,7 +168,6 @@ class AuthRequestHandler {
|
|
|
144
168
|
authCompleteV2 = (id, url, resolve, reject) => {
|
|
145
169
|
const isAllowedMap = this.getAddressList();
|
|
146
170
|
const complete = (result, cb, accounts) => {
|
|
147
|
-
var _this$getDAppChainInf;
|
|
148
171
|
const isAllowed = result === true;
|
|
149
172
|
let isCancelled = false;
|
|
150
173
|
if (!isAllowed && typeof result === 'object' && result.message === 'Cancelled') {
|
|
@@ -155,11 +178,12 @@ class AuthRequestHandler {
|
|
|
155
178
|
isAllowedMap[acc] = true;
|
|
156
179
|
});
|
|
157
180
|
} else {
|
|
158
|
-
|
|
159
|
-
|
|
181
|
+
Object.keys(isAllowedMap).forEach(address => {
|
|
182
|
+
isAllowedMap[address] = false;
|
|
183
|
+
});
|
|
160
184
|
}
|
|
161
185
|
const {
|
|
162
|
-
|
|
186
|
+
accountAuthTypes,
|
|
163
187
|
idStr,
|
|
164
188
|
request: {
|
|
165
189
|
allowedAccounts,
|
|
@@ -167,21 +191,36 @@ class AuthRequestHandler {
|
|
|
167
191
|
},
|
|
168
192
|
url
|
|
169
193
|
} = this.#authRequestsV2[id];
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
194
|
+
|
|
195
|
+
// Note: accountAuthTypes represents the accountAuthType of this request
|
|
196
|
+
// allowedAccounts is a list of connected accounts that exist for this origin during this request.
|
|
197
|
+
|
|
198
|
+
if (accountAuthTypes.length !== _constants.ALL_ACCOUNT_AUTH_TYPES.length) {
|
|
199
|
+
const backupAllowed = (allowedAccounts || []).filter(a => {
|
|
200
|
+
if ((0, _utilCrypto.isEthereumAddress)(a) && !accountAuthTypes.includes('evm')) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
if ((0, _keyring.isSubstrateAddress)(a) && !accountAuthTypes.includes('substrate')) {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
if ((0, _keyring.isTonAddress)(a) && !accountAuthTypes.includes('ton')) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
return false;
|
|
175
210
|
});
|
|
176
211
|
backupAllowed.forEach(acc => {
|
|
177
212
|
isAllowedMap[acc] = true;
|
|
178
213
|
});
|
|
179
214
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
215
|
+
let defaultEvmNetworkKey;
|
|
216
|
+
if (accountAuthTypes.includes('evm')) {
|
|
217
|
+
const chainInfo = this.getDAppChainInfo({
|
|
218
|
+
accessType: 'evm',
|
|
219
|
+
autoActive: true,
|
|
220
|
+
url
|
|
221
|
+
});
|
|
222
|
+
defaultEvmNetworkKey = chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.slug;
|
|
223
|
+
}
|
|
185
224
|
this.getAuthorize(value => {
|
|
186
225
|
let authorizeList = {};
|
|
187
226
|
if (value) {
|
|
@@ -203,7 +242,7 @@ class AuthRequestHandler {
|
|
|
203
242
|
isAllowedMap,
|
|
204
243
|
origin,
|
|
205
244
|
url,
|
|
206
|
-
|
|
245
|
+
accountAuthTypes: [...new Set([...accountAuthTypes, ...((existed === null || existed === void 0 ? void 0 : existed.accountAuthTypes) || [])])],
|
|
207
246
|
currentEvmNetworkKey: existed ? existed.currentEvmNetworkKey : defaultEvmNetworkKey
|
|
208
247
|
};
|
|
209
248
|
this.setAuthorize(authorizeList, () => {
|
|
@@ -219,11 +258,11 @@ class AuthRequestHandler {
|
|
|
219
258
|
reject(error);
|
|
220
259
|
});
|
|
221
260
|
},
|
|
222
|
-
resolve:
|
|
261
|
+
resolve: _ref4 => {
|
|
223
262
|
let {
|
|
224
263
|
accounts,
|
|
225
264
|
result
|
|
226
|
-
} =
|
|
265
|
+
} = _ref4;
|
|
227
266
|
complete(result, () => {
|
|
228
267
|
resolve(result);
|
|
229
268
|
}, accounts);
|
|
@@ -234,9 +273,8 @@ class AuthRequestHandler {
|
|
|
234
273
|
async authorizeUrlV2(url, request) {
|
|
235
274
|
let authList = await this.getAuthList();
|
|
236
275
|
const idStr = (0, _utils2.stripUrl)(url);
|
|
237
|
-
const
|
|
238
|
-
let
|
|
239
|
-
request.accountAuthType = accountAuthType;
|
|
276
|
+
const isAllowedDappConnectBothType = !!_constants2.DAPP_CONNECT_BOTH_TYPE_ACCOUNT_URL.find(url_ => url.includes(url_));
|
|
277
|
+
let accountAuthTypes = [...new Set(isAllowedDappConnectBothType ? ['evm', 'substrate'] : request.accountAuthTypes || ['substrate'])];
|
|
240
278
|
if (!authList) {
|
|
241
279
|
authList = {};
|
|
242
280
|
}
|
|
@@ -247,9 +285,10 @@ class AuthRequestHandler {
|
|
|
247
285
|
reject,
|
|
248
286
|
resolve
|
|
249
287
|
} = promiseHandler;
|
|
250
|
-
const isExistedAuthBothBefore = Object.entries(this.authorizeUrlSubject.value).find(
|
|
251
|
-
|
|
252
|
-
|
|
288
|
+
const isExistedAuthBothBefore = Object.entries(this.authorizeUrlSubject.value).find(_ref5 => {
|
|
289
|
+
var _data$accountAuthType;
|
|
290
|
+
let [key, data] = _ref5;
|
|
291
|
+
return key === idStr && ((_data$accountAuthType = data.accountAuthTypes) === null || _data$accountAuthType === void 0 ? void 0 : _data$accountAuthType.length) === _constants.ALL_ACCOUNT_AUTH_TYPES.length;
|
|
253
292
|
});
|
|
254
293
|
if (isExistedAuthBothBefore) {
|
|
255
294
|
return true;
|
|
@@ -264,12 +303,12 @@ class AuthRequestHandler {
|
|
|
264
303
|
|
|
265
304
|
// Do not enqueue duplicate authorization requests.
|
|
266
305
|
const mergeKeys = [];
|
|
267
|
-
Object.entries(this.#authRequestsV2).forEach(
|
|
268
|
-
let [key, _request] =
|
|
306
|
+
Object.entries(this.#authRequestsV2).forEach(_ref6 => {
|
|
307
|
+
let [key, _request] = _ref6;
|
|
269
308
|
if (_request.idStr === idStr) {
|
|
270
|
-
if (
|
|
271
|
-
|
|
272
|
-
|
|
309
|
+
if (accountAuthTypes && _request.accountAuthTypes) {
|
|
310
|
+
const filteredAccountAuthTypes = new Set([..._request.accountAuthTypes, ...accountAuthTypes]);
|
|
311
|
+
accountAuthTypes = [...filteredAccountAuthTypes];
|
|
273
312
|
}
|
|
274
313
|
mergeKeys.push(key);
|
|
275
314
|
}
|
|
@@ -284,8 +323,8 @@ class AuthRequestHandler {
|
|
|
284
323
|
});
|
|
285
324
|
}
|
|
286
325
|
const existedAuth = authList[idStr];
|
|
287
|
-
const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.
|
|
288
|
-
const confirmAnotherType = existedAccountAuthType
|
|
326
|
+
const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.accountAuthTypes;
|
|
327
|
+
const confirmAnotherType = !existedAccountAuthType || accountAuthTypes.some(type => !existedAccountAuthType.includes(type));
|
|
289
328
|
if (request.reConfirm && existedAuth) {
|
|
290
329
|
request.origin = existedAuth.origin;
|
|
291
330
|
}
|
|
@@ -296,16 +335,21 @@ class AuthRequestHandler {
|
|
|
296
335
|
if (inBlackList) {
|
|
297
336
|
throw new Error('The source {{url}} is not allowed to interact with this extension'.replace('{{url}}', url));
|
|
298
337
|
}
|
|
299
|
-
request.allowedAccounts = Object.entries(existedAuth.isAllowedMap).map(
|
|
300
|
-
let [address, allowed] =
|
|
338
|
+
request.allowedAccounts = Object.entries(existedAuth.isAllowedMap).map(_ref7 => {
|
|
339
|
+
let [address, allowed] = _ref7;
|
|
301
340
|
return allowed ? address : '';
|
|
302
341
|
}).filter(item => item !== '');
|
|
303
342
|
let allowedListByRequestType = [...request.allowedAccounts];
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
343
|
+
allowedListByRequestType = accountAuthTypes.reduce((list, accountAuthType) => {
|
|
344
|
+
if (accountAuthType === 'evm') {
|
|
345
|
+
list.push(...allowedListByRequestType.filter(a => (0, _utilCrypto.isEthereumAddress)(a)));
|
|
346
|
+
} else if (accountAuthType === 'substrate') {
|
|
347
|
+
list.push(...allowedListByRequestType.filter(a => (0, _keyring.isSubstrateAddress)(a)));
|
|
348
|
+
} else if (accountAuthType === 'ton') {
|
|
349
|
+
list.push(...allowedListByRequestType.filter(a => (0, _keyring.isTonAddress)(a)));
|
|
350
|
+
}
|
|
351
|
+
return list;
|
|
352
|
+
}, []);
|
|
309
353
|
if (!confirmAnotherType && !request.reConfirm && allowedListByRequestType.length !== 0) {
|
|
310
354
|
// Prevent appear confirmation popup
|
|
311
355
|
return false;
|
|
@@ -314,7 +358,7 @@ class AuthRequestHandler {
|
|
|
314
358
|
// Auto auth for web app
|
|
315
359
|
|
|
316
360
|
// Ignore white list
|
|
317
|
-
const isWhiteList =
|
|
361
|
+
const isWhiteList = _constants2.WEB_APP_URL.some(url => idStr.includes(url)) && false;
|
|
318
362
|
if (isWhiteList) {
|
|
319
363
|
const isAllowedMap = this.getAddressList(true);
|
|
320
364
|
authList[(0, _utils2.stripUrl)(url)] = {
|
|
@@ -324,7 +368,7 @@ class AuthRequestHandler {
|
|
|
324
368
|
isAllowedMap,
|
|
325
369
|
origin,
|
|
326
370
|
url,
|
|
327
|
-
|
|
371
|
+
accountAuthTypes: _constants.ALL_ACCOUNT_AUTH_TYPES
|
|
328
372
|
};
|
|
329
373
|
this.setAuthorize(authList);
|
|
330
374
|
return true;
|
|
@@ -334,9 +378,12 @@ class AuthRequestHandler {
|
|
|
334
378
|
...this.authCompleteV2(id, url, resolve, reject),
|
|
335
379
|
id,
|
|
336
380
|
idStr,
|
|
337
|
-
request
|
|
381
|
+
request: {
|
|
382
|
+
...request,
|
|
383
|
+
accountAuthTypes
|
|
384
|
+
},
|
|
338
385
|
url,
|
|
339
|
-
|
|
386
|
+
accountAuthTypes: accountAuthTypes || ['substrate']
|
|
340
387
|
};
|
|
341
388
|
this.updateIconAuthV2();
|
|
342
389
|
if (Object.keys(this.#authRequestsV2).length < 2 && !(mergeKeys.length > 0 && mergeKeys[mergeKeys.length - 1] !== id)) {
|
|
@@ -114,11 +114,10 @@ class EvmRequestHandler {
|
|
|
114
114
|
}
|
|
115
115
|
async signMessage(confirmation) {
|
|
116
116
|
const {
|
|
117
|
-
|
|
117
|
+
address,
|
|
118
118
|
payload,
|
|
119
119
|
type
|
|
120
120
|
} = confirmation.payload;
|
|
121
|
-
const address = account.address;
|
|
122
121
|
const pair = _uiKeyring.default.getPair(address);
|
|
123
122
|
if (pair.isLocked) {
|
|
124
123
|
_uiKeyring.default.unlockPair(pair.address);
|
|
@@ -130,7 +129,7 @@ class EvmRequestHandler {
|
|
|
130
129
|
case 'eth_signTypedData_v1':
|
|
131
130
|
case 'eth_signTypedData_v3':
|
|
132
131
|
case 'eth_signTypedData_v4':
|
|
133
|
-
return await pair.
|
|
132
|
+
return await pair.evm.signMessage(payload, type);
|
|
134
133
|
default:
|
|
135
134
|
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('Unsupported action'));
|
|
136
135
|
}
|
|
@@ -208,7 +207,7 @@ class EvmRequestHandler {
|
|
|
208
207
|
if (pair.isLocked) {
|
|
209
208
|
_uiKeyring.default.unlockPair(pair.address);
|
|
210
209
|
}
|
|
211
|
-
return pair.
|
|
210
|
+
return pair.evm.signTransaction(tx);
|
|
212
211
|
}
|
|
213
212
|
async decorateResult(t, request, result) {
|
|
214
213
|
if (result.payload === '') {
|
|
@@ -8,7 +8,6 @@ exports.default = void 0;
|
|
|
8
8
|
var _RequestExtrinsicSign = _interopRequireDefault(require("@subwallet/extension-base/background/RequestExtrinsicSign"));
|
|
9
9
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
10
10
|
var _request = require("@subwallet/extension-base/utils/request");
|
|
11
|
-
var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
|
|
12
11
|
var _rxjs = require("rxjs");
|
|
13
12
|
var _logger = require("@polkadot/util/logger");
|
|
14
13
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
@@ -29,13 +28,13 @@ class SubstrateRequestHandler {
|
|
|
29
28
|
get allSubstrateRequests() {
|
|
30
29
|
return Object.values(this.#substrateRequests).map(_ref => {
|
|
31
30
|
let {
|
|
32
|
-
|
|
31
|
+
address,
|
|
33
32
|
id,
|
|
34
33
|
request,
|
|
35
34
|
url
|
|
36
35
|
} = _ref;
|
|
37
36
|
return {
|
|
38
|
-
|
|
37
|
+
address,
|
|
39
38
|
id,
|
|
40
39
|
request,
|
|
41
40
|
url,
|
|
@@ -67,7 +66,7 @@ class SubstrateRequestHandler {
|
|
|
67
66
|
get numSubstrateRequests() {
|
|
68
67
|
return Object.keys(this.#substrateRequests).length;
|
|
69
68
|
}
|
|
70
|
-
async sign(url, request,
|
|
69
|
+
async sign(url, request, _id) {
|
|
71
70
|
const id = _id || (0, _getId.getId)();
|
|
72
71
|
const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
|
|
73
72
|
if (isAlwaysRequired) {
|
|
@@ -76,7 +75,7 @@ class SubstrateRequestHandler {
|
|
|
76
75
|
return new Promise((resolve, reject) => {
|
|
77
76
|
this.#substrateRequests[id] = {
|
|
78
77
|
...this.signComplete(id, resolve, reject),
|
|
79
|
-
|
|
78
|
+
address: request.payload.address,
|
|
80
79
|
id,
|
|
81
80
|
request,
|
|
82
81
|
url
|
|
@@ -91,14 +90,9 @@ class SubstrateRequestHandler {
|
|
|
91
90
|
this.#requestService.keyringService.lock();
|
|
92
91
|
}
|
|
93
92
|
return new Promise((resolve, reject) => {
|
|
94
|
-
const pair = _uiKeyring.default.getPair(address);
|
|
95
|
-
const account = {
|
|
96
|
-
address: pair.address,
|
|
97
|
-
...pair.meta
|
|
98
|
-
};
|
|
99
93
|
this.#substrateRequests[id] = {
|
|
100
94
|
...this.signComplete(id, resolve, reject),
|
|
101
|
-
|
|
95
|
+
address,
|
|
102
96
|
id,
|
|
103
97
|
request: new _RequestExtrinsicSign.default(payload),
|
|
104
98
|
url: url
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _request = require("@subwallet/extension-base/utils/request");
|
|
8
|
+
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
9
|
+
var _core = require("@ton/core");
|
|
10
|
+
var _i18next = require("i18next");
|
|
11
|
+
var _rxjs = require("rxjs");
|
|
12
|
+
var _util = require("@polkadot/util");
|
|
13
|
+
var _logger = require("@polkadot/util/logger");
|
|
14
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
15
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
|
|
17
|
+
class TonRequestHandler {
|
|
18
|
+
#requestService;
|
|
19
|
+
#logger;
|
|
20
|
+
confirmationsQueueSubjectTon = new _rxjs.BehaviorSubject({
|
|
21
|
+
tonSignatureRequest: {},
|
|
22
|
+
tonSendTransactionRequest: {},
|
|
23
|
+
tonWatchTransactionRequest: {}
|
|
24
|
+
});
|
|
25
|
+
confirmationsPromiseMap = {};
|
|
26
|
+
constructor(requestService) {
|
|
27
|
+
this.#requestService = requestService;
|
|
28
|
+
this.#logger = (0, _logger.logger)('TonRequestHandler');
|
|
29
|
+
}
|
|
30
|
+
get numTonRequests() {
|
|
31
|
+
let count = 0;
|
|
32
|
+
Object.values(this.confirmationsQueueSubjectTon.getValue()).forEach(x => {
|
|
33
|
+
count += Object.keys(x).length;
|
|
34
|
+
});
|
|
35
|
+
return count;
|
|
36
|
+
}
|
|
37
|
+
getConfirmationsQueueSubjectTon() {
|
|
38
|
+
return this.confirmationsQueueSubjectTon;
|
|
39
|
+
}
|
|
40
|
+
async addConfirmationTon(id, url, type, payload) {
|
|
41
|
+
let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
42
|
+
let validator = arguments.length > 5 ? arguments[5] : undefined;
|
|
43
|
+
const confirmations = this.confirmationsQueueSubjectTon.getValue();
|
|
44
|
+
const confirmationType = confirmations[type];
|
|
45
|
+
const payloadJson = JSON.stringify({});
|
|
46
|
+
const isInternal = (0, _request.isInternalRequest)(url);
|
|
47
|
+
if (['tonSendTransactionRequest', 'tonSignatureRequest'].includes(type)) {
|
|
48
|
+
const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
|
|
49
|
+
if (isAlwaysRequired) {
|
|
50
|
+
this.#requestService.keyringService.lock();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Check duplicate request
|
|
55
|
+
const duplicated = Object.values(confirmationType).find(c => c.url === url && c.payloadJson === payloadJson);
|
|
56
|
+
if (duplicated) {
|
|
57
|
+
throw new Error('Ton duplicate request'); // update this message.
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
confirmationType[id] = {
|
|
61
|
+
id,
|
|
62
|
+
url,
|
|
63
|
+
isInternal,
|
|
64
|
+
payload,
|
|
65
|
+
payloadJson,
|
|
66
|
+
...options
|
|
67
|
+
};
|
|
68
|
+
const promise = new Promise((resolve, reject) => {
|
|
69
|
+
this.confirmationsPromiseMap[id] = {
|
|
70
|
+
validator: validator,
|
|
71
|
+
resolver: {
|
|
72
|
+
resolve: resolve,
|
|
73
|
+
reject: reject
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
this.confirmationsQueueSubjectTon.next(confirmations);
|
|
78
|
+
if (!isInternal) {
|
|
79
|
+
this.#requestService.popupOpen();
|
|
80
|
+
}
|
|
81
|
+
this.#requestService.updateIconV2();
|
|
82
|
+
return promise;
|
|
83
|
+
}
|
|
84
|
+
async completeConfirmationTon(request) {
|
|
85
|
+
const confirmations = this.confirmationsQueueSubjectTon.getValue();
|
|
86
|
+
for (const ct in request) {
|
|
87
|
+
const type = ct;
|
|
88
|
+
const result = request[type];
|
|
89
|
+
const {
|
|
90
|
+
id
|
|
91
|
+
} = result;
|
|
92
|
+
const {
|
|
93
|
+
resolver,
|
|
94
|
+
validator
|
|
95
|
+
} = this.confirmationsPromiseMap[id];
|
|
96
|
+
const confirmation = confirmations[type][id];
|
|
97
|
+
if (!resolver || !confirmation) {
|
|
98
|
+
this.#logger.error((0, _i18next.t)('Unable to proceed. Please try again'), type, id);
|
|
99
|
+
throw new Error((0, _i18next.t)('Unable to proceed. Please try again'));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Fill signature for some special type
|
|
103
|
+
await this.decorateResult(type, confirmation, result);
|
|
104
|
+
|
|
105
|
+
// Validate response from confirmation popup some info like password, response format....
|
|
106
|
+
const error = validator && validator(result);
|
|
107
|
+
if (error) {
|
|
108
|
+
resolver.reject(error);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Delete confirmations from queue
|
|
112
|
+
delete this.confirmationsPromiseMap[id];
|
|
113
|
+
delete confirmations[type][id];
|
|
114
|
+
this.confirmationsQueueSubjectTon.next(confirmations);
|
|
115
|
+
|
|
116
|
+
// Update icon, and close queue
|
|
117
|
+
this.#requestService.updateIconV2(this.#requestService.numAllRequests === 0);
|
|
118
|
+
resolver.resolve(result);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// TODO: Review later
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
async decorateResult(t, request, result) {
|
|
125
|
+
if (result.payload === '') {
|
|
126
|
+
if (t === 'tonSignatureRequest') {
|
|
127
|
+
// result.payload = await this.signMessage(request as ConfirmationDefinitions['evmSignatureRequest'][0]);
|
|
128
|
+
} else if (t === 'tonSendTransactionRequest') {
|
|
129
|
+
result.payload = this.signTransactionTon(request);
|
|
130
|
+
}
|
|
131
|
+
if (t === 'tonSignatureRequest' || t === 'tonSendTransactionRequest') {
|
|
132
|
+
const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
|
|
133
|
+
if (isAlwaysRequired) {
|
|
134
|
+
this.#requestService.keyringService.lock();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
signTransactionTon(confirmation) {
|
|
140
|
+
const transaction = confirmation.payload;
|
|
141
|
+
const {
|
|
142
|
+
from,
|
|
143
|
+
messagePayload
|
|
144
|
+
} = transaction;
|
|
145
|
+
const pair = _uiKeyring.keyring.getPair(from);
|
|
146
|
+
if (pair.isLocked) {
|
|
147
|
+
_uiKeyring.keyring.unlockPair(pair.address);
|
|
148
|
+
}
|
|
149
|
+
const messages = _core.Cell.fromBase64(messagePayload);
|
|
150
|
+
const signedTransaction = pair.ton.sign(messages);
|
|
151
|
+
return (0, _util.u8aToHex)(Uint8Array.from(signedTransaction));
|
|
152
|
+
}
|
|
153
|
+
resetWallet() {
|
|
154
|
+
const confirmations = this.confirmationsQueueSubjectTon.getValue();
|
|
155
|
+
for (const [type, requests] of Object.entries(confirmations)) {
|
|
156
|
+
for (const confirmation of Object.values(requests)) {
|
|
157
|
+
const {
|
|
158
|
+
id
|
|
159
|
+
} = confirmation;
|
|
160
|
+
const {
|
|
161
|
+
resolver
|
|
162
|
+
} = this.confirmationsPromiseMap[id];
|
|
163
|
+
if (!resolver || !confirmation) {
|
|
164
|
+
console.error('Not found confirmation', type, id);
|
|
165
|
+
} else {
|
|
166
|
+
resolver.reject(new Error('Reset wallet'));
|
|
167
|
+
}
|
|
168
|
+
delete this.confirmationsPromiseMap[id];
|
|
169
|
+
delete confirmations[type][id];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.confirmationsQueueSubjectTon.next(confirmations);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.default = TonRequestHandler;
|