Conversation
…into devop/add-new-chains
…into fix/solana-swap-error
…into fix/swap-error
…into fix/solana-insufficient-funds
…into feat/update-0x
…into fix/feedback-popup
…into feat/add-secure-clear
Devop/add new chains
…nKrypt into feat/collapse-networks-menu
Feat/collapse networks menu
fix: missing await
devop: prep release v2.5.0
|
💼 Build Files |
WalkthroughThis pull request introduces a new GitHub Actions workflow for testing swap providers, updates test commands and dependency versions in various package manifests, and expands blockchain network support in the README and Ethereum network configurations. New state management features are added in the extension (including a MenuState class and enhanced currency settings), and several UI components are improved with reactive data‐binding. In addition, numerous network configuration files are updated to convert icon imports from SVG/PNG to WEBP and to add new networks and endpoint changes. Changes
Sequence Diagram(s)sequenceDiagram
participant G as GitHub Actions Runner
participant C as Checkout (actions/checkout@v4)
participant N as Setup Node (actions/setup-node@v4)
participant Y as Yarn
participant T as Test Suite
G->>C: Checkout repository
C-->>G: Repository checked out
G->>N: Setup Node.js (v22.10.0) with caching
N-->>G: Node.js environment ready
G->>Y: Run "yarn install"
Y-->>G: Dependencies installed
G->>Y: Execute "yarn build:all"
Y-->>G: Build completed
G->>Y: Run "yarn test" in packages/swap
Y-->>G: Return test results
sequenceDiagram
participant UI as UI Component
participant MS as MenuState
participant BS as BrowserStorage
UI->>MS: Call setState(newState)
MS->>BS: Store newState under key "menuState"
BS-->>MS: State persisted
UI->>MS: Call getState()
MS->>BS: Retrieve state for "menuState"
BS-->>MS: Return stored state (or default if none)
MS-->>UI: Return current menu state
Possibly related PRs
Suggested labels
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (11)
.github/workflows/test-swap.yml (1)
1-16: Good addition of CI/CD workflow for swap providersThe new GitHub Actions workflow will ensure swap providers are properly tested with each code change. The configuration is well-structured with appropriate steps for checkout, Node setup, dependency installation, and test execution.
A couple of observations:
- Node version 22.10.0 is very recent. Ensure it's compatible with all dependencies.
- Consider adding a workflow concurrency limit to prevent multiple runs on the same branch.
name: Test all swap providers on: [push] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22.10.0" cache: "yarn" - run: yarn install - run: yarn build:all - run: cd packages/swap && yarn testpackages/extension/src/providers/ethereum/networks/puppy.ts (1)
1-2: Icon Format Change and Asset VerificationThe icon import has been revised to load a WEBP file (
./icons/shiba-inu.webp) instead of the previous SVG. Ensure that theshiba-inu.webpasset is the correct icon for PuppyNet and that its naming aligns with the project’s asset conventions.packages/extension/src/providers/ethereum/networks/movr.ts (1)
12-12: Potential URL Formatting Issue: The URL provided inblockExplorerTX(line 12) contains a double slash (//) after the domain (i.e.'https://moonriver.moonscan.io//tx/[[txHash]]'). While many servers handle this gracefully, it is worth verifying that the extra slash does not cause any unintended issues in URL resolution.packages/extension/src/providers/ethereum/networks/gravity.ts (2)
22-22: Consider adding NFT support for Gravity networkUnlike the Berachain configuration, the Gravity network doesn't include an NFT handler. If NFT support is intended for this network, consider adding the
shNFTHandlersimilar to the Berachain implementation.activityHandler: wrapActivityHandler(() => Promise.resolve([])), +NFTHandler: shNFTHandler,
22-22: Consider implementing a proper activity handler in the futureThe current implementation uses an empty placeholder for the activity handler. While acceptable for the initial integration, a proper activity handler should be implemented in a future update.
packages/extension/src/providers/ethereum/networks/unichain.ts (1)
23-23: Consider implementing a proper activity handlerThe current implementation wraps an empty promise for activities, which means no transaction history will be available. If the Unichain blockchain has explorer APIs, consider implementing a proper activity handler instead of returning an empty array.
packages/extension/src/providers/ethereum/networks/coti.ts (2)
7-20: Verify COTI network configuration parametersThe configuration appears correct, but there are a few potential enhancements:
- No coingeckoID is specified, which might limit price fetching functionality
- No assetsInfoHandler or NFTHandler are defined, which might limit token and NFT support
const coti: EvmNetworkOptions = { name: NetworkNames.Coti, name_long: 'COTI', homePage: 'https://coti.io/', blockExplorerTX: 'https://mainnet.cotiscan.io/tx/[[txHash]]', blockExplorerAddr: 'https://mainnet.cotiscan.io/address/[[address]]', chainID: '0x282B34', isTestNetwork: false, currencyName: 'COTI', currencyNameLong: 'COTI', node: 'https://mainnet.coti.io/rpc', icon, + coingeckoID: 'coti', + assetsInfoHandler: assetsInfoHandler, activityHandler: wrapActivityHandler(EtherscanActivity), };
22-24: Rename variable for consistency with network typeThe exported instance is named
cotiDevnetbut the network is configured as a mainnet (isTestNetwork: false). Consider renaming the variable to simplycotifor clarity and consistency.-const cotiDevnet = new EvmNetwork(coti); +const coti = new EvmNetwork(coti); -export default cotiDevnet; +export default coti;packages/extension/src/providers/ethereum/networks/abstract.ts (1)
21-21: Consider implementing a proper activity handlerThe current implementation wraps an empty promise for activities, which means no transaction history will be available. If the Abstract blockchain has explorer APIs, consider implementing a proper activity handler instead of returning an empty array.
packages/extension/src/libs/settings-state/types.ts (1)
26-29: New currency settings type addedAdded a new interface to support currency settings with a single string value property.
Consider using a more specific type than
stringfor the currency value, such as an enum or string literal union of supported currencies (e.g.,type CurrencyCode = 'USD' | 'EUR' | 'GBP' | ...). This would provide better type safety and autocompletion.packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts (1)
275-285: Optimize reducer implementation to avoid performance issue.The spread operator in the reducer could lead to O(n²) time complexity as identified by static analysis.
Consider refactoring to avoid using spread in the reducer:
- : tokens.reduce( - (obj, cur) => ({ ...obj, [cur.contract]: null }), - {} as Record<string, CoinGeckoTokenMarket | null>, - ); + : tokens.reduce( + (obj, cur) => { + obj[cur.contract] = null; + return obj; + }, + {} as Record<string, CoinGeckoTokenMarket | null>, + );🧰 Tools
🪛 Biome (1.9.4)
[error] 283-283: Avoid the use of spread (
...) syntax on accumulators.Spread syntax should be avoided on accumulators (like those in
.reduce) because it causes a time complexity ofO(n^2).
Consider methods such as .splice or .push instead.(lint/performance/noAccumulatingSpread)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (77)
packages/extension/src/providers/bitcoin/networks/icons/btc.svgis excluded by!**/*.svgpackages/extension/src/providers/bitcoin/networks/icons/doge.svgis excluded by!**/*.svgpackages/extension/src/providers/bitcoin/networks/icons/ltc.svgis excluded by!**/*.svgpackages/extension/src/providers/bitcoin/networks/icons/tbtc.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/5ire.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/aa.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/apex.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/arbitrum-nova.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/arbitrum.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/astr.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/aurora.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/avax.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/base.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/bitrock.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/bsc.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/caga.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/canto.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/celo.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/coti.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/degen.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/edgeware.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/etc.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/eth.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/form.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/forma.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/fraxtal.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/ftm.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/gno.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/godwoken.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/ham.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/immutable-zkevm.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/karura-evm.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/linea.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/manta-pacific.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/matic.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/mode.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/moonbeam.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/moonriver.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/okc.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/ont-evm.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/op.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/opbnb.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/palm.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/rari.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/rootstock.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/sanko.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/scroll.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/sdn.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/shiba-inu.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/skaleBlockBrawlers.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleCalypsoNFTHub.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleCryptoBlades.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleCryptoColloseum.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleEuropa.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/skaleExorde.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleNebula.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleRazor.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skaleTitan.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skl-fuel.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/skl.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/sys_nevm.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/sys_rollux.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/telos.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/tsys_nevm.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/tsys_rollux.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/viction.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/xlayer.pngis excluded by!**/*.pngpackages/extension/src/providers/ethereum/networks/icons/zcd.svgis excluded by!**/*.svgpackages/extension/src/providers/ethereum/networks/icons/zksync.svgis excluded by!**/*.svgpackages/extension/src/providers/kadena/networks/icons/kadena-kda-logo.svgis excluded by!**/*.svgpackages/extension/src/providers/polkadot/networks/icons/acala.svgis excluded by!**/*.svgpackages/extension/src/providers/polkadot/networks/icons/amplitude.svgis excluded by!**/*.svgpackages/extension/src/providers/polkadot/networks/icons/assethub.pngis excluded by!**/*.pngpackages/extension/src/providers/polkadot/networks/icons/astar.pngis excluded by!**/*.pngpackages/extension/src/providers/polkadot/networks/icons/bifrost.svgis excluded by!**/*.svgpackages/extension/src/providers/polkadot/networks/icons/edgeware.svgis excluded by!**/*.svgpackages/extension/src/providers/polkadot/networks/icons/karura.svgis excluded by!**/*.svg
📒 Files selected for processing (107)
.github/workflows/test-swap.yml(1 hunks)README.md(2 hunks)package.json(2 hunks)packages/extension-bridge/package.json(1 hunks)packages/extension/package.json(5 hunks)packages/extension/src/libs/menu-state/index.ts(1 hunks)packages/extension/src/libs/menu-state/types.ts(1 hunks)packages/extension/src/libs/nft-handlers/simplehash.ts(1 hunks)packages/extension/src/libs/settings-state/index.ts(2 hunks)packages/extension/src/libs/settings-state/types.ts(2 hunks)packages/extension/src/libs/updates-state/index.ts(1 hunks)packages/extension/src/providers/bitcoin/libs/ss-fee-handler.ts(1 hunks)packages/extension/src/providers/bitcoin/networks/bitcoin-testnet.ts(1 hunks)packages/extension/src/providers/bitcoin/networks/bitcoin.ts(1 hunks)packages/extension/src/providers/bitcoin/networks/dogecoin.ts(1 hunks)packages/extension/src/providers/bitcoin/networks/litecoin.ts(1 hunks)packages/extension/src/providers/bitcoin/ui/send-transaction/index.vue(2 hunks)packages/extension/src/providers/bitcoin/ui/send-transaction/verify-transaction/index.vue(1 hunks)packages/extension/src/providers/common/libs/new-features.ts(1 hunks)packages/extension/src/providers/common/ui/send-transaction/nft-select-list/components/nft-select-list-search.vue(1 hunks)packages/extension/src/providers/common/ui/send-transaction/nft-select-list/index.vue(3 hunks)packages/extension/src/providers/common/ui/send-transaction/send-fee-select.vue(1 hunks)packages/extension/src/providers/common/ui/send-transaction/send-input-amount.vue(1 hunks)packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-fee.vue(1 hunks)packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-network.vue(1 hunks)packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts(1 hunks)packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts(4 hunks)packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts(1 hunks)packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts(1 hunks)packages/extension/src/providers/ethereum/networks/5ire.ts(1 hunks)packages/extension/src/providers/ethereum/networks/aa.ts(1 hunks)packages/extension/src/providers/ethereum/networks/aat.ts(1 hunks)packages/extension/src/providers/ethereum/networks/abstract.ts(1 hunks)packages/extension/src/providers/ethereum/networks/arb-nova.ts(1 hunks)packages/extension/src/providers/ethereum/networks/arb.ts(1 hunks)packages/extension/src/providers/ethereum/networks/astr.ts(1 hunks)packages/extension/src/providers/ethereum/networks/aurora.ts(1 hunks)packages/extension/src/providers/ethereum/networks/avax.ts(1 hunks)packages/extension/src/providers/ethereum/networks/base.ts(2 hunks)packages/extension/src/providers/ethereum/networks/bera.ts(1 hunks)packages/extension/src/providers/ethereum/networks/bitrock.ts(1 hunks)packages/extension/src/providers/ethereum/networks/bsc.ts(1 hunks)packages/extension/src/providers/ethereum/networks/cagaAnkara.ts(1 hunks)packages/extension/src/providers/ethereum/networks/canto.ts(1 hunks)packages/extension/src/providers/ethereum/networks/celo.ts(1 hunks)packages/extension/src/providers/ethereum/networks/coti-devnet.ts(1 hunks)packages/extension/src/providers/ethereum/networks/coti.ts(1 hunks)packages/extension/src/providers/ethereum/networks/degen.ts(1 hunks)packages/extension/src/providers/ethereum/networks/dmt.ts(1 hunks)packages/extension/src/providers/ethereum/networks/edg.ts(1 hunks)packages/extension/src/providers/ethereum/networks/etc.ts(1 hunks)packages/extension/src/providers/ethereum/networks/eth.ts(1 hunks)packages/extension/src/providers/ethereum/networks/form-testnet.ts(1 hunks)packages/extension/src/providers/ethereum/networks/form.ts(1 hunks)packages/extension/src/providers/ethereum/networks/forma.ts(1 hunks)packages/extension/src/providers/ethereum/networks/fraxtal.ts(1 hunks)packages/extension/src/providers/ethereum/networks/ftm.ts(1 hunks)packages/extension/src/providers/ethereum/networks/glmr.ts(1 hunks)packages/extension/src/providers/ethereum/networks/gno.ts(1 hunks)packages/extension/src/providers/ethereum/networks/godwoken.ts(1 hunks)packages/extension/src/providers/ethereum/networks/gravity.ts(1 hunks)packages/extension/src/providers/ethereum/networks/ham.ts(1 hunks)packages/extension/src/providers/ethereum/networks/holesky.ts(1 hunks)packages/extension/src/providers/ethereum/networks/immutable-zkevm.ts(2 hunks)packages/extension/src/providers/ethereum/networks/index.ts(2 hunks)packages/extension/src/providers/ethereum/networks/inkonchain.ts(1 hunks)packages/extension/src/providers/ethereum/networks/karura.ts(1 hunks)packages/extension/src/providers/ethereum/networks/linea.ts(1 hunks)packages/extension/src/providers/ethereum/networks/manta-pacific.ts(1 hunks)packages/extension/src/providers/ethereum/networks/matic.ts(1 hunks)packages/extension/src/providers/ethereum/networks/maticzk.ts(1 hunks)packages/extension/src/providers/ethereum/networks/mode.ts(1 hunks)packages/extension/src/providers/ethereum/networks/movr.ts(1 hunks)packages/extension/src/providers/ethereum/networks/okc.ts(1 hunks)packages/extension/src/providers/ethereum/networks/ontevm.ts(1 hunks)packages/extension/src/providers/ethereum/networks/op-bnb.ts(1 hunks)packages/extension/src/providers/ethereum/networks/op.ts(1 hunks)packages/extension/src/providers/ethereum/networks/palm.ts(1 hunks)packages/extension/src/providers/ethereum/networks/pop-apex.ts(1 hunks)packages/extension/src/providers/ethereum/networks/puppy.ts(1 hunks)packages/extension/src/providers/ethereum/networks/rari.ts(1 hunks)packages/extension/src/providers/ethereum/networks/rsk-testnet.ts(1 hunks)packages/extension/src/providers/ethereum/networks/rsk.ts(2 hunks)packages/extension/src/providers/ethereum/networks/scroll.ts(1 hunks)packages/extension/src/providers/ethereum/networks/sdn.ts(1 hunks)packages/extension/src/providers/ethereum/networks/sepolia.ts(1 hunks)packages/extension/src/providers/ethereum/networks/shib.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/README.md(2 hunks)packages/extension/src/providers/ethereum/networks/skale/blockBrawlers.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/calypso.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/cryptoBlades.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/cryptoColosseum.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/europa.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/exorde.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/nebula.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/razor.ts(1 hunks)packages/extension/src/providers/ethereum/networks/skale/skale-base.ts(4 hunks)packages/extension/src/providers/ethereum/networks/skale/titan.ts(1 hunks)packages/extension/src/providers/ethereum/networks/story.ts(1 hunks)packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts(1 hunks)packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts(1 hunks)packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts(1 hunks)packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts(1 hunks)packages/extension/src/providers/ethereum/networks/taraxa.ts(1 hunks)packages/extension/src/providers/ethereum/networks/tlos.ts(1 hunks)packages/extension/src/providers/ethereum/networks/unichain.ts(1 hunks)packages/extension/src/providers/ethereum/networks/vic.ts(1 hunks)
⛔ Files not processed due to max files limit (30)
- packages/extension/src/providers/ethereum/networks/xlayer.ts
- packages/extension/src/providers/ethereum/networks/zcd.ts
- packages/extension/src/providers/ethereum/networks/zkgoerli.ts
- packages/extension/src/providers/ethereum/networks/zksync.ts
- packages/extension/src/providers/ethereum/types/custom-evm-network.ts
- packages/extension/src/providers/ethereum/ui/eth-verify-transaction.vue
- packages/extension/src/providers/ethereum/ui/send-transaction/components/send-token-select.vue
- packages/extension/src/providers/ethereum/ui/send-transaction/index.vue
- packages/extension/src/providers/ethereum/ui/send-transaction/verify-transaction/index.vue
- packages/extension/src/providers/ethereum/ui/wallet-add-ethereum-network.vue
- packages/extension/src/providers/kadena/methods/kda_switchNetwork.ts
- packages/extension/src/providers/kadena/networks/kadena-testnet.ts
- packages/extension/src/providers/kadena/networks/kadena.ts
- packages/extension/src/providers/kadena/ui/send-transaction/components/send-fee-display.vue
- packages/extension/src/providers/kadena/ui/send-transaction/components/send-fee-select.vue
- packages/extension/src/providers/kadena/ui/send-transaction/index.vue
- packages/extension/src/providers/kadena/ui/send-transaction/verify-transaction/index.vue
- packages/extension/src/providers/polkadot/networks/acala/acala.ts
- packages/extension/src/providers/polkadot/networks/acala/assets/acala-assets.ts
- packages/extension/src/providers/polkadot/networks/acala/assets/karura-assets.ts
- packages/extension/src/providers/polkadot/networks/acala/karura.ts
- packages/extension/src/providers/polkadot/networks/assethub/assethub-dot.ts
- packages/extension/src/providers/polkadot/networks/assethub/assethub-ksm.ts
- packages/extension/src/providers/polkadot/networks/astar/assets/astar-assets.ts
- packages/extension/src/providers/polkadot/networks/astar/astar.ts
- packages/extension/src/providers/polkadot/networks/astar/shiden.ts
- packages/extension/src/providers/polkadot/networks/bifrost/assets/bifrost-assets.ts
- packages/extension/src/providers/polkadot/networks/bifrost/kusama.ts
- packages/extension/src/providers/polkadot/networks/bifrost/polkadot.ts
- packages/extension/src/providers/polkadot/networks/edgeware.ts
🧰 Additional context used
🧬 Code Graph Analysis (9)
packages/extension/src/providers/ethereum/networks/gravity.ts (1)
packages/extension/src/providers/ethereum/types/evm-network.ts (2)
EvmNetworkOptions(25-56)EvmNetwork(58-293)
packages/extension/src/providers/ethereum/networks/bera.ts (1)
packages/extension/src/providers/ethereum/types/evm-network.ts (2)
EvmNetworkOptions(25-56)EvmNetwork(58-293)
packages/extension/src/providers/ethereum/networks/unichain.ts (1)
packages/extension/src/providers/ethereum/types/evm-network.ts (2)
EvmNetworkOptions(25-56)EvmNetwork(58-293)
packages/extension/src/providers/ethereum/networks/abstract.ts (1)
packages/extension/src/providers/ethereum/types/evm-network.ts (2)
EvmNetworkOptions(25-56)EvmNetwork(58-293)
packages/extension/src/providers/ethereum/networks/story.ts (1)
packages/extension/src/providers/ethereum/types/evm-network.ts (2)
EvmNetworkOptions(25-56)EvmNetwork(58-293)
packages/extension/src/providers/ethereum/networks/taraxa.ts (1)
packages/extension/src/providers/ethereum/types/evm-network.ts (2)
EvmNetworkOptions(25-56)EvmNetwork(58-293)
packages/extension/src/libs/settings-state/index.ts (1)
packages/extension/src/libs/settings-state/types.ts (2)
CurrencySettingsType(27-29)SettingsType(30-37)
packages/extension/src/libs/menu-state/index.ts (1)
packages/extension/src/libs/menu-state/types.ts (1)
IState(5-7)
packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts (2)
packages/swap/src/configs.ts (1)
NATIVE_TOKEN_ADDRESS(123-123)packages/extension/src/libs/market-data/types.ts (1)
CoinGeckoTokenMarket(23-37)
🪛 Biome (1.9.4)
packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts
[error] 283-283: Avoid the use of spread (...) syntax on accumulators.
Spread syntax should be avoided on accumulators (like those in .reduce) because it causes a time complexity of O(n^2).
Consider methods such as .splice or .push instead.
(lint/performance/noAccumulatingSpread)
🔇 Additional comments (139)
packages/extension/src/providers/ethereum/networks/aurora.ts (1)
1-1: Updated image format from PNG to WebPGood optimization. WebP typically provides better compression than PNG while maintaining similar quality, which should help reduce bundle size.
packages/extension/src/providers/ethereum/networks/astr.ts (1)
1-1: Updated image format from PNG to WebPGood choice of image format. WebP offers better compression and will help reduce bundle size and improve loading performance.
packages/extension/src/providers/bitcoin/ui/send-transaction/verify-transaction/index.vue (1)
64-64: Improved state management using v-modelGood refactoring to use Vue's reactive two-way data binding. Using
v-modelinstead of event handlers makes the code more maintainable and follows Vue best practices.package.json (2)
21-23: Test Script Exclusion UpdateThe test script has been updated with the
--exclude packages/swapoption. This change is consistent with the new GitHub Actions workflow that specifically handles swap provider tests. Please verify that excluding the swap package here does not inadvertently omit any tests that should run under alternative circumstances.
35-37: Dependency Version UpgradesThe versions for
@commitlint/cli,@commitlint/config-conventional, and@swc/corehave been incremented appropriately. Ensure that these upgrades are fully compatible with your existing toolchain and that no breaking changes are introduced in the development workflow.packages/extension/src/providers/ethereum/networks/sdn.ts (1)
1-1: Icon File Format ConversionThe icon import has been updated from a PNG to a WEBP file (
./icons/sdn.webp). This update should help improve asset performance and uniformity across network configurations. Confirm that the new WEBP file is optimized and correctly located.packages/extension/src/providers/ethereum/networks/glmr.ts (1)
1-1: Icon Import Update and Naming ConsistencyThe icon is now imported from
./icons/moonbeam.webp, aligning with the new asset format. Although the file is namedglmr.ts, the configuration refers to the Moonbeam network (with currencyGLMR), which appears intentional. Please double-check that this naming convention is documented for clarity.packages/extension/src/providers/ethereum/networks/tlos.ts (1)
1-1: Updated Icon Import for Telos NetworkThe icon import has been updated from a SVG file to a WEBP file (
./icons/telos.webp). This change should improve asset delivery performance. Verify that the new icon design meets the Telos network’s branding guidelines.packages/extension/src/providers/ethereum/networks/rsk-testnet.ts (1)
1-1: Icon Import Update to WEBP Format
The import statement for the network icon has been updated to use the WEBP file (rootstock.webp) instead of the older SVG. This change is consistent with the overall asset update effort across network configuration files. Please ensure that the new WEBP asset exists in the expected location and is optimized for performance.packages/extension/src/providers/ethereum/networks/sepolia.ts (1)
1-1: Consistent Icon Format Update
The updated import statement now sources the icon from a.webpfile (eth.webp), aligning with the project-wide transition from SVG to WEBP assets. The change is non-invasive to the rest of the file's logic.packages/extension/src/providers/ethereum/networks/aa.ts (1)
1-1: Uniform Asset Format Implementation
The icon import has been updated from SVG to WEBP by importingaa.webp. This is a straightforward change that aligns with the new standard. No adverse effects on the network configuration are expected.packages/extension/src/providers/ethereum/networks/5ire.ts (1)
1-1: WEBP Icon Integration Confirmed
The file now imports the network icon from a.webpfile (5ire.webp) replacing the previous SVG format. This modification is consistent with the aesthetic and performance enhancements being implemented across similar network files.packages/extension/src/providers/ethereum/networks/fraxtal.ts (1)
1-1: Standardized Icon Asset Upgrade
The import statement for the icon now referencesfraxtal.webp, following the new standardized asset format for the project. The change is minimal and does not alter the overall functionality of the network configuration.packages/extension/src/providers/bitcoin/networks/bitcoin.ts (1)
1-1: Icon Import Format Update Verified.The import statement now uses a
.webpasset (btc.webp), aligning with the project's broader initiative to standardize and optimize icon assets. Please ensure that the referenced asset exists in the./icons/directory and is optimized for performance.packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts (1)
1-1: Icon Import Format Update Verified.The import statement has been updated to reference a
.webpasset (tsys_rollux.webp) from the relative path. This change is consistent with similar updates across the network configurations. Confirm that the new file is accessible and displays correctly in the relevant UI.packages/extension/src/providers/ethereum/networks/linea.ts (1)
1-1: Icon Import Format Update Verified.The icon import has changed from a PNG to a WEBP format (
linea.webp). This contributes to improved performance and a standardized asset format across the project. Verify that this asset is correctly rendered on all supported platforms.packages/extension/src/providers/ethereum/networks/okc.ts (1)
1-1: Icon Import Format Update Verified.The icon for OKC is now being imported from a
.webpfile (okc.webp) instead of a.svg. The change is straightforward and consistent with the other network files. Please double-check that the new icon displays as expected.packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts (1)
1-1: Icon Import Format Update Verified.This update replaces the SVG icon import with a WEBP file (
sys_rollux.webp), which is in line with the asset optimizations performed across the repository. Ensure that the new asset is loaded without issues in the application.packages/extension/src/providers/ethereum/networks/canto.ts (1)
1-1: Icon Import Update: Use of WEBP FormatThe updated import on line 1 now pulls the icon from a
.webpfile instead of a.svg. This change enhances performance (through better compression and loading speed) and maintains consistency with similar network configurations across the codebase.packages/extension/src/providers/ethereum/networks/skale/cryptoBlades.ts (1)
13-13: Skale Icon Format UpdateThe modification on line 13 changes the icon reference to a
.webpfile. This update aligns with the new asset management strategy and should improve asset delivery performance.packages/extension/src/providers/ethereum/networks/shib.ts (1)
1-1: Shibarium Icon Import RevisionThe change on line 1 updates the icon import to reference a
.webpimage. This update is consistent with the overall effort to standardize icons and optimize performance across network files.packages/extension/src/providers/ethereum/networks/arb.ts (1)
1-1: Arbitrum Icon File UpdateUpdating the import on line 1 to use a
.webpfile is a good move toward uniform asset management. The adjustment should offer better load performance without affecting functionality.packages/extension/src/providers/ethereum/networks/dmt.ts (1)
1-1: DMT Network Icon Format TransitionThe change on line 1 replaces the PNG icon with a WEBP file. This consistent update across network configurations is beneficial for optimizing asset size and load times while maintaining visual fidelity.
packages/extension/src/providers/ethereum/networks/holesky.ts (1)
1-1: Icon Import Updated to WEBPThe import statement on line 1 correctly updates the asset format from a previous type (e.g. SVG) to
.webp, aligning with the new asset standard.packages/extension/src/providers/bitcoin/networks/dogecoin.ts (1)
1-1: Icon Import Change to WEBPThe updated import on line 1 now references
'./icons/doge.webp', which conforms to the standardized asset formats across the project. This non-functional change improves consistency.packages/extension/src/providers/ethereum/networks/godwoken.ts (1)
1-1: Icon Format Transition from PNG to WEBPThe new import statement on line 1 uses
'./icons/godwoken.webp'instead of the older PNG format, ensuring uniformity with the current asset management strategy.packages/extension/src/providers/ethereum/networks/ham.ts (1)
1-1: Updated Icon Import to WEBP FormatLine 1 now imports the icon from
'./icons/ham.webp', replacing the previous PNG source. This change is consistent with the project-wide update for improved image asset handling.packages/extension/src/providers/ethereum/networks/rari.ts (1)
1-1: Correctly Updated Icon Import to WEBPThe icon import on line 1 now uses
'./icons/rari.webp', which streamlines the asset format across network configurations without affecting functionality.packages/extension/src/providers/ethereum/networks/palm.ts (1)
1-1: Icon Import Update: The import has been updated to use the WebP format by changing the path to./icons/palm.webp. This aligns with the project-wide standardization on WebP assets.packages/extension/src/providers/ethereum/networks/maticzk.ts (1)
1-1: Icon Import Update: The icon import now references the WebP asset (./icons/matic.webp), ensuring consistency with other network files. Verify that the new asset exists and is optimized as expected.packages/extension/src/providers/ethereum/networks/vic.ts (1)
1-1: Icon Format Transition: The icon import has been changed from a PNG to a WebP file (./icons/viction.webp). This update supports asset consistency across network configurations and could improve image loading performance.packages/extension/src/providers/ethereum/networks/movr.ts (1)
1-1: Icon Import Standardization: The change updates the icon import to use the WebP file (./icons/moonriver.webp), which is consistent with the overall asset strategy of the project.packages/extension/src/providers/ethereum/networks/gno.ts (1)
1-1: WebP Icon Import: The import has been updated to reference the WebP format (./icons/gno.webp), maintaining consistency with recent asset updates across the network configurations. Ensure that the new icon is available and properly optimized.packages/extension/src/providers/ethereum/networks/celo.ts (1)
1-1: Icon file format updated to WebP for better performance.The update from SVG to WebP format for the Celo network icon aligns with the broader standardization effort across network configurations. WebP typically offers better compression while maintaining good quality, which can help reduce the extension's size.
packages/extension/src/providers/ethereum/networks/mode.ts (1)
1-1: Icon file format updated to WebP for better performance.The update from PNG to WebP format for the Mode network icon aligns with the broader standardization effort across network configurations. WebP typically offers better compression while maintaining good quality, which can help reduce the extension's size.
packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts (1)
1-1: Icon file format updated to WebP for better performance.The update from SVG to WebP format for the Syscoin NEVM network icon aligns with the broader standardization effort across network configurations. WebP typically offers better compression while maintaining good quality, which can help reduce the extension's size.
packages/extension/src/providers/ethereum/networks/skale/cryptoColosseum.ts (1)
13-13: Icon file format updated to WebP for better performance.The update from PNG to WebP format for the SKALE Crypto Colosseum network icon aligns with the broader standardization effort across network configurations. WebP typically offers better compression while maintaining good quality, which can help reduce the extension's size.
packages/extension/src/providers/ethereum/networks/forma.ts (2)
1-1: Icon Import Format Updated.
The import statement now usesforma.webpinstead of the previous PNG, which is consistent with the asset standardization effort across the project.
2-27: Network Configuration Unchanged & Correct.
All remaining network options informaOptionsare intact and valid. There are no changes affecting functionality aside from the asset format update.packages/extension/src/providers/ethereum/networks/ontevm.ts (2)
1-1: Icon Import Format Updated.
The icon is now imported fromont-evm.webpinstead of the previous format. This update aligns with the overall asset conversion strategy.
2-26: Ontology EVM Network Options are Consistent.
The network configuration (options such asname,homePage,chainID, etc.) remains unchanged and correctly defined. The update solely affects the icon import.packages/extension/src/providers/ethereum/networks/aat.ts (2)
1-1: Icon Import Format Updated.
The file now imports the icon from./icons/aa.webprather than the SVG, which is consistent with the new asset format across similar network files.
2-25: Network Configuration Remains Correct.
The network options forArtheraTesthave not been affected by the icon format change. All credentials, endpoints, and parameters remain properly defined.packages/extension/src/providers/ethereum/networks/form.ts (2)
1-1: Icon Import Format Updated.
The icon is now sourced from./icons/form.webp, which adheres to the recent conversion of asset formats.
2-25: Form Mainnet Network Configuration is Valid.
All other properties in theformOptionsremain unchanged and are defined correctly to ensure proper network operation.packages/extension/src/providers/ethereum/networks/avax.ts (2)
1-1: Icon Import Format Updated.
The import statement now referencesavax.webpinstead of an SVG. This change is in line with the project’s move towards standardizing asset formats.
2-31: Avalanche Network Options Verified.
TheavaxOptionsremain fully intact, with all configuration parameters such as endpoints, chain IDs, and handlers correctly specified. The sole change pertains to the format of the icon, which is appropriate and non-disruptive.packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts (1)
1-1: Icon import updated to WEBP format.
The change from an earlier image format (e.g. SVG) to WEBP is consistent with our standardization efforts across network files and may provide better performance and reduced asset size.packages/extension/src/providers/ethereum/networks/skale/razor.ts (1)
13-13: Updated icon file reference to WEBP.
Changing the icon from its previous format toskaleRazor.webpaligns with our updated asset strategy and ensures consistency with similar network configurations.packages/extension/src/providers/ethereum/networks/op-bnb.ts (1)
1-1: Revised icon import to use WEBP.
The update to importopbnb.webpinstead of a PNG is a straightforward refactor for consistency with other network configurations. No functional impacts are expected.packages/extension/src/providers/ethereum/networks/scroll.ts (1)
1-1: Icon import switched to WEBP format.
Updating the import toscroll.webphelps standardize our assets and may offer performance benefits, with no other changes affecting the functionality.packages/extension/src/providers/ethereum/networks/etc.ts (1)
1-1: Converted icon import from SVG to WEBP.
This update, replacing the SVG with a WEBP format via the import ofetc.webp, is part of our broader initiative to streamline asset formats across modules.packages/extension/src/providers/ethereum/networks/arb-nova.ts (1)
1-1: Icon Import Updated to WEBP:
The import statement now uses a WEBP file, which aligns with our asset optimization strategy and improves consistency with other network files.packages/extension/src/providers/ethereum/networks/bitrock.ts (1)
1-1: Icon Format Transition:
The icon import now references a WEBP file, which enhances image compression and performance while keeping consistency with our modernized assets.packages/extension/src/providers/ethereum/networks/manta-pacific.ts (1)
1-1: WEBP Icon Import:
Updating the icon import to WEBP ensures better asset handling and a standardized approach across our network configurations.packages/extension/src/providers/ethereum/networks/skale/exorde.ts (1)
9-9: SKALE Icon Update:
Theiconproperty now points to a WEBP file instead of a PNG. Please confirm that theskaleExorde.webpasset exists in the designated location to avoid runtime issues.packages/extension/src/providers/ethereum/networks/skale/nebula.ts (1)
9-9: Nebula Icon Update:
The icon for the Nebula configuration has been updated to WEBP, which maintains consistency with our other SKALE network updates. Ensure that the new assetskaleNebula.webpis available.packages/extension/src/providers/ethereum/networks/skale/calypso.ts (1)
13-13: Update Icon Format to WEBP
The icon property has been updated from a PNG filename to a WEBP filename. This change is consistent with the broader effort across the project, and as long as the file exists at the specified path, it should function correctly.packages/extension/src/providers/ethereum/networks/coti-devnet.ts (1)
1-1: Updated Icon Import for COTI Devnet
The icon import has been revised from the PNG (coti.png) to the WEBP format (coti.webp), which aligns with the overall asset format standardization across the network configurations.packages/extension/src/providers/ethereum/networks/karura.ts (1)
1-1: Icon Format Change for Karura EVM
The icon import has been modified from an SVG file to a WEBP file. This update is straightforward and maintains consistency with similar changes in other network files.packages/extension/src/providers/ethereum/networks/pop-apex.ts (1)
1-1: Consistent Icon Format Update for Proof of Play Apex
The icon import now uses the WEBP format instead of PNG. This change is in line with the recent project-wide updates and should be verified to ensure the new asset file is correctly deployed.packages/extension/src/providers/ethereum/networks/degen.ts (1)
1-1: Standardize Icon Import to WEBP for Degen
The import for the degen icon has been updated from a PNG to a WEBP file. This change supports the project's asset format consistency. Ensure that the WEBP asset is available at the referenced location.packages/extension/src/providers/ethereum/networks/ftm.ts (1)
1-1: Update Icon Import to WEBP Format
The icon import has been updated from an SVG to a WEBP file. This change aligns perfectly with the project’s broader effort to standardize asset formats across network configurations.packages/extension/src/providers/bitcoin/networks/litecoin.ts (1)
1-1: Consistent Icon Format Update for Litecoin
The Litecoin network now imports its icon as a WEBP file rather than an SVG. This update is consistent with similar changes across the codebase and contributes to improved asset performance.packages/extension/src/providers/ethereum/networks/form-testnet.ts (1)
1-1: Transition Icon File from PNG to WEBP
The icon import in this file has been modified from a PNG format to a WEBP format. This change is in line with the initiative to standardize image formats and optimize asset management.packages/extension/src/providers/ethereum/networks/edg.ts (1)
1-1: Icon Format Update to WEBP
The file now imports the Edgeware icon as a WEBP instead of a SVG. This update is consistent with the ongoing improvements introduced in this release.packages/extension/src/providers/ethereum/networks/skale/blockBrawlers.ts (1)
15-15: Updated SKALE BlockBrawlers Icon to WEBP
The icon for the BlockBrawlers network has been updated to use a WEBP file (from the previous PNG format). This is a clean change that supports overall consistency and potentially improved loading performance.packages/extension/src/providers/ethereum/networks/skale/titan.ts (1)
9-9: Updated icon format to WebP for improved performance.This change is part of a broader effort to convert icons from PNG to WebP format across the application. WebP typically offers better compression than PNG while maintaining quality, which should result in faster load times.
packages/extension/src/providers/bitcoin/networks/bitcoin-testnet.ts (1)
1-1: Updated icon format from SVG to WebP for improved performance.This change standardizes the icon format across the application by moving from SVG to WebP. WebP generally provides better compression for photographic content. Make sure the WebP version maintains sufficient quality, especially at higher zoom levels.
packages/extension/src/providers/ethereum/networks/eth.ts (1)
1-1: Updated Ethereum icon format from SVG to WebP for improved performance.This change converts the Ethereum icon from SVG to WebP format, consistent with similar changes across other network files. WebP provides better compression, but ensure the quality of the Ethereum logo is maintained, as it's a key visual element for users.
packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-network.vue (1)
44-44: Added object-fit property to prevent image distortion.The addition of
object-fit: containensures that network icons maintain their aspect ratio while fitting within the specified dimensions. This is an important enhancement, especially with the icon format transition from SVG/PNG to WebP, to ensure consistent and professional UI presentation.packages/extension/src/providers/ethereum/networks/cagaAnkara.ts (1)
1-1: Icon format update looks good.The change from SVG to WEBP format for the network icon is a good performance optimization. WEBP typically offers better compression while maintaining quality, which is beneficial for a browser extension where resource optimization is important.
packages/extension/src/providers/ethereum/networks/bsc.ts (1)
1-1: Icon format conversion approved.This change follows the consistent pattern of converting network icons from SVG to WEBP format throughout the codebase, which should help with performance and load times.
packages/extension/src/libs/menu-state/types.ts (1)
1-7: Well-structured type definitions for menu state.The new type definitions for menu state management are clear and concise. Using an enum for storage keys is a good practice for maintaining consistent key names across the application, and the interface properly defines the shape of the menu state with the
isExpandedboolean property.packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts (1)
73-73: Network expansion for Coti approved.The addition of the Coti network endpoint to the NetworkEndpoints mapping aligns with the PR objective of expanding blockchain network support. The endpoint URL follows the same pattern as other explorer endpoints in the configuration.
packages/extension/src/providers/ethereum/networks/op.ts (1)
1-1: Icon format standardization to WebPThe change from SVG to WebP format for the icon is consistent with the PR's approach to standardize icon formats across network configurations. While WebP generally offers better compression, be aware that SVG provides better scaling for different screen densities.
packages/extension/src/providers/ethereum/networks/matic.ts (1)
1-1: Icon format standardization to WebPThe change from SVG to WebP format for the icon aligns with the PR's broader effort to standardize icon formats across the extension's network configurations.
packages/extension/src/providers/common/ui/send-transaction/send-input-amount.vue (1)
16-16: Improved currency display with modern filtersThe change updates the fiat equivalent display from using a Vue filter pipe syntax to using the more modern
$filtersobject approach. This also correctly passes the entirefiatEquivalentcomputed property to theparseCurrencyfilter without accessing a non-existentvalueproperty.The computed property on line 62 returns a string value:
const fiatEquivalent = computed(() => { return new BigNumber(props.fiatValue).times(props.amount).toString(); });So this change makes the template more consistent with the actual data structure.
packages/extension/src/providers/ethereum/networks/skale/europa.ts (1)
13-13: WebP icon format standardizationThe change from SVG to WebP format for the SKALE Europa network icon is consistent with the format standardization effort across the extension's network configurations.
packages/extension/src/providers/ethereum/networks/bera.ts (4)
1-7: LGTM: Good use of WebP format for the iconThe imports look appropriate for setting up a new EVM network. Using WebP format for the icon is a good choice for better performance compared to older formats like PNG or SVG.
8-25: Well-structured network configuration with all required propertiesThe network configuration includes all necessary properties for an EVM network following the
EvmNetworkOptionsinterface requirements. The chain ID, RPC endpoint, and explorer URLs are properly defined.
27-29: LGTM: Network instance correctly instantiated and exportedThe EVM network is properly instantiated with the configuration options and exported as the default export.
24-24:Details
✅ Verification successful
Consider adding a proper activity handler in the future
The current implementation uses an empty placeholder for the activity handler. While this is acceptable for the initial integration, you might want to implement a proper activity handler for Berachain in the future.
🏁 Script executed:
#!/bin/bash # Check if there are any existing activity handlers in the codebase that could be reused rg -A 1 "activityHandler" --glob "*.ts" | grep -v "Promise.resolve(\[\])"Length of output: 21562
Activity Handler Implementation for Berachain
The implementation in
packages/extension/src/providers/ethereum/networks/bera.tscurrently uses a temporary placeholder:activityHandler: wrapActivityHandler(() => Promise.resolve([])),This is acceptable for the initial integration; however, as demonstrated by other networks in the codebase that use concrete handlers (e.g.,
wrapActivityHandler(EtherscanActivity)in several Ethereum files), it would be beneficial to implement a proper activity handler for Berachain in the future.• File:
packages/extension/src/providers/ethereum/networks/bera.ts(line 24)
• Current Implementation: Uses a placeholder returning an empty array
• Recommendation: Consider developing or reusing an existing activity handler pattern from similar network providers to ensure consistent behavior across providers as the project evolves.packages/extension/src/providers/common/libs/new-features.ts (1)
3-12: Network feature list properly updated for v2.5.0 releaseThe
newNetworksarray has been updated to reflect the newly added networks in this release. This ensures that users will be properly notified about these new supported chains.packages/extension/src/providers/ethereum/networks/gravity.ts (3)
1-6: LGTM: Imports are appropriate for network configurationThe necessary imports for setting up the Gravity network are properly included.
7-23: Well-structured network configuration with consistent formattingThe network configuration follows the established pattern and includes all required properties for an EVM network. The chain ID, explorer URLs, and currency details are properly defined.
25-27: LGTM: Network instance correctly instantiated and exportedThe EVM network is properly instantiated with the defined options and exported as the default export.
README.md (1)
103-118: README.md updated with all new networks added in this releaseThe README has been appropriately updated to include all the new networks (Taraxa, Story, Abstract, Berachain, Ink Onchain, Unichain, and Gravity) in the "Currently Supported Chains" section, keeping users informed about the extension's capabilities.
🧰 Tools
🪛 LanguageTool
[duplication] ~110-~110: Possible typo: you repeated a word.
Context: ...Network - Viction - Westend - ZChains - zkSync - zkSync Goerli - 5ireChain - Story - Abstract -...(ENGLISH_WORD_REPEAT_RULE)
packages/extension/src/providers/ethereum/networks/inkonchain.ts (1)
5-22:Details
✅ Verification successful
Ensure EtherscanActivity handler is compatible with Ink Onchain explorer
The configuration is using the
EtherscanActivityhandler, but the block explorer URL isexplorer.inkonchain.com. Verify if the Etherscan activity handler is compatible with the Ink Onchain explorer API structure.
🌐 Web query:
Does Ink Onchain explorer support Etherscan-compatible API endpoints?💡 Result:
The Ink Onchain explorer does support Etherscan-compatible API endpoints, particularly for contract verification and interaction. This compatibility allows developers to use familiar Etherscan-like commands and endpoints when working with Ink's blockchain networks.
Key points supporting this compatibility include:
1. Contract Verification via Foundry
Ink's documentation demonstrates using Foundry'sforge verify-contractcommand with an--etherscan-api-keyparameter[5]. This implies compatibility with Etherscan's verification workflow:forge verify-contract <ADDRESS> src/InkContract.sol:InkContract \ --chain-id 763373 \ --etherscan-api-key $BLOCKSCOUT_API_KEY2. Routescan's Etherscan-Compatible Endpoints
The Ink ecosystem utilizes Routescan's multichain explorer API, which explicitly provides Etherscan-style endpoints for[8]:
- Contract ABI retrieval (
module=contract&action=getabi)- Source code verification (
module=contract&action=verifysourcecode)- Verification status checks (
module=contract&action=checkverifystatus)3. Blockscout Integration
Ink's testnet explorer (explorer-sepolia.inkonchain.com) is built on Blockscout[7], a blockchain explorer that natively supports Etherscan-compatible APIs. This enables:
- Similar parameter structures for API requests
- Consistent response formats
- Familiar authentication methods using API keys
4. Cross-Network API Consistency
Like Etherscan, Ink maintains consistent API endpoints across its networks (Mainnet and Sepolia Testnet)[6], allowing developers to reuse codebase configurations when switching between environments.For developers, this compatibility reduces integration effort when:
- Verifying smart contracts
- Querying transaction data
- Fetching ABI information
- Monitoring contract interactions
The implementation follows RESTful principles and supports standard Etherscan modules including
contract,account, andtransactionendpoints[8][9].Citations:
- 1: https://www.oklink.com/docs/en/
- 2: https://chain.link/tutorials/how-to-verify-a-smart-contract-on-etherscan
- 3: https://docs.etherscan.io
- 4: https://www.quicknode.com/chains/ink
- 5: https://docs.inkonchain.com/build/tutorials/deploying-a-smart-contract/foundry
- 6: https://docs.etherscan.io/getting-started/endpoint-urls
- 7: https://goldrush.dev/chains/ink-mainnet/
- 8: https://routescan.io/documentation/etherscan-compatibility/contracts
- 9: https://info.etherscan.com/apis/
- 10: https://github.com/blockcoders/ink-substrate-explorer-api
Compatibility Check: EtherscanActivity Handler Verified
The Ink Onchain explorer supports Etherscan-compatible API endpoints, so using the
EtherscanActivityhandler in the Ink network configuration is appropriate. No changes are necessary.packages/extension/src/providers/common/ui/send-transaction/nft-select-list/components/nft-select-list-search.vue (2)
4-9: Improved two-way data binding with v-modelThe input element now leverages Vue's two-way data binding with
v-model, which is a best practice for form elements. This allows parent components to both read and update the search input value reactively.
15-16: Good use of modern Vue 3.4+ defineModel APIUsing
defineModel<string>()is an excellent approach for creating a reusable component with two-way binding support. This modern API simplifies the code by eliminating the need for manual prop/event handling.packages/extension/src/providers/ethereum/networks/rsk.ts (2)
1-1: Icon format changed from SVG to WEBPThe icon import has been updated from SVG to WEBP format. This change aligns with the general effort to convert icons across the extension, which can improve loading performance. WEBP typically offers better compression than PNG but note that SVG (the previous format) provides better scaling for different screen densities.
23-23:Details
❓ Verification inconclusive
Network endpoint updated to a new provider
The WebSocket node URL has been changed from 'wss://public-node.rsk.co/websocket' to 'wss://nodes.mewapi.io/ws/rsk'. Ensure that this new endpoint provides reliable service, has appropriate uptime guarantees, and maintains compatibility with all existing functionality.
🏁 Script executed:
#!/bin/bash # Check if the new endpoint is referenced in other files or documentation echo "Checking for references to the old and new RSK endpoints..." rg "public-node.rsk.co/websocket" --type ts rg "nodes.mewapi.io/ws/rsk" --type ts # Check if other networks also use mewapi.io as a provider echo "Checking if other networks use the same provider domain..." rg "mewapi.io" --type tsLength of output: 9942
RSK Endpoint Update – Manual Reliability Check Recommended
The RSK network WebSocket endpoint has been updated in
packages/extension/src/providers/ethereum/networks/rsk.tsto use:node: 'wss://nodes.mewapi.io/ws/rsk',Our repository search confirms that the old endpoint (
public-node.rsk.co/websocket) is no longer referenced and that the new endpoint aligns with the patterns used for other networks. Please ensure that this provider offers the necessary reliability, uptime guarantees, and full compatibility with existing functionality—verify by running any additional monitoring or integration tests on your end.packages/extension/src/providers/ethereum/networks/story.ts (4)
1-6: Clean implementation of new network fileThe imports are correctly structured, bringing in the necessary types and utilities for creating a new EVM network.
7-22: Story network configuration looks goodThe network configuration follows the established pattern for EVM networks with all required fields properly defined:
- Network identifiers and URLs are well-specified
- Chain ID '0x5EF' (1519 in decimal) is correctly formatted as a hex string
- The network is appropriately marked as a mainnet (not a test network)
24-26: Network instance created and exported correctlyThe EVM network is properly instantiated with the configuration and exported as the default, making it available for import by other modules.
21-21:Details
❓ Verification inconclusive
Activity tracking not fully implemented
The activity handler returns an empty array for all requests, which suggests that transaction history and activity tracking for the Story network isn't yet fully implemented. This might limit the user experience when working with this network.
Are there plans to implement a proper activity handler for the Story network in a future update? Other networks typically use a more comprehensive activity handler implementation.
🏁 Script executed:
#!/bin/bash # Check how other networks implement activity handlers echo "Checking activity handler implementations in other network files..." rg "activityHandler:" --type ts packages/extension/src/providers/ethereum/networks/ -C 2Length of output: 31886
Activity Tracking for Story Network is Incomplete
In
packages/extension/src/providers/ethereum/networks/story.ts(line 21), the activity handler is currently implemented as a stub:activityHandler: wrapActivityHandler(() => Promise.resolve([])),This approach is consistent with what we see in a few other networks (e.g., Palm, ZCD, Taraxa, Unichain) where a dummy handler is used, whereas networks like form-testnet and movr opt for a more detailed implementation (e.g., wrapping
EtherscanActivity). Could you please clarify if there are plans to implement a full activity tracking solution for the Story network in a future update? If this stub is intended as a temporary measure, adding a TODO or comment for future consideration might help maintain clarity.packages/extension/src/providers/common/ui/send-transaction/send-fee-select.vue (1)
9-10:Details
❓ Verification inconclusive
Improved currency formatting consistency
Changed from using separate formatting value and symbol to using the unified
parseCurrencyfilter. This likely provides a more consistent display of currency values across the application, especially for handling different locales and currency formatting rules.Can you verify that the
parseCurrencyfilter properly handles all the currency formatting scenarios that were previously managed by the combination offormatFiatValueand explicit symbol display?
🏁 Script executed:
#!/bin/bash # Find the implementation of parseCurrency filter echo "Looking for parseCurrency filter implementation..." rg "parseCurrency" --type ts packages/extensionLength of output: 411
Unified Currency Formatting Verification
The unified
parseCurrencyfilter is implemented inpackages/extension/src/ui/action/utils/filters.ts, replacing the previous approach that combinedformatFiatValuewith manual symbol insertion. Please ensure that:
- The filter consistently handles locale-specific currency formatting (including proper symbol display and numerical precision).
- All edge cases (e.g., rounding behavior, negative values, and very large numbers) are correctly managed as they were with the legacy approach.
packages/extension/src/providers/bitcoin/libs/ss-fee-handler.ts (1)
25-29: Significant fee buffer increases for Bitcoin transactionsThe buffer values for fee calculations have been substantially increased:
- FASTEST: from +5 to +20 (4x increase)
- FAST: from +3 to +12 (4x increase)
- REGULAR: from +2 to +10 (5x increase)
These changes ensure faster transaction confirmations but might result in higher fees than necessary.
Consider adding a comment explaining why these specific buffer values were chosen, and whether there's data or metrics supporting these particular increases.
packages/extension/src/providers/ethereum/networks/taraxa.ts (1)
1-24:Details
✅ Verification successful
New Taraxa network support added
The implementation correctly adds support for the Taraxa network with appropriate configuration including chain ID, RPC endpoint, and block explorer URLs.
The activity handler is currently a placeholder that returns an empty array. Ensure there's a plan to implement a proper activity handler for Taraxa in the future:
🏁 Script executed:
#!/bin/bash # Check if other networks use similar placeholder activity handlers rg -p "wrapActivityHandler\(\(\) => Promise\.resolve\(\[\]\)\)" --type ts packages/extension/src/providers/ethereum/networks/Length of output: 2373
Taraxa network support verified
- The Taraxa network configuration (chain ID, RPC endpoint, block explorer URLs, etc.) is correct and consistent with our EVM network setup.
- The activity handler is intentionally implemented as a placeholder (using
wrapActivityHandler(() => Promise.resolve([]))), matching the pattern used in other network files (e.g.,op-bnb.ts,story.ts, etc.).- Moving forward, ensure that there's a clear plan or ticket to replace the placeholder with a proper activity handler when activity tracking for Taraxa is required.
packages/extension/src/libs/settings-state/types.ts (2)
5-7: Added currency settings storage keyAdded a new storage key for currency settings that follows the established naming pattern.
34-36: Updated settings type with currency settingsThe SettingsType interface has been appropriately updated to include the new currency settings.
packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts (1)
68-76: Extended network support enhances ecosystem compatibilityThe addition of these new network types to
SupportedNetworkNamesappropriately expands the wallet's compatibility with more blockchain networks. This aligns well with the PR objectives of adding support for new networks mentioned in the README.md changes.packages/extension/src/libs/nft-handlers/simplehash.ts (2)
42-43: Support for Unichain and Berachain NFTs addedThe addition of Unichain and Berachain to the supported networks for NFT handling matches the new network types added in the tokenbalance-mew.ts file. This ensures consistent implementation across the codebase.
51-52: Query string formatting improvedThe query string construction has been simplified into a more concise format while maintaining the same functionality. This improves code readability.
packages/extension-bridge/package.json (1)
47-64: Dependencies updated to latest stable versionsThe updates to various development dependencies keep the extension-bridge package current with latest bug fixes and improvements. These changes follow proper semantic versioning and should enhance stability and security.
packages/extension/src/providers/ethereum/networks/immutable-zkevm.ts (3)
1-1: Optimized image format for better performanceConverting the icon from PNG to WebP format will improve load times and reduce bandwidth usage due to WebP's better compression ratio while maintaining quality. This is part of a larger effort to optimize assets across the codebase.
7-7: Added asset information handler importThe import of the assets information handler from the mew module enables improved asset tracking functionality for this network.
24-24: Enhanced network configuration with asset information handlerAdding the assetsInfoHandler to the network options ensures consistent asset information handling across networks. This implementation aligns with how the handler is used in other network configurations, maintaining consistency throughout the codebase.
packages/extension/src/providers/common/ui/verify-transaction/verify-transaction-fee.vue (1)
4-5: Improved currency formatting implementationThe change from using hardcoded
$symbol withformatFiatValueto using theparseCurrencyfilter centralizes formatting logic and improves support for multiple currencies. This change aligns with the broader updates to currency handling in the extension.packages/extension/src/providers/bitcoin/ui/send-transaction/index.vue (2)
59-60: Enhanced NFT selection visibility logic with reactive bindingThe change from
v-show="isOpenSelectNft"tov-if="!isSendToken"withv-model="isOpenSelectNft"improves component rendering logic by:
- Only mounting the NFT selection when not sending tokens
- Implementing two-way data binding with v-model for better reactivity
This approach properly implements Vue's reactivity system and aligns with the application's UI state management patterns.
83-83: Improved state management with v-model bindingReplacing the previous implementation with
v-model="isOpenSelectFee"simplifies the component interaction by using Vue's built-in two-way binding instead of manually handling state through props and events. This change improves code maintainability and aligns with Vue best practices.packages/extension/src/providers/ethereum/networks/base.ts (2)
1-1: Optimized icon format using WebPConverting from SVG to WebP for the Base network icon improves performance as WebP typically offers better compression than SVG while maintaining quality, which is crucial for browser extensions where resource efficiency matters.
7-7: Added assets information handler for the Base networkThe addition of
assetsInfoHandlerfrom MEW's implementation enhances the Base network configuration with improved asset information retrieval capabilities, providing users with more detailed and accurate asset data.Also applies to: 25-25
packages/extension/src/providers/ethereum/networks/skale/skale-base.ts (1)
18-18: Unified WebP format for all SKALE network iconsConverting from PNG to WebP format for SKALE network icons improves performance and consistency. WebP offers better compression with maintained quality, reducing extension bundle size and improving load times. This change is consistent with the project-wide migration to WebP image assets.
Also applies to: 153-153, 230-230
packages/extension/src/libs/settings-state/index.ts (3)
75-78: Implementation looks good!The
setCurrencySettingsmethod follows the same pattern as other setter methods in the class, persisting the currency settings to storage.
80-86: Clean implementation with proper defaults.The
getCurrencySettingsmethod correctly defines a default currency value of 'USD' and merges it with any existing settings from storage. This ensures backward compatibility and prevents null values.
93-93: Appropriate integration with getAllSettings.The new currency settings are correctly incorporated into the
getAllSettingsmethod, ensuring they're included in the complete settings object returned to callers.Also applies to: 99-99
packages/extension/src/providers/ethereum/networks/skale/README.md (2)
33-33: Updated default icon format from PNG to WEBP.This change is consistent with the broader effort to update icon formats across the codebase. WEBP typically offers better compression than PNG, which can improve load times.
49-49: Updated default token icon format to WEBP.This change ensures consistency with the chain icon format change above. Both now reference WEBP as the default format.
packages/extension/src/providers/ethereum/networks/index.ts (2)
66-73: New network nodes added.These imports bring in support for 8 new blockchain networks, expanding the wallet's compatibility.
149-157: New networks added to exports.All 8 new networks are properly added to the default export object, making them accessible to the rest of the application.
packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts (2)
11-12: Added token list support for new networks.Token list URLs have been added for all the new networks, ensuring users can view and interact with tokens on these chains. The URLs follow the established pattern of either using Coingecko's token API or a custom JSON file for networks not supported by Coingecko.
Also applies to: 21-22, 25-29, 35-52
8-52:Details
✅ Verification successful
Verify all Coingecko platform IDs exist.
It would be prudent to verify that all the Coingecko platform IDs referenced (particularly for new networks like Gravity, Abstract, Story, Ink, Berachain, Unichain) exist and are correctly mapped.
🏁 Script executed:
#!/bin/bash # Check if the CoingeckoPlatform enum includes all the platforms referenced in TokenList grep -r "CoingeckoPlatform\." --include="*.ts" packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts | sort | uniq > /tmp/used_platforms.txt grep -r "export enum CoingeckoPlatform" -A 100 --include="*.ts" packages/types/src | grep -o "[A-Za-z]\+ = " | sed 's/ = //' | sort > /tmp/defined_platforms.txt echo "=== Platforms used in token-lists.ts ===" cat /tmp/used_platforms.txt echo -e "\n=== Defined CoingeckoPlatform enum values ===" cat /tmp/defined_platforms.txt echo -e "\n=== Checking for missing platforms ===" grep -o "CoingeckoPlatform\.[A-Za-z]\+" /tmp/used_platforms.txt | sed 's/CoingeckoPlatform\.//' | sort > /tmp/used_platform_names.txt comm -23 /tmp/used_platform_names.txt /tmp/defined_platforms.txtLength of output: 5584
Coingecko Platform IDs Verification Complete
An updated verification using a Python-based diff confirms that all Coingecko platform identifiers referenced intoken-lists.ts(including networks like Gravity, Abstract, Story, Ink, Berachain, and Unichain) are defined in theCoingeckoPlatformenum. No missing mappings were found.packages/extension/src/libs/menu-state/index.ts (5)
1-10: Well-structured initialization of MenuState class.The class is properly set up with a private storage property initialized in the constructor with the appropriate namespace. This follows good encapsulation practices.
12-14: LGTM: Clean implementation of setState method.The setState method properly persists the state to browser storage using the defined storage key.
16-25: Good default state handling in getState method.The implementation correctly handles the case when no state exists in storage by returning a new state object with sensible defaults. The method is well-typed with proper Promise return type.
27-35: Well-implemented state accessor and modifier methods.Both getIsExpanded and setIsExpanded methods follow good practices:
- getIsExpanded uses nullish coalescing for a sensible default
- setIsExpanded preserves other state properties with the spread operator
- Both methods reuse the getState and setState methods to avoid code duplication
37-38: Clean default export.The class is properly exported as the default export for the module.
packages/extension/src/providers/common/ui/send-transaction/nft-select-list/index.vue (4)
1-22: Good improvement to dialog structure using app-dialog component.The previous implementation has been replaced with a more reusable app-dialog component with proper v-model binding. This follows better component composition practices.
27-42: Well-implemented v-model binding with defineModel.Using defineModel for the dialog is a modern Vue 3 approach that simplifies the component API and improves reusability.
62-63: Good addition of searchNFT ref for filtering.Adding a reactive reference for the search term is a good practice for implementing search functionality.
65-83: Improved NFT filtering logic with search capability.The code now:
- Ensures collectionName is always a string with the
col.name || ''fallback- Properly filters NFTs based on name or collection name when searchNFT has a value
- Uses case-insensitive matching for better user experience
This is a good improvement to the search functionality.
packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts (3)
124-127: Good addition of Base network support.The Base network is properly added to the supportedNetworks object with appropriate platform configuration.
184-187: Good addition of ImmutableZkevm network support.The ImmutableZkevm network is properly added to the supportedNetworks object.
196-219: Comprehensive expansion of network support.Several new networks have been added to the supportedNetworks object:
- Gravity
- Abstract
- Story
- Ink
- Bera
- Unichain
Each with appropriate tbName and cgPlatform configuration.
packages/extension/package.json (3)
2-3: Version bump to 2.5.0.Properly incremented version number for this release.
25-57: Updated dependencies to improve security and features.Updates to several critical blockchain library dependencies, including:
- @amplitude/analytics-browser
- @kadena/client and @kadena/pactjs-cli
- @metaplex-foundation packages
- @PolkaDot ecosystem packages
- @Solana packages
These updates likely include important bug fixes and feature enhancements.
91-141: Updated development dependencies to latest versions.Development tooling has been updated to the latest versions, which is good practice for maintaining a modern development environment and resolving potential security issues in the toolchain.
| const absOptions: EvmNetworkOptions = { | ||
| name: NetworkNames.Abstract, | ||
| name_long: 'Abstract', | ||
| homePage: 'https://www.abs.xyz/', | ||
| blockExplorerTX: 'https://abscan.org/tx/[[txHash]]', | ||
| blockExplorerAddr: 'https://abscan.org/address/[[address]]', | ||
| chainID: '0xAB5', | ||
| isTestNetwork: false, | ||
| currencyName: 'ETH', | ||
| currencyNameLong: 'ETH', | ||
| node: 'https://api.mainnet.abs.xyz', | ||
| icon, | ||
| coingeckoID: 'ethereum', | ||
| assetsInfoHandler, | ||
| activityHandler: wrapActivityHandler(() => Promise.resolve([])), | ||
| }; |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Verify Abstract network configuration details
The configuration appears comprehensive, but please verify:
- Whether
ETHis the correct native currency name for Abstract network - If "ethereum" is the right coingeckoID for this network
- If the empty activity handler is intentional or should be replaced with a proper implementation
🏁 Script executed:
#!/bin/bash
# Check if Abstract has its own coingecko ID
curl -s "https://api.coingecko.com/api/v3/coins/list" | jq '.[] | select(.name | test("(?i)abstract"))'
# Verify chain ID in public chain registries
curl -s "https://chainid.network/chains.json" | jq '.[] | select(.chainId == 2741)'Length of output: 1342
Action Required: Update Abstract Network Configuration
- Native Currency Name: The public chain registry indicates the network’s native currency has the symbol "ETH" but a full name of "Ether". Please confirm if using "ETH" for both
currencyNameandcurrencyNameLongaligns with your design or if the full name "Ether" is preferred. - CoinGecko ID: The current configuration sets the
coingeckoIDto "ethereum", but the CoinGecko API query for Abstract-related tokens returned IDs like "abstract-liquid-staked-eth". Please verify and update this value to the correct CoinGecko identifier for the Abstract network. - Activity Handler: The current stub (
wrapActivityHandler(() => Promise.resolve([]))) returns an empty array. Confirm whether this is an intentional temporary placeholder or if it should be replaced with a proper implementation.
Summary by CodeRabbit
New Features
Chores
Documentation