feat: add trezor receive - #1189
Conversation
f75f183 to
48273d1
Compare
Greptile SummaryAdds hardware-wallet receiving to the existing receive sheet, including watcher-backed address resolution, BIP21 editing, and on-device Trezor verification.
Confidence Score: 4/5The PR should not merge until receive amount and note state is scoped so Savings edits cannot silently alter the Trezor payment request. The Trezor QR directly consumes the same BIP21 metadata updated by Savings editing, causing a request for one account to be displayed for another account with unintended payment details. Files Needing Attention: app/src/main/java/to/bitkit/ui/screens/wallets/receive/ReceiveQrScreen.kt, app/src/main/java/to/bitkit/ui/screens/wallets/receive/ReceiveSheet.kt
|
| Filename | Overview |
|---|---|
| app/src/main/java/to/bitkit/repositories/HwWalletRepo.kt | Adds watcher-backed receive-address lookup, account-scan fallback, typed watcher address data, and identity-aware Trezor address verification. |
| app/src/main/java/to/bitkit/ui/screens/wallets/receive/HwReceiveViewModel.kt | Coordinates address loading, watcher updates, verification retries, passphrase prompts, cancellation, and user-facing errors. |
| app/src/main/java/to/bitkit/ui/screens/wallets/receive/ReceiveQrScreen.kt | Adds the Trezor tab and its actions, but incorrectly sources its amount and note from primary-wallet BIP21 metadata. |
| app/src/main/java/to/bitkit/ui/screens/wallets/receive/ReceiveSheet.kt | Wires hardware receive navigation and editing into the shared receive sheet, including the shared metadata path implicated in the finding. |
| app/src/main/java/to/bitkit/ui/screens/wallets/receive/ReceiveInvoiceUtils.kt | Builds hardware-wallet BIP21 requests and selects the blue Bitcoin QR logo. |
| app/src/main/java/to/bitkit/ui/screens/wallets/receive/EditInvoiceScreen.kt | Adds an on-chain-only editing path that avoids Lightning receive work and hides tags. |
Sequence Diagram
sequenceDiagram
participant U as User
participant UI as Receive Sheet
participant VM as Hardware Receive VM
participant HW as Hardware Wallet Repo
participant W as Watcher
participant T as Trezor
U->>UI: Open hardware-wallet receive
UI->>VM: loadAddress(walletId)
VM->>HW: getReceiveAddress(walletId)
HW->>W: Read next unused address
alt Watcher address available
W-->>HW: Address and derivation path
else Watcher state unavailable
HW->>T: Scan public account
T-->>HW: First unused address
end
HW-->>VM: Hardware receive address
VM-->>UI: Display QR and details
U->>UI: Verify on device
UI->>VM: verifyAddress()
VM->>HW: verifyReceiveAddress()
HW->>T: Display address at derivation path
T-->>HW: Derived address
HW-->>VM: Match or mismatch
Reviews (1): Last reviewed commit: "feat: add trezor receive" | Re-trigger Greptile
48273d1 to
8be651e
Compare
ovitrif
left a comment
There was a problem hiding this comment.
The receive flow can complete verification for an address that is no longer displayed. I also found two smaller gaps in the Details actions and editor coverage.
e9afa2a to
0456645
Compare
6de987e to
09a681e
Compare
0456645 to
39230eb
Compare
09a681e to
f5f2c24
Compare
39230eb to
57adcbb
Compare
f5f2c24 to
5ef1318
Compare
57adcbb to
85564d9
Compare
5ef1318 to
80d47e3
Compare
85564d9 to
2b795f4
Compare
Summary
Stack
Validation