Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.

Migrate to gateway - #219

Merged
furenster merged 19 commits into
mainfrom
integrate_gateway
Sep 26, 2025
Merged

furenster merged 19 commits into
mainfrom
integrate_gateway

Conversation

@furenster

Copy link
Copy Markdown
Contributor

No description provided.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @furenster, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a major architectural overhaul by migrating the application's blockchain interaction logic to a centralized GemGateway. This strategic refactoring replaces a multitude of disparate blockchain client implementations with a unified service layer, enhancing modularity and maintainability. The changes streamline how the application communicates with various blockchain networks, preparing the groundwork for future scalability and easier integration of new blockchain technologies.

Highlights

  • Architectural Migration to GemGateway: The core change involves a significant refactoring of the application's blockchain interaction layer. Direct dependencies on numerous individual blockchain clients (e.g., for broadcasting, node status, and transaction preloading) have been replaced by a unified GemGateway architecture. This centralizes network communication and streamlines the codebase.
  • Introduction of New Service Proxies: New service proxies such as BroadcastService, NodeStatusService, and SignerPreloaderProxy have been introduced within the blockchain.services package. These services now abstract the underlying blockchain-specific implementations, interacting directly with the GemGateway.
  • Centralized Gateway Configuration: A new GatewayModule.kt file has been added to define how the GemGateway instance is created and provided as a singleton. This centralizes the configuration and management of the primary blockchain interaction component.
  • Refactored Chain Data Structures: Blockchain-specific data structures previously nested within SignerPreloader implementations have been extracted into dedicated *ChainData.kt files (e.g., AlgorandChainData, BitcoinChainData). This improves code organization and clarity by separating data models from their usage.
  • Expanded Chain Compatibility: Support for the HyperCore chain has been integrated, including a new HyperCoreSignClient and updates to the WCChainTypeProxy, indicating an expansion of the wallet's blockchain compatibility.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and commendable refactoring by migrating from numerous individual blockchain clients to a unified GemGateway. This greatly simplifies the dependency injection setup and the overall architecture. The changes are extensive, touching many parts of the codebase, and include a nice bug fix in ConfirmViewModel for comparing byte arrays.

However, this large refactoring has introduced some issues with the test suite that need attention:

  1. Broken Tests: The removal of several GetTokenClient imports in TestValidateTokenAddress.kt breaks the existing tests in that file, causing compilation errors.
  2. Removed Test Suites: A large number of test files have been removed, including but not limited to:
    • TestAptosBalance.kt
    • TestBitcoinBalance.kt
    • TestCosmosBalances.kt
    • TestEvmBalance.kt
    • TestTronBalance.kt
    • TestXrpBalanceClient.kt
    • And many signer preloader and fee calculator tests.

While removing tests for refactored code is sometimes necessary, it's crucial to ensure that the functionality is still covered by new tests against the GemGateway. Please address the broken test and clarify the testing strategy for the functionality covered by the removed tests to ensure we don't have any regressions.

@furenster
furenster merged commit 4b9d4a8 into main Sep 26, 2025
1 check failed
@furenster
furenster deleted the integrate_gateway branch September 26, 2025 16:35
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant