fix(wallet): merge raw transaction pending updates#6447
Open
SeniorZhai wants to merge 7 commits into
Open
Conversation
- Add RawTransactionState enum: signed (已签名待广播) / spent (已广播终态) - Add RawTransactionStateConverter for Room - Update RawTransaction.kt to use new enum - Update RawTransactionDao queries (unspent → signed) - Update BottomSheetViewModel: write signed, mark spent after broadcast - Update RestoreTransactionJob: mark spent after restore - Database migration: signed→spent first, then unspent→signed - Register converter in MixinDatabase - Bump database version
…ction-state # Conflicts: # app/schemas/one.mixin.android.db.MixinDatabase/70.json # app/src/main/java/one/mixin/android/db/MixinDatabase.kt # app/src/main/java/one/mixin/android/db/MixinDatabaseMigrations.kt
Contributor
There was a problem hiding this comment.
Pull request overview
This PR merges prior work to improve “raw transaction pending” handling in the wallet by introducing a dedicated RawTransactionState (signed/spent), migrating existing DB values, and updating the transaction detail UI to reflect pending broadcast status.
Changes:
- Introduce
RawTransactionState+ Room converter, updateRawTransactionmodel/DAO queries, and add DB migration (70→71) + schema update. - Fetch associated raw transactions by
traceIdwhen rendering transaction details and show a pending indicator (spinner) forsignedraw transactions. - Rename “unspent” pending-raw-tx checks to “signed” across view models / jobs, and add unit coverage for pending-hash decision logic.
Reviewed changes
Copilot reviewed 19 out of 21 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| app/src/test/java/one/mixin/android/vo/SnapshotItemTest.kt | Adds unit tests for pending-hash display decisions. |
| app/src/main/res/layout/fragment_transaction.xml | Adds a pending spinner next to the hash field in transaction details. |
| app/src/main/java/one/mixin/android/vo/SnapshotItem.kt | Adds shouldShowPendingHash(rawTransaction) helper. |
| app/src/main/java/one/mixin/android/vo/safe/RawTransactionState.kt | New enum defining signed/spent raw transaction states. |
| app/src/main/java/one/mixin/android/vo/safe/RawTransaction.kt | Switches raw transaction state type to RawTransactionState. |
| app/src/main/java/one/mixin/android/ui/wallet/WalletViewModel.kt | Adds findRawTransaction(traceId) for UI usage. |
| app/src/main/java/one/mixin/android/ui/wallet/TransactionInterface.kt | Loads raw transaction and toggles pending-hash UI + pending coloring. |
| app/src/main/java/one/mixin/android/ui/wallet/InputFragment.kt | Renames pending-raw-tx guard to firstSignedTransaction(). |
| app/src/main/java/one/mixin/android/ui/media/SharedMediaViewModel.kt | Minor whitespace cleanup. |
| app/src/main/java/one/mixin/android/ui/home/web3/Web3ViewModel.kt | Renames firstUnspentTransaction() → firstSignedTransaction(). |
| app/src/main/java/one/mixin/android/ui/conversation/link/parser/NewSchemeParser.kt | Updates pending-raw-tx checks to new API naming. |
| app/src/main/java/one/mixin/android/ui/common/BottomSheetViewModel.kt | Writes/updates raw tx state using RawTransactionState and renames helper method. |
| app/src/main/java/one/mixin/android/repository/TokenRepository.kt | Renames repository API to firstSignedTransaction(). |
| app/src/main/java/one/mixin/android/job/RestoreTransactionJob.kt | Restores/updates raw tx state using RawTransactionState. |
| app/src/main/java/one/mixin/android/db/RawTransactionDao.kt | Updates queries to use state = 'signed' and renames methods. |
| app/src/main/java/one/mixin/android/db/MixinDatabaseMigrations.kt | Adds MIGRATION_70_71 to remap old state strings to new meaning. |
| app/src/main/java/one/mixin/android/db/MixinDatabase.kt | Registers migration + RawTransactionStateConverter. |
| app/src/main/java/one/mixin/android/db/MessageDao.kt | SQL formatting/whitespace-only changes. |
| app/src/main/java/one/mixin/android/db/converter/RawTransactionStateConverter.kt | Adds Room type converter for RawTransactionState. |
| app/src/main/java/one/mixin/android/Constants.kt | Bumps DB version to 71. |
| app/schemas/one.mixin.android.db.MixinDatabase/71.json | Adds updated Room schema snapshot for version 71. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+304
to
+313
| <TextView | ||
| android:id="@+id/hash_tv" | ||
| style="@style/TransactionDescTextStyle" | ||
| android:layout_width="wrap_content" | ||
| android:layout_height="wrap_content" | ||
| android:layout_marginStart="0dp" | ||
| android:layout_marginTop="0dp" | ||
| android:layout_marginEnd="0dp" | ||
| android:layout_marginBottom="0dp" | ||
| android:textIsSelectable="true" /> |
|
|
||
| class SnapshotItemTest { | ||
| @Test | ||
| fun `pending hash is shown when raw transaction is unspent`() { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge and replace #6429 and #6437.\n\n- Show pending status for unsent raw transactions.\n- Rename raw transaction states to signed/spent.\n- Align pending hash display with RawTransactionState.\n\nValidation:\n- ./gradlew :app:testGooglePlayDebugUnitTest --tests one.mixin.android.vo.SnapshotItemTest