Skip to content

[Bug]: historical on-chain receive sheet stays up after mnemonic restore #1342

Description

@piotr-iohk

What happened?

After a mnemonic restore, a historical on-chain receive opens the Received Bitcoin sheet and the sheet stays up. Home is behind it, so TotalBalance-primary never appears.

Nightly E2E Migration on master 44c82ed (includes #1299): https://github.com/synonymdev/bitkit-android/actions/runs/36084528765

@migration_1 failed for React Native v1.1.3, v1.1.4, and v1.1.6. migration_2, migration_3, and migration_4 passed. The final attempt for v1.1.4 and v1.1.6 shows Received Bitcoin for 500,000 sats. That is the on-chain deposit mined in the React Native app a few minutes before native restore. Home behind the sheet already shows 346,380. The test then fails with:

Error: element ("android=new UiSelector().resourceId("TotalBalance-primary")") still not displayed after 90000ms
    at async restoreWallet (test/helpers/actions.ts:879:3)
    at async migration.e2e.ts:185:5

v1.1.3's last screenshot is already on Savings with the same 500,000 receive in the list, so that shard did not die on the sheet.

Expected behavior

A receive that already existed before the restore stays in activity and does not open the Received Bitcoin sheet. After restore, home shows TotalBalance-primary.

A receive that confirms after the restore should still open the sheet.

Steps to Reproduce

  1. On regtest, create a wallet and receive an on-chain payment. Mine it so it is confirmed within the last hour.
  2. Uninstall the app and install a build that includes fix: notify confirmed-only onchain receives #1299.
  3. Restore the same mnemonic.
  4. Dismiss Get Started and the background-payments intro.
  5. The Received Bitcoin sheet for that historical payment stays up. TotalBalance-primary is not reachable.

Logs / Screenshots / Recordings

Received Bitcoin sheet for 500000 after mnemonic restore, v1.1.4

Received Bitcoin sheet for 500000 after mnemonic restore, v1.1.6

Bitkit Version

master 44c82ed, E2E build. Includes #1299.

Device / OS

CI emulator, Android 13. BACKEND=regtest.

Reproducibility

Often (>50%)

The sheet is the final failure on v1.1.4 and v1.1.6. v1.1.3 reached Savings instead. Earlier attempts on v1.1.4 failed differently (launcher, then Savings missing the spending amount).

Additional context

  • Mnemonic restore, not an in-place update. Any seed restore can hit this, including a native 2.5 wallet restored onto master, when a receive was confirmed within the last hour. Older confirms stay quiet because of the one-hour check. An in-place 2.5 update does not replay history as a new receive.
  • restoreWallet sets pendingRestoreActivitySeenSince so replayed history stays silent. The first on-chain sync marks activities started before that time as seen and then clears the hold. This deposit was inside the one-hour window, and the sheet still showed, so the hold did not suppress it.
  • The install-on-top migration path skips the sheet while migration loading is up. That matches migration_2 / migration_3 / migration_4 passing on the same run.
  • iOS fix: text input was forcing the cursor to the end on every recomposition #588 has the same one-hour window and the same hold. Not reproduced there. fix: text input was forcing the cursor to the end on every recomposition #588 is still open and was not in this nightly.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions