Skip to content

Add eCash.com (ECX) wallet metadata and guard missing currency entries - #6162

Open
j0ntz wants to merge 3 commits into
developfrom
jon/1217562074592399
Open

Add eCash.com (ECX) wallet metadata and guard missing currency entries#6162
j0ntz wants to merge 3 commits into
developfrom
jon/1217562074592399

Conversation

@j0ntz

@j0ntz j0ntz commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

https://github.com/EdgeApp/edge-currency-plugins/pull/457 (for the `ecashcom` plugin itself; this PR is independently mergeable)

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

Description

GUI side of the eCash.com (ECX) fork work. ECX is Layer Two Labs' hard fork of Bitcoin, shipped as the ecashcom plugin in EdgeApp/edge-currency-plugins#457; the chain forks from Bitcoin on 2026-08-22 and the fork's own background is written up in that PR.

Asana: https://app.asana.com/0/1215088146871429/1217562074592399

Three changes:

  1. Two guards that are not ECX specific. BuyCrypto destructured SPECIAL_CURRENCY_INFO[pluginId] with no fallback, so any wallet whose pluginId has no entry in that table threw Cannot read property 'highPrecisionSyncRatioDisplay' of undefined the moment its transaction list rendered, and the error boundary swapped the app for the crash scene. Every new currency plugin walks into this until someone remembers the table. Now it falls back to an empty record. Separately, long-pressing a transaction to share it built its link with sprintf on the explorer template without checking for the empty string that means "this chain has no explorer", so it shared an empty link; every other explorer consumer (ExplorerCard, RequestScene, AdvancedDetailsCard) already guards that case.

  2. An ecashcom entry in SPECIAL_CURRENCY_INFO, matching the other UTXO coins (segwit, UTXO spend targets, key import), plus its wallet-name string.

  3. ecashcom: false in the core plugin list, so the asset stays off until the chain actually forks and a Blockbook endpoint for it exists. Enabling it is a one-word flip at launch. There is no public ECX Blockbook server yet, so an enabled wallet could be created but never sync.

A testID on the wallet-list create row comes along for the ride: UI tests had no stable selector for a specific asset's create row, since the row renders its currency code, name and label as one text node.

Testing

  • tsc clean, jest green (98 suites, 704 tests), eslint clean on the touched files.
  • Driven on the iOS simulator with the ecashcom plugin locally enabled and the dep linked via updot: ECX shows up as a creatable asset, the wallet creates, and opening it renders the wallet scene instead of the crash screen. Before the fix in (1), the same tap produced the "Oops!" crash scene every time.

Note

Low Risk
Mostly constants, guards, and disabled plugin wiring; the BuyCrypto fallback is a small defensive fix with broad benefit for new currencies.

Overview
Adds eCash.com (ECX) wallet metadata ahead of the 2026-08-22 Bitcoin fork: SPECIAL_CURRENCY_INFO, allowed-plugin lists, Sign Message menu coverage, default wallet name strings, and ecashcom: false in core plugins so the asset stays hidden until a Blockbook endpoint exists.

Fixes a crash when opening any wallet whose pluginId is missing from SPECIAL_CURRENCY_INFO: BuyCrypto now uses SPECIAL_CURRENCY_INFO[pluginId] ?? {} instead of destructuring undefined.

Transaction share on long-press no longer opens a share sheet with an empty URL when transactionExplorer is an empty string.

Adds a testID on wallet-list create rows (walletListCreateRow_${pluginId}) for UI tests.

Reviewed by Cursor Bugbot for commit 0e63fe2. Bugbot is set up for automated code reviews on this repo. Configure here.

j0ntz added 2 commits August 17, 2026 17:11
Convert the component to the React.FC form the lint rule expects.
UI tests need a stable selector for the create-wallet row of a specific
asset, which the row's text does not provide.
@j0ntz

j0ntz commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence

ecx create row

ecx create row

ecx wallet created

ecx wallet created

Captured by the agent's in-app test run (build-and-test).

@j0ntz
j0ntz marked this pull request as ready for review August 18, 2026 00:30
@j0ntz
j0ntz force-pushed the jon/1217562074592399 branch from 93fd345 to 61a927c Compare August 18, 2026 00:30
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread src/constants/WalletAndCurrencyConstants.ts
@j0ntz
j0ntz force-pushed the jon/1217562074592399 branch from 61a927c to e86b362 Compare August 18, 2026 00:38

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit e86b362. Configure here.

Comment thread src/constants/WalletAndCurrencyConstants.ts
@j0ntz
j0ntz force-pushed the jon/1217562074592399 branch from e86b362 to 50792ab Compare August 18, 2026 00:45
ECX is the ecash.com hard fork of Bitcoin, shipped as the `ecashcom`
plugin in edge-currency-plugins. It stays off in the core plugin list
until the chain forks on 2026-08-22 and a Blockbook endpoint exists.

Opening a wallet whose pluginId had no SPECIAL_CURRENCY_INFO entry threw
in BuyCrypto, which the error boundary turned into the crash scene, so
that lookup now falls back to an empty record.
@j0ntz
j0ntz force-pushed the jon/1217562074592399 branch from 50792ab to 0e63fe2 Compare August 18, 2026 08:02
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.

1 participant