Refactor cloud backup and mobile manager ownership#826
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Cover the refactored iCloud download state machine, sidebar navigation ordering, send route lifecycle detection, and reconcile channel flushing so the preserved behavior is checked automatically.
Stabilize Android onboarding actions around recovery-word entry and imported-wallet history assertions. Reconcile iOS route ownership from the mutated router snapshot to avoid a Swift exclusivity crash after accepting terms.
Greptile SummaryThis PR refactors cloud backup ownership and platform manager wiring. The main changes are:
Confidence Score: 4/5The cloud backup lifecycle and Drive delete paths need fixes before merging.
rust/src/manager/reconcile_channel.rs; android/app/src/main/java/org/bitcoinppl/cove/cloudbackup/AndroidCloudStorageAccess.kt; android/app/src/main/java/org/bitcoinppl/cove/cloudbackup/DriveFolderResolver.kt Important Files Changed
|
|
@greptile-apps thanks for the review. I looked through these, and I do not think any of the three cloud-backup findings should block this refactor.
This is a theoretical failure mode, but not a realistic PR blocker. The cloud-backup reconcile queue has capacity 1000 and is drained by a dedicated listener. Lifecycle messages are emitted on state transitions, not as a high-volume event stream, so organically filling that queue would require the platform-side consumer to be wedged. If the consumer is wedged badly enough to stop draining 1000 messages, the app is already broken; changing this specific send path to async would not make cloud backup healthy. This behavior is also not introduced by this refactor:
The delete operation is idempotent and retryable. If deleting one location succeeds and a later location fails, the next attempt only finds the remaining files and continues cleanup. I do not see a caller that treats the aggregate error as meaning "nothing was deleted"; callers treat it as a failed delete attempt, which is compatible with best-effort remote cleanup. This behavior also existed before the refactor; the refactor moved the Drive code into helpers but did not introduce the delete semantics.
Production cloud-backup deletes go through Rust Bottom line: these are acknowledged as theoretical hardening notes, but they are pre-existing or low-risk behaviors and should not delay this refactor without a concrete reachable failure scenario. |
|
All three explanations are solid — thanks for the detailed walkthrough.
These are fine to treat as hardening notes for a follow-up if desired, not blockers for this refactor. |
Extracted custom fee estimation and "fee too high" alert handling into helpers, and cleaned up related Kotlin formatting. Updated send flow finalize tests to use `ReconcileChannel` directly instead of manual sender/receiver wiring, with the matching assertion path adjusted.
No description provided.