diff --git a/package.json b/package.json index 8f27872f0..5ac1606c1 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,9 @@ "prepare": "husky" }, "devDependencies": { - "@commitlint/cli": "^20.1.0", - "@commitlint/config-conventional": "^20.0.0", - "@swc/core": "^1.15.2", + "@commitlint/cli": "^20.2.0", + "@commitlint/config-conventional": "^20.2.0", + "@swc/core": "^1.15.3", "concurrently": "^9.2.1", "husky": "^9.1.7", "node-notifier": "^10.0.1", diff --git a/packages/extension-bridge/package.json b/packages/extension-bridge/package.json index 8622489b2..5a12aaae0 100644 --- a/packages/extension-bridge/package.json +++ b/packages/extension-bridge/package.json @@ -44,23 +44,23 @@ "webextension-polyfill": "^0.12.0" }, "devDependencies": { - "@types/node": "^22.19.1", + "@types/node": "^22.19.2", "@types/webextension-polyfill": "^0.12.4", - "@typescript-eslint/eslint-plugin": "^8.47.0", - "@typescript-eslint/parser": "^8.47.0", - "bumpp": "^10.3.1", + "@typescript-eslint/eslint-plugin": "^8.49.0", + "@typescript-eslint/parser": "^8.49.0", + "bumpp": "^10.3.2", "eslint": "^9.39.1", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-module-resolver": "^1.5.0", - "prettier": "^3.6.2", + "prettier": "^3.7.4", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "tsup": "^8.5.1", - "type-fest": "^5.2.0", + "type-fest": "^5.3.1", "typescript": "^5.9.3", - "typescript-eslint": "8.47.0" + "typescript-eslint": "8.49.0" } } diff --git a/packages/extension/env.d.ts b/packages/extension/env.d.ts index 912f111ef..e091e5bce 100644 --- a/packages/extension/env.d.ts +++ b/packages/extension/env.d.ts @@ -1,12 +1,5 @@ /// -export namespace NodeJS { - export interface ProcessEnv { - BROWSER: 'chrome' | 'firefox' | 'edge' | 'opera' | 'safari'; - MINIFY: 'true' | 'false'; - } -} - declare module '*.svg' { const content: string; export default content; @@ -20,3 +13,8 @@ declare let __IS_OPERA__: boolean; declare let __IS_CHROME__: boolean; declare let __IS_SAFARI__: boolean; declare let __BUILD_TIME__: string; + +interface Window { + // Declare your custom global variable here + readonly __PACKAGE_VERSION__: string; +} diff --git a/packages/extension/package.json b/packages/extension/package.json index e337636e5..84b96dada 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -1,6 +1,6 @@ { "name": "@enkryptcom/extension", - "version": "2.14.0", + "version": "2.15.0", "private": true, "type": "module", "scripts": { @@ -23,7 +23,7 @@ "watch:firefox": "yarn prebuild && cross-env BROWSER='firefox' vite" }, "dependencies": { - "@amplitude/analytics-browser": "^2.31.1", + "@amplitude/analytics-browser": "^2.32.0", "@enkryptcom/extension-bridge": "workspace:^", "@enkryptcom/hw-wallets": "workspace:^", "@enkryptcom/keyring": "workspace:^", @@ -44,15 +44,15 @@ "@metaplex-foundation/mpl-bubblegum": "^5.0.2", "@metaplex-foundation/umi": "^1.4.1", "@metaplex-foundation/umi-bundle-defaults": "^1.4.1", - "@polkadot/api": "^16.5.2", - "@polkadot/extension-inject": "^0.62.5", - "@polkadot/keyring": "^13.5.8", - "@polkadot/rpc-provider": "^16.5.2", - "@polkadot/types": "^16.5.2", - "@polkadot/types-known": "^16.5.2", - "@polkadot/ui-shared": "^3.16.3", - "@polkadot/util": "^13.5.8", - "@polkadot/wasm-crypto": "^7.5.2", + "@polkadot/api": "^16.5.4", + "@polkadot/extension-inject": "^0.62.6", + "@polkadot/keyring": "^14.0.1", + "@polkadot/rpc-provider": "^16.5.4", + "@polkadot/types": "^16.5.4", + "@polkadot/types-known": "^16.5.4", + "@polkadot/ui-shared": "^3.16.4", + "@polkadot/util": "^14.0.1", + "@polkadot/wasm-crypto": "^7.5.4", "@solana-developers/helpers": "2.8.0", "@solana/spl-token": "^0.4.14", "@solana/wallet-standard-features": "^1.3.0", @@ -76,10 +76,10 @@ "pact-lang-api": "^4.3.6", "pinia": "^3.0.4", "qrcode.vue": "^3.6.0", - "switch-ts": "^1.1.1", + "switch-ts": "^2.0.0", "url-parse": "^1.5.10", "uuid": "^13.0.0", - "vue": "^3.5.24", + "vue": "^3.5.25", "vue-echarts": "8.0.1", "vue-router": "^4.6.3", "vue3-lottie": "^3.3.1", @@ -90,7 +90,7 @@ "zxcvbn": "^4.4.2" }, "devDependencies": { - "@crxjs/vite-plugin": "^2.2.1", + "@crxjs/vite-plugin": "^2.3.0", "@rollup/plugin-commonjs": "^29.0.0", "@rollup/plugin-inject": "^5.0.5", "@rollup/plugin-json": "^6.1.0", @@ -100,13 +100,13 @@ "@rollup/plugin-typescript": "^12.3.0", "@tsconfig/node20": "^20.1.8", "@types/bs58": "^5.0.0", - "@types/chrome": "^0.1.31", + "@types/chrome": "^0.1.32", "@types/ethereumjs-abi": "^0.6.5", "@types/events": "^3.0.3", "@types/fs-extra": "^11.0.4", "@types/less": "^3.0.8", - "@types/lodash": "^4.17.20", - "@types/node": "^22.19.1", + "@types/lodash": "^4.17.21", + "@types/node": "^22.19.2", "@types/semver": "^7.7.1", "@types/url-parse": "^1.4.11", "@types/utf-8-validate": "^5.0.2", @@ -117,29 +117,29 @@ "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/tsconfig": "^0.8.1", - "@vueuse/core": "^14.0.0", + "@vueuse/core": "^14.1.0", "cross-env": "^10.1.0", "eslint": "^9.39.1", - "eslint-plugin-vue": "^10.5.1", + "eslint-plugin-vue": "^10.6.2", "fs-extra": "^11.3.2", - "jsdom": "^26.1.0", + "jsdom": "^27.3.0", "less": "^4.4.2", "less-loader": "^12.3.0", "npm-run-all2": "^8.0.4", - "prettier": "^3.6.2", + "prettier": "^3.7.4", "rimraf": "^6.1.2", "rollup": "^4.53.3", "rollup-plugin-visualizer": "^6.0.5", "semver": "^7.7.3", - "systeminformation": "^5.27.11", + "systeminformation": "^5.27.14", "tsup": "^8.5.1", "typescript": "~5.9.3", "url": "^0.11.4", - "vite": "^7.2.2", + "vite": "^7.2.7", "vite-plugin-node-polyfills": "0.24.0", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^4.0.10", - "vue-tsc": "^3.1.4", + "vitest": "^4.0.15", + "vue-tsc": "^3.1.8", "webextension-polyfill": "^0.12.0" }, "installConfig": { diff --git a/packages/extension/src/libs/dapp-list/index.ts b/packages/extension/src/libs/dapp-list/index.ts index 34c3e0e93..441bda981 100644 --- a/packages/extension/src/libs/dapp-list/index.ts +++ b/packages/extension/src/libs/dapp-list/index.ts @@ -25,10 +25,6 @@ const lists: Partial> = { 'https://raw.githubusercontent.com/enkryptcom/dynamic-data/main/dapps/astr.json', [NetworkNames.AstarEVM]: 'https://raw.githubusercontent.com/enkryptcom/dynamic-data/main/dapps/astr.json', - [NetworkNames.Shiden]: - 'https://raw.githubusercontent.com/enkryptcom/dynamic-data/main/dapps/sdn.json', - [NetworkNames.ShidenEVM]: - 'https://raw.githubusercontent.com/enkryptcom/dynamic-data/main/dapps/sdn.json', [NetworkNames.Okc]: 'https://raw.githubusercontent.com/enkryptcom/dynamic-data/main/dapps/okc.json', [NetworkNames.Optimism]: diff --git a/packages/extension/src/libs/json-tree-view/JsonTreeViewItem.vue b/packages/extension/src/libs/json-tree-view/JsonTreeViewItem.vue index 8569918f3..373bcfc52 100644 --- a/packages/extension/src/libs/json-tree-view/JsonTreeViewItem.vue +++ b/packages/extension/src/libs/json-tree-view/JsonTreeViewItem.vue @@ -100,7 +100,7 @@ function getValueColor(value: ValueTypes): string { .is(v => v === 'boolean', then('var(--jtv-boolean-color)')) .is(v => v === 'object', then('var(--jtv-null-color)')) .is(v => v === 'undefined', then('var(--jtv-null-color)')) - .default(then('var(--jtv-valueKey-color)')); + .otherwise(then('var(--jtv-valueKey-color)')); } const classes = computed((): unknown => { diff --git a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts index 0d34588d0..c344998f8 100644 --- a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts +++ b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts @@ -8,7 +8,6 @@ const NetworkEndpoints: Record = { [NetworkNames.Moonriver]: 'https://api.etherscan.io/v2/api?chainid=1285&', [NetworkNames.KaruraEVM]: 'https://blockscout.karura.network/api?', [NetworkNames.AstarEVM]: 'https://blockscout.com/astar/api?', - [NetworkNames.ShidenEVM]: 'https://blockscout.com/shiden/api?', [NetworkNames.Optimism]: 'https://api.etherscan.io/v2/api?chainid=10&', [NetworkNames.EdgeEVM]: 'https://edgscan.live/api?', [NetworkNames.Rootstock]: 'https://blockscout.com/rsk/mainnet/api?', @@ -24,8 +23,6 @@ const NetworkEndpoints: Record = { 'https://haunting-devoted-deneb.explorer.mainnet.skalenodes.com/api?', [NetworkNames.SkaleEuropa]: 'https://elated-tan-skat.explorer.mainnet.skalenodes.com/api?', - [NetworkNames.SkaleExorde]: - 'https://light-vast-diphda.explorer.mainnet.skalenodes.com/api?', [NetworkNames.SkaleNebula]: 'https://green-giddy-denebola.explorer.mainnet.skalenodes.com/api?', [NetworkNames.SkaleTitan]: diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts index f7ca87c8d..a1f86a72d 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts @@ -54,10 +54,6 @@ const supportedNetworks: Record = { tbName: 'mobm', cgPlatform: CoingeckoPlatform.Moonbeam, }, - [NetworkNames.ShidenEVM]: { - tbName: 'sdn', - cgPlatform: CoingeckoPlatform.Shiden, - }, [NetworkNames.Rootstock]: { cgPlatform: CoingeckoPlatform.Rootstock, bsEndpoint: true, diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts index 25d046f6c..6e8691776 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts @@ -34,7 +34,6 @@ const TokenList: Record = { [NetworkNames.Sanko]: `https://tokens.coingecko.com/${CoingeckoPlatform.Sanko}/all.json`, [NetworkNames.Scroll]: `https://tokens.coingecko.com/${CoingeckoPlatform.Scroll}/all.json`, [NetworkNames.Shibarium]: `https://tokens.coingecko.com/${CoingeckoPlatform.Shibarium}/all.json`, - [NetworkNames.ShidenEVM]: `https://tokens.coingecko.com/${CoingeckoPlatform.Shiden}/all.json`, [NetworkNames.Solana]: `https://tokens.coingecko.com/${CoingeckoPlatform.Solana}/all.json`, [NetworkNames.SyscoinNEVM]: `https://tokens.coingecko.com/${CoingeckoPlatform.Syscoin}/all.json`, [NetworkNames.Telos]: `https://tokens.coingecko.com/${CoingeckoPlatform.Telos}/all.json`, diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts index fd08f53af..e4c6a42ff 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts @@ -34,7 +34,6 @@ export type SupportedNetworkNames = | NetworkNames.Optimism | NetworkNames.Moonriver | NetworkNames.Moonbeam - | NetworkNames.ShidenEVM | NetworkNames.Rootstock | NetworkNames.Arbitrum | NetworkNames.ArbitrumNova diff --git a/packages/extension/src/providers/ethereum/networks/bitrock.ts b/packages/extension/src/providers/ethereum/networks/bitrock.ts deleted file mode 100755 index 263187da5..000000000 --- a/packages/extension/src/providers/ethereum/networks/bitrock.ts +++ /dev/null @@ -1,25 +0,0 @@ -import icon from './icons/bitrock.webp'; -import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; - -const bitrockOptions: EvmNetworkOptions = { - name: NetworkNames.Bitrock, - name_long: 'Bitrock Chain', - homePage: 'https://bit-rock.io/', - blockExplorerTX: 'https://explorer.bit-rock.io/tx/[[txHash]]', - blockExplorerAddr: 'https://explorer.bit-rock.io/address/[[address]]', - chainID: '0x1c03', - isTestNetwork: false, - currencyName: 'BROCK', - currencyNameLong: 'Bitrock', - node: 'https://brockrpc.io', - icon, - coingeckoID: 'bitrock', - coingeckoPlatform: CoingeckoPlatform.Bitrock, - activityHandler: wrapActivityHandler(() => Promise.resolve([])), -}; - -const bitrock = new EvmNetwork(bitrockOptions); - -export default bitrock; diff --git a/packages/extension/src/providers/ethereum/networks/icons/sdn.webp b/packages/extension/src/providers/ethereum/networks/icons/sdn.webp deleted file mode 100644 index 50d3676b7..000000000 Binary files a/packages/extension/src/providers/ethereum/networks/icons/sdn.webp and /dev/null differ diff --git a/packages/extension/src/providers/ethereum/networks/index.ts b/packages/extension/src/providers/ethereum/networks/index.ts index 470e73a72..4303bc1f3 100755 --- a/packages/extension/src/providers/ethereum/networks/index.ts +++ b/packages/extension/src/providers/ethereum/networks/index.ts @@ -7,7 +7,6 @@ import moonbeamNode from './glmr'; import moonriverNode from './movr'; import karuraEvmNode from './karura'; import okcNode from './okc'; -import shidenEvmNode from './sdn'; import astarEvmNode from './astr'; import optimismNode from './op'; import rootstockNode from './rsk'; @@ -53,7 +52,6 @@ import palmNode from './palm'; import scrollNode from './scroll'; import cotiTestnetNode from './coti-testnet'; import hoodiNode from './hoodi'; -import bitrockNode from './bitrock'; import fraxtalNode from './fraxtal'; import _5ireNode from './5ire'; import beraNode from './bera'; @@ -86,7 +84,6 @@ export default { moonriver: moonriverNode, karuraEvm: karuraEvmNode, okc: okcNode, - shidenEvm: shidenEvmNode, astarEvm: astarEvmNode, op: optimismNode, rootstock: rootstockNode, @@ -137,7 +134,6 @@ export default { scroll: scrollNode, cotiTestnetNode: cotiTestnetNode, hoodi: hoodiNode, - bitrock: bitrockNode, frax: fraxtalNode, taraxa: taraxa, '5ire': _5ireNode, diff --git a/packages/extension/src/providers/ethereum/networks/sdn.ts b/packages/extension/src/providers/ethereum/networks/sdn.ts deleted file mode 100644 index 2e9615616..000000000 --- a/packages/extension/src/providers/ethereum/networks/sdn.ts +++ /dev/null @@ -1,27 +0,0 @@ -import icon from './icons/sdn.webp'; -import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; -import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; - -const sdnOptions: EvmNetworkOptions = { - name: NetworkNames.ShidenEVM, - name_long: 'Shiden EVM', - homePage: 'https://shiden.astar.network/', - blockExplorerTX: 'https://blockscout.com/shiden/tx/[[txHash]]', - blockExplorerAddr: 'https://blockscout.com/shiden/address/[[address]]', - chainID: '0x150', - isTestNetwork: false, - currencyName: 'SDN', - currencyNameLong: 'Shiden', - node: 'wss://shiden.api.onfinality.io/public-ws', - icon, - coingeckoID: 'shiden', - coingeckoPlatform: CoingeckoPlatform.Shiden, - assetsInfoHandler, - activityHandler: wrapActivityHandler(() => Promise.resolve([])), -}; - -const sdn = new EvmNetwork(sdnOptions); - -export default sdn; diff --git a/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts b/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts index d0f6a1801..394691fb7 100644 --- a/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts +++ b/packages/extension/src/providers/ethereum/networks/skale/skale-base.ts @@ -13,6 +13,7 @@ import Sparkline from '@/libs/sparkline'; import { NATIVE_TOKEN_ADDRESS } from '../../libs/common'; import { Erc20Token, Erc20TokenOptions } from '../../types/erc20-token'; import icon from '../icons/skl-fuel.webp'; +import { NetworkEndpoints } from '../../libs/activity-handlers/providers/etherscan/configs'; const DEFAULT_DECIMALS = 18; @@ -229,7 +230,9 @@ export function createSkaleEvmNetwork( coingeckoID: 'skale', coingeckoPlatform: CoingeckoPlatform.SKALE, assetsInfoHandler: getAssetHandler(assets), - activityHandler: wrapActivityHandler(EtherscanActivity), + activityHandler: NetworkEndpoints[params.name] + ? wrapActivityHandler(EtherscanActivity) + : wrapActivityHandler(() => Promise.resolve([])), customTokens: true, } as EvmNetworkOptions); } diff --git a/packages/extension/src/providers/ethereum/ui/eth-connect-dapp.vue b/packages/extension/src/providers/ethereum/ui/eth-connect-dapp.vue index 6177d1ed4..042b4a94e 100644 --- a/packages/extension/src/providers/ethereum/ui/eth-connect-dapp.vue +++ b/packages/extension/src/providers/ethereum/ui/eth-connect-dapp.vue @@ -33,13 +33,23 @@ /> -
+

This will reveal your public address, wallet balance and activity to {{ Options.domain }}

+
+ +

+ Your wallet address is restricted! if you believe this is an error + please contact us at + support@myetherwallet.com. +

+
@@ -80,11 +90,13 @@ import { fromBase } from '@enkryptcom/utils'; import { getError } from '@/libs/error'; import { ErrorCodes } from '../types'; import AccountState from '../libs/accounts-state'; +import { isWalletRestricted } from '@/libs/utils/screening'; const windowPromise = WindowPromiseHandler(1); const network = ref(DEFAULT_EVM_NETWORK); const identicon = ref(''); const displayAddress = ref(''); +const isRestricted = ref(false); const accountHeaderData = ref({ activeAccounts: [], inactiveAccounts: [], @@ -119,6 +131,9 @@ onBeforeMount(async () => { activeBalances: accounts.map(() => '~'), inactiveAccounts: [], }; + isWalletRestricted(displayAddress.value).then(res => { + isRestricted.value = res; + }); try { const api = await network.value.api(); const activeBalancePromises = accountHeaderData.value.activeAccounts.map( @@ -162,6 +177,9 @@ const toggleAccounts = () => { const onSelectedAddressChanged = async (newAccount: EnkryptAccount) => { accountHeaderData.value.selectedAccount = newAccount; displayAddress.value = network.value.displayAddress(newAccount.address); + isWalletRestricted(displayAddress.value).then(res => { + isRestricted.value = res; + }); identicon.value = network.value.identicon(newAccount.address); }; diff --git a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue index ab15bb2b5..e8ba8ae51 100644 --- a/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue +++ b/packages/extension/src/providers/ethereum/ui/send-transaction/index.vue @@ -175,6 +175,7 @@ import { trackSendEvents } from '@/libs/metrics'; import { SendEventType } from '@/libs/metrics/types'; import RecentlySentAddressesState from '@/libs/recently-sent-addresses'; import { parseCurrency } from '@/ui/action/utils/filters'; +import { isWalletRestricted } from '@/libs/utils/screening'; const props = defineProps({ network: { @@ -211,6 +212,7 @@ const accountAssets = ref([]); const selectedAsset = ref>(loadingAsset); const amount = ref(''); const isEstimateValid = ref(true); +const isRestricted = ref(false); const hasValidDecimals = computed(() => { return isValidDecimals(sendAmount.value, selectedAsset.value.decimals!); }); @@ -436,6 +438,10 @@ const balanceAfterInUsd = computed(() => { }); const errorMsg = computed(() => { + if (isRestricted.value) { + return `Restricted Address`; + } + if (!hasValidDecimals.value) { return `Too many decimals.`; } @@ -576,6 +582,7 @@ const sendButtonTitle = computed(() => { }); const isValidSend = computed(() => { + if (isRestricted.value) return false; if (!isInputsValid.value) return false; if (nativeBalanceAfterTransactionInBaseUnits.value.isNeg()) return false; if (!isEstimateValid.value) return false; @@ -709,6 +716,7 @@ const selectAccountFrom = (account: string) => { addressFrom.value = account; isOpenSelectContactFrom.value = false; fetchAssets(); + isWalletRestricted(account).then(res => (isRestricted.value = res)); }; const selectAccountTo = (account: string) => { diff --git a/packages/extension/src/providers/polkadot/libs/activity-handlers/providers/subscan/configs.ts b/packages/extension/src/providers/polkadot/libs/activity-handlers/providers/subscan/configs.ts index 23cf9081f..9792e8da9 100644 --- a/packages/extension/src/providers/polkadot/libs/activity-handlers/providers/subscan/configs.ts +++ b/packages/extension/src/providers/polkadot/libs/activity-handlers/providers/subscan/configs.ts @@ -7,7 +7,6 @@ const NetworkEndpoints = { [NetworkNames.Acala]: 'https://acala.api.subscan.io/', [NetworkNames.Karura]: 'https://karura.api.subscan.io/', [NetworkNames.Astar]: 'https://astar.api.subscan.io/', - [NetworkNames.Shiden]: 'https://shiden.api.subscan.io/', [NetworkNames.Bifrost]: 'https://bifrost.api.subscan.io/', [NetworkNames.BifrostKusama]: 'https://bifrost-kusama.api.subscan.io/', [NetworkNames.Unique]: 'https://unique.api.subscan.io/', diff --git a/packages/extension/src/providers/polkadot/networks/astar/shiden.ts b/packages/extension/src/providers/polkadot/networks/astar/shiden.ts deleted file mode 100644 index 9aca23529..000000000 --- a/packages/extension/src/providers/polkadot/networks/astar/shiden.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; -import { subscanActivity } from '../../libs/activity-handlers'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; -import assets from './assets/shiden-assets'; -import { - SubstrateNetwork, - SubstrateNetworkOptions, -} from '../../types/substrate-network'; -import assetHandler from '@/providers/polkadot/libs/asset-handler'; -import { toBN } from 'web3-utils'; -import icon from '../icons/shiden.webp'; - -const shidenOptions: SubstrateNetworkOptions = { - name: NetworkNames.Shiden, - name_long: 'Shiden', - homePage: 'https://shiden.astar.network/', - blockExplorerTX: 'https://shiden.subscan.io/extrinsic/[[txHash]]', - blockExplorerAddr: 'https://shiden.subscan.io/account/[[address]]', - isTestNetwork: false, - currencyName: 'SDN', - currencyNameLong: 'Shiden', - icon, - decimals: 18, - prefix: 5, - node: 'wss://shiden.api.onfinality.io/public-ws', - coingeckoID: 'shiden', - coingeckoPlatform: CoingeckoPlatform.Shiden, - existentialDeposit: toBN('1000000'), - genesisHash: - '0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6', - activityHandler: wrapActivityHandler(subscanActivity), - assetHandler, - knownTokens: assets, -}; - -const shiden = new SubstrateNetwork(shidenOptions); - -export default shiden; diff --git a/packages/extension/src/providers/polkadot/networks/index.ts b/packages/extension/src/providers/polkadot/networks/index.ts index 283c243a8..5aa53dc0a 100644 --- a/packages/extension/src/providers/polkadot/networks/index.ts +++ b/packages/extension/src/providers/polkadot/networks/index.ts @@ -4,7 +4,6 @@ import ksmNode from './kusama'; import karNode from './acala/karura'; import wndNode from './westend'; import astrNode from './astar/astar'; -import sdnNode from './astar/shiden'; import bncNode from './bifrost/polkadot'; import bncKusamaNode from './bifrost/kusama'; import edgNode from './edgeware'; @@ -25,7 +24,6 @@ export default { kusama: ksmNode, westend: wndNode, astar: astrNode, - shiden: sdnNode, bifrost: bncNode, bifrostKusama: bncKusamaNode, edgeware: edgNode, diff --git a/packages/extension/src/ui/action/App.vue b/packages/extension/src/ui/action/App.vue index bcd79762f..f6403a77f 100644 --- a/packages/extension/src/ui/action/App.vue +++ b/packages/extension/src/ui/action/App.vue @@ -2,9 +2,14 @@
- +
({ + isRestricted: false, + address: '', +}); /** ------------------- * Rate @@ -213,16 +221,6 @@ const toggleDepositWindow = () => { const openBuyPage = () => { const buyLink = (() => { switch (currentNetwork.value.name) { - case NetworkNames.KadenaTestnet: - return (currentNetwork.value as KadenaNetwork).options.buyLink; - case NetworkNames.SyscoinNEVM: - case NetworkNames.Rollux: - return `${(currentNetwork.value as EvmNetwork).options.buyLink}&address=${currentNetwork.value.displayAddress( - accountHeaderData.value.selectedAccount!.address, - )}`; - case NetworkNames.SyscoinNEVMTest: - case NetworkNames.RolluxTest: - return (currentNetwork.value as EvmNetwork).options.buyLink; case NetworkNames.Massa: return 'https://www.massa.net/get-mas'; default: @@ -353,9 +351,7 @@ const setNetwork = async (network: BaseNetwork) => { }; currentNetwork.value = network; - - checkAddresses(activeAccounts); - + checkAddress(selectedAccount); router.push({ name: 'assets', params: { id: network.name } }); const tabId = await domainState.getCurrentTabId(); const curSavedNetwork = await domainState.getSelectedNetWork(); @@ -440,17 +436,20 @@ const setNetwork = async (network: BaseNetwork) => { } }; -const foundRestrictedAddress = ref(false); - -const checkAddresses = async ( - activeAccounts: AccountsHeaderData['activeAccounts'], -) => { - const promises: Promise[] = activeAccounts.map(ac => - isWalletRestricted(currentNetwork.value.displayAddress(ac.address)), +const checkAddress = async (activeAccount: EnkryptAccount) => { + isAddressRestricted.value = { + isRestricted: false, + address: '', + }; + const isRestricted = await isWalletRestricted( + currentNetwork.value.displayAddress(activeAccount.address), ); - await Promise.all(promises).then(results => { - if (results.includes(true)) foundRestrictedAddress.value = true; - }); + if (isRestricted) { + isAddressRestricted.value = { + isRestricted, + address: currentNetwork.value.displayAddress(activeAccount.address), + }; + } }; const onSelectedSubnetworkChange = async (id: string) => { @@ -461,32 +460,35 @@ const onSelectedSubnetworkChange = async (id: string) => { const onSelectedAddressChanged = async (newAccount: EnkryptAccount) => { accountHeaderData.value.selectedAccount = newAccount; - const accountStates = { - [ProviderName.ethereum]: EVMAccountState, - [ProviderName.bitcoin]: BTCAccountState, - [ProviderName.solana]: SolAccountState, - }; - if (Object.keys(accountStates).includes(currentNetwork.value.provider)) { - const AccountState = new accountStates[ - currentNetwork.value.provider as keyof typeof accountStates - ](); - const domain = await domainState.getCurrentDomain(); - AccountState.addApprovedAddress(newAccount.address, domain); + await checkAddress(newAccount); + if (!isAddressRestricted.value.isRestricted) { + const accountStates = { + [ProviderName.ethereum]: EVMAccountState, + [ProviderName.bitcoin]: BTCAccountState, + [ProviderName.solana]: SolAccountState, + }; + if (Object.keys(accountStates).includes(currentNetwork.value.provider)) { + const AccountState = new accountStates[ + currentNetwork.value.provider as keyof typeof accountStates + ](); + const domain = await domainState.getCurrentDomain(); + AccountState.addApprovedAddress(newAccount.address, domain); + } + await domainState.setSelectedAddress(newAccount.address); + await sendToBackgroundFromAction({ + message: JSON.stringify({ + method: InternalMethods.sendToTab, + params: [ + { + method: MessageMethod.changeAddress, + params: [currentNetwork.value.displayAddress(newAccount.address)], + }, + ], + }), + provider: currentNetwork.value.provider, + tabId: await domainState.getCurrentTabId(), + }); } - await domainState.setSelectedAddress(newAccount.address); - await sendToBackgroundFromAction({ - message: JSON.stringify({ - method: InternalMethods.sendToTab, - params: [ - { - method: MessageMethod.changeAddress, - params: [currentNetwork.value.displayAddress(newAccount.address)], - }, - ], - }), - provider: currentNetwork.value.provider, - tabId: await domainState.getCurrentTabId(), - }); }; const showNetworkMenu = computed(() => { const selected = route.params.id as string; @@ -499,6 +501,15 @@ const showNetworkMenu = computed(() => { ); }); +const switchToUnrestrictedAddress = () => { + const newAccount = accountHeaderData.value.activeAccounts.find( + aa => + currentNetwork.value.displayAddress(aa.address) !== + isAddressRestricted.value.address, + ); + if (newAccount) onSelectedAddressChanged(newAccount); +}; + const isLocked = computed(() => { return route.name == 'lock-screen'; }); diff --git a/packages/extension/src/ui/action/views/restricted/index.vue b/packages/extension/src/ui/action/views/restricted/index.vue index 83008fc5c..cdb792cd2 100644 --- a/packages/extension/src/ui/action/views/restricted/index.vue +++ b/packages/extension/src/ui/action/views/restricted/index.vue @@ -2,21 +2,42 @@