fix: align pubky and paykit ui#1097
Conversation
Greptile SummaryThis PR aligns the Pubky and Paykit contact experience with the latest designs. The main changes are:
Confidence Score: 4/5The private payment enable path and post-save back-stack cleanup need fixes before merging.
ContactPaymentSettingsRepo.kt and ContentView.kt
|
| Filename | Overview |
|---|---|
| app/src/main/java/to/bitkit/repositories/ContactPaymentSettingsRepo.kt | Adds shared contact-payment enable, disable, cleanup, and rollback behavior; the enable path ignores private publication failure. |
| app/src/main/java/to/bitkit/ui/ContentView.kt | Updates contact and scanner navigation; post-save cleanup can miss an AddContact entry whose raw key differs from the normalized key. |
| app/src/main/java/to/bitkit/viewmodels/SettingsViewModel.kt | Exposes the shared contact-payment state and delegates switch updates to the new repository. |
| app/src/main/java/to/bitkit/ui/screens/contacts/ContactDetailViewModel.kt | Adds contact deletion state, error handling, and a successful-deletion effect. |
| app/src/main/java/to/bitkit/data/serializers/SettingsSerializer.kt | Applies the simplified Paykit payment-method defaults while loading persisted settings. |
Reviews (1): Last reviewed commit: "chore: rename changelog fragment" | Re-trigger Greptile
f65148d to
2b14ed7
Compare
5050c1e to
edb688f
Compare
2b14ed7 to
0a3c85c
Compare
|
@piotr-iohk I think e2e tests might need some changes due to the UI updates here |
E2E / companionsE2E for this PR: bitkit-e2e-tests#200. Matches this flow (and Figma): no discard CTA / save toast; save → Contact Detail; no dissmis on contact add screen. iOS (bitkit-ios#636) still has e2e compatibility hooks ( Pre-existing: profile delete can fail when contacts existNot introduced by this UI PR (cleanup gate is older Paykit work). Seen on iOS too. Surfaced by e2e Steps to reproduce
Expected
Actual
Logs
Worth fixing on the Paykit/delete path (can be a follow-up). |
|
iOS has been updated in bitkit-ios#636, commit |
|
@piotr-iohk Thanks — confirmed this was a pre-existing cross-platform cleanup gate rather than part of the UI-parity changes. Terminal profile deletion now attempts private Paykit endpoint cleanup but does not block when that cleanup cannot complete, for example when a contact is offline or a private link is still in Follow-up PRs:
Both delete confirmations now explain that contacts may retain profile or payment information previously shared with them. #1097 remains focused on UI parity, and the E2E changes remain separate in |
piotr-iohk
left a comment
There was a problem hiding this comment.
tACK
e2e tests updated not to fail on delete for now. will update again after fix.
I'd propose to merge base codex/paykit-watch-only-accounts first and then this one.

Fixes #970
Depends on #1084.
This PR:
Description
The Android Pubky and Paykit flows still mixed older layouts and settings with the v61 designs. Profile and contact screens used outdated spacing, labels, dividers, key formatting, and sheet sizing, while contact payments were split across onboarding and a separate per-method preference screen.
This update brings those flows together around the latest design. Profile and contact editing share the revised form treatment, contact import and add flows follow the new hierarchy, Pubky scanning uses its dedicated presentation, and newly added contacts can be reviewed or deleted from the detail screen. Profile and contact tags can be added and removed directly from their detail screens with stable, accessible controls.
General settings now exposes one payments-with-contacts switch backed by the receiver-aware behavior from #1084. Lightning and on-chain receiving remain enabled for the simplified Paykit experience. Paykit lifecycle/concurrency, sign-out and wallet-wipe safety, and unrelated endpoint-cleanup hardening are intentionally outside this PR.
Preview
QA Notes
Manual Tests
Automated Checks
ContactPaymentSettingsRepoTest.kt; profile and contact tag persistence inProfileViewModelTest.ktandContactDetailViewModelTest.kt; hidden Paykit method migration inSettingsSerializerTest.kt; and Pubky key formatting inPubkyPublicKeyFormatTest.kt.TagButtonTest.kt, plus full-row switch semantics and debouncing inSettingsSwitchRowTest.kt.AddContactViewModelTest.kt,PayContactsViewModelTest.kt, andSettingsViewModelTest.kt.compileDevDebugKotlin,testDevDebugUnitTest,compileDevDebugAndroidTestKotlin, anddetekt --rerun-taskspass against the original rc37 artifact used by feat: add Paykit server accounts #1084. The currently published rc37 artifact resolves to a different breaking API; correcting that base dependency is outside this PR.