Skip to content

refactor(db): rename raw transaction states (signed/spent)#6437

Closed
SeniorZhai wants to merge 10 commits into
masterfrom
refactor/raw-transaction-state
Closed

refactor(db): rename raw transaction states (signed/spent)#6437
SeniorZhai wants to merge 10 commits into
masterfrom
refactor/raw-transaction-state

Conversation

@SeniorZhai

Copy link
Copy Markdown
Member
  • 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

SeniorZhai and others added 3 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

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 refactors the persisted “raw transaction” lifecycle in the Room database by replacing the previous OutputState-backed values with a dedicated RawTransactionState (signed → pending broadcast, spent → broadcast terminal), including a data migration from DB version 69 → 70.

Changes:

  • Introduces RawTransactionState + a Room TypeConverter, updates RawTransaction to use the new enum, and registers the converter in MixinDatabase.
  • Updates write/update call sites (e.g., BottomSheetViewModel, RestoreTransactionJob) to store signed on creation and mark spent after broadcast/restore.
  • Adds migration MIGRATION_69_70 to remap legacy stored values (signedspent, unspentsigned) and bumps DB version/schema.

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
app/src/main/java/one/mixin/android/vo/safe/RawTransactionState.kt Adds new enum for raw-transaction lifecycle (signed/spent).
app/src/main/java/one/mixin/android/vo/safe/RawTransaction.kt Switches raw transaction state type from OutputState to RawTransactionState.
app/src/main/java/one/mixin/android/ui/common/BottomSheetViewModel.kt Writes signed on insert; updates to spent after broadcast flow.
app/src/main/java/one/mixin/android/job/RestoreTransactionJob.kt Marks restored/broadcasted raw transactions as spent.
app/src/main/java/one/mixin/android/db/RawTransactionDao.kt Changes “unspent” queries to filter state = 'signed'.
app/src/main/java/one/mixin/android/db/MixinDatabaseMigrations.kt Adds 69→70 migration remapping old state strings.
app/src/main/java/one/mixin/android/db/MixinDatabase.kt Registers converter + includes new migration in builder.
app/src/main/java/one/mixin/android/db/converter/RawTransactionStateConverter.kt Adds Room converter for RawTransactionState.
app/src/main/java/one/mixin/android/Constants.kt Bumps DB version constant to 70.
app/schemas/one.mixin.android.db.MixinDatabase/70.json Adds exported Room schema for v70.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 9 to 13
@Query("SELECT * FROM raw_transactions WHERE state = 'signed' AND (type = 0 OR type = 1) ORDER BY rowid ASC LIMIT 1")
fun findUnspentTransaction(): RawTransaction?

@Query("SELECT count(1) FROM raw_transactions WHERE state = 'unspent' AND (type = 0 OR type = 1)")
@Query("SELECT count(1) FROM raw_transactions WHERE state = 'signed' AND (type = 0 OR type = 1)")
suspend fun countUnspentTransaction(): Int
…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
@SeniorZhai SeniorZhai closed this Jun 8, 2026
@SeniorZhai SeniorZhai deleted the refactor/raw-transaction-state branch June 8, 2026 14:58
@SeniorZhai SeniorZhai restored the refactor/raw-transaction-state branch June 8, 2026 14:59
@SeniorZhai SeniorZhai reopened this Jun 9, 2026
SeniorZhai and others added 6 commits June 9, 2026 12:07
Co-authored-by: AI <ai@example.com>
* fix(trade): limit amount inputs to eight decimals

* fix(trade): use token precision for common wallet inputs

* fix(trade): limit price input decimals

---------

Co-authored-by: Crossle Song <crosslesong@gmail.com>
@SeniorZhai

Copy link
Copy Markdown
Member Author

Duplicate of #6447; both branches point to the same head commit and have the same diff. Closing the older PR.

@SeniorZhai SeniorZhai closed this Jun 10, 2026
@SeniorZhai SeniorZhai deleted the refactor/raw-transaction-state branch June 10, 2026 06:14
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