Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FIX] Asset Balances Not Showing for Rootstock #613

Merged

Conversation

ahsan-javaiid
Copy link
Contributor

@ahsan-javaiid ahsan-javaiid commented Feb 10, 2025

Description

This PR fixes the issue of assets balances not showing when Rootstock network selected.

Bug Screen

  • Home screen balances not showing
  • Send screen not working because balances not loading
bug

Why

Following API's are not returning balance for Rootstock network due to this reason Rootstock assets balances are not showing on home screen and send screen.

const API_ENPOINT = 'https://tokenbalance.mewapi.io/';
const API_ENPOINT2 = 'https://partners.mewapi.io/balances/';

Suggested solutions

Enabling rootstock in above api's or enabling the blockscout url for Rootstock could be solution. Feel free to suggest or apply if there is any other solution to fix this issue.

After enabling the blockscout url

Screenshot 2025-02-10 at 3 48 10 PM

Summary by CodeRabbit

  • New Features
    • Updated token balance retrieval for users on Rootstock, SyscoinNEVM, and Rollux networks. The system now employs an alternative data source to fetch balance information, ensuring improved accuracy and reliability.

Copy link

coderabbitai bot commented Feb 10, 2025

Walkthrough

The changes add a new property bsEndpoint set as true for three network entries: NetworkNames.Rootstock, NetworkNames.SyscoinNEVM, and NetworkNames.Rollux in the supported networks configuration. Additionally, the getTokens function is modified to check for the bsEndpoint property. When set, it retrieves token balances using the getBlockscoutBalances function instead of the default data retrieval method.

Changes

File Path Change Summary
packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts Added bsEndpoint: true for NetworkNames.Rootstock, NetworkNames.SyscoinNEVM, and NetworkNames.Rollux. Updated getTokens to call getBlockscoutBalances when bsEndpoint is present.

Sequence Diagram(s)

sequenceDiagram
    participant Caller as Caller
    participant Tokens as getTokens()
    participant BS as getBlockscoutBalances()

    Caller->>Tokens: Invoke getTokens(network)
    Tokens->>Tokens: Check supportedNetworks[network].bsEndpoint
    alt bsEndpoint true
        Tokens->>BS: Call getBlockscoutBalances()
        BS-->>Tokens: Return Blockscout balances
    else bsEndpoint false
        Tokens->>Tokens: Use standard URL for token balances
    end
    Tokens-->>Caller: Return token balances
Loading

📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1594101 and ab3b393.

📒 Files selected for processing (1)
  • packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts (1 hunks)
🔇 Additional comments (3)
packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts (3)

72-76: LGTM! Network configurations updated to use Blockscout endpoint.

The addition of bsEndpoint: true for Rootstock, SyscoinNEVM, and Rollux networks is a good solution to enable balance retrieval through Blockscout.

Also applies to: 125-128, 129-132


191-228: Verify test coverage for Blockscout integration.

The changes look good, but we should ensure that the test suite is updated to cover the Blockscout integration for the affected networks.

Let's check for relevant test files:

❌ Verification inconclusive

🏁 Script executed:

#!/bin/bash
# Description: Look for test files that should cover the Blockscout integration

# Search for test files related to asset handlers
fd -e test.ts -e spec.ts . | grep -i "asset.*handler"

# Search for Blockscout-related tests
rg -l "blockscout" --type ts --glob "*test*"

Length of output: 100


Verify test coverage for Blockscout integration.

Automated searches for tests referencing “blockscout” or “getBlockscoutBalances” did not yield any results. Please manually verify if the Blockscout integration in this code path is covered by existing tests or consider adding tests to explicitly cover it.


200-202: LGTM! Token retrieval logic updated to support Blockscout endpoint.

The modification to check for bsEndpoint and use getBlockscoutBalances is a clean solution that maintains compatibility with existing networks while adding support for Blockscout-enabled networks.

Let's verify that the getBlockscoutBalances function is properly implemented:

✅ Verification successful

🏁 Script executed:

#!/bin/bash
# Description: Verify the implementation of getBlockscoutBalances function

# Search for the implementation
ast-grep --pattern 'function getBlockscoutBalances($_, $_) {
  $$$
}'

Length of output: 71


I'll try a broader search for the getBlockscoutBalances implementation across the repository since the AST pattern didn't return any results.

Below is a shell script that uses rg to search for the term "getBlockscoutBalances" throughout the codebase:

Please run this script so that we can inspect the output and verify if the function is defined (or imported) elsewhere.


🏁 Script executed:

#!/bin/bash
# Search for any occurrence of getBlockscoutBalances in the repository.
rg "getBlockscoutBalances" -n .

Length of output: 658


Below is a script to review the implementation of getBlockscoutBalances in its source file. We can inspect relevant lines from the file to ensure the function is properly implemented:

Based on the earlier output, we see that:

  • getBlockscoutBalances is defined in blockscout.ts (starting at line 26).
  • It is properly exported (default export on line 90).
  • The original file in assetinfo-mew.ts correctly imports and uses getBlockscoutBalances.

If the content from the above script confirms a complete and well-formed function implementation (including proper logic for balance retrieval using Blockscout endpoints), then the review comment is valid.

Token Blockscout retrieval logic verified:

  • getBlockscoutBalances is defined and exported in packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts.
  • It is correctly imported and invoked in packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts.

🏁 Script executed:

#!/bin/bash
# Display context around the definition of getBlockscoutBalances from its file
sed -n '20,100p' packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts

Length of output: 2347


Blockscout Endpoint Logic Verified
The getBlockscoutBalances function in packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts is correctly implemented. It builds the Blockscout API endpoint URLs, fetches both native and ERC-20 token balances, processes the responses (including error handling), and converts the balances as expected. Since it is properly imported and used in assetinfo-mew.ts when the bsEndpoint flag is set, the review comment is validated.

✨ Finishing Touches
  • 📝 Generate Docstrings (Beta)

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@ahsan-javaiid ahsan-javaiid changed the base branch from main to develop February 10, 2025 11:08
@kvhnuke kvhnuke merged commit 7bee132 into enkryptcom:develop Feb 10, 2025
2 of 3 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Feb 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants