Skip to content

fix(wallet): merge raw transaction pending updates#6447

Open
SeniorZhai wants to merge 7 commits into
masterfrom
fix/wallet-raw-transaction-pending
Open

fix(wallet): merge raw transaction pending updates#6447
SeniorZhai wants to merge 7 commits into
masterfrom
fix/wallet-raw-transaction-pending

Conversation

@SeniorZhai

Copy link
Copy Markdown
Member

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

SeniorZhai and others added 7 commits June 3, 2026 16:12
- 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

Copilot AI 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.

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, update RawTransaction model/DAO queries, and add DB migration (70→71) + schema update.
  • Fetch associated raw transactions by traceId when rendering transaction details and show a pending indicator (spinner) for signed raw 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`() {
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