01a04757 - Drop the leftover UserData account-wallet field - #1439
01a04757 - Drop the leftover UserData account-wallet field#1439TaprootFreakAI wants to merge 13 commits into
Conversation
The support call-queue shows the per-user walletName only. The account wallet on UserDataDetail is gone with the backend column.
🤖 PR Review Bot❌ TypeScript: 1 errorsThis is an automated review. Please address the issues above. |
UserData no longer has a wallet. The per-user wallet stays on the users tab.
|
The TypeScript error was |
|
EN: DE: DetailsHead CI on this head: Build and test, Full-stack E2E, review, CodeQL — success. Handbook smoke skipped (draft policy). Grok quality + logic: 0 findings. RealUnit / Denario / mixed host-matrix cases are |
The DFX services account-merge screen already handles these API outcomes; the full-stack suite now opens each one against Postgres.
The expired-otp case updates account_merge.expiration directly. Record that in the reality declaration and assert the expired error copy.
An unauthenticated /account-merge hop through /kyc then /login. Wait for the mail field before filling on the completed and expired setups.
Read the AccountMergeRequest notification after the product mail-change path. Unanimous RealUnit links to realunit.app; Denario and mixed addresses stay on the DFX host. The confirmation API still works on /account-merge.
CreateUserResult.mail is optional. The merge helper now uses the harness required() helper so tsc --noEmit in the e2e-stack job passes.
Denario may be absent from the loc seed. The merge-mail cases now insert any missing named wallet the same way they already did for RealUnit.
Every merge-mail case now asserts the notification URL contains the merge code. Partner wallets are resolved before createUser so a late insert cannot outrank seed rows during the same file.
Assert pathname, otp query param, and hostname so a decoy ?otp=wrong&next=<code> or evilrealunit.app cannot pass.
DFX-host cases now compare URL.origin to E2E_FRONTEND_URL. Reality declaration notes that a partner-wallet insert is not the seed path.
Hostname alone would accept http://realunit.app. Match the backend contract: https://realunit.app or https://dev.realunit.app.
The stack builds the API from DFXswiss/backend@develop, which still brands merge from the default wallet. Keep the DFX mail-URL assert.
EN:
This PR removes the leftover UserData account-wallet from the support UI. The call-queue Wallet row shows only the per-user walletName. The user-data panel no longer has an account-wallet row. That matches the backend, which no longer stores a wallet on the KYC account.
DE:
Dieser PR entfernt die übrig gebliebene Account-Wallet aus der Support-UI. Die Wallet-Zeile in der Call-Queue zeigt nur noch den per-user walletName. Das User-Data-Panel hat keine Account-Wallet-Zeile mehr. Das entspricht dem Backend, das auf dem KYC-Konto keine Wallet mehr speichert.
Details
UserDataDetail.walletmirroredUserData.walleton the API. That column is dropped. Per-userwalletNameremains on the users tab.Coverage deviation
CONTRIBUTING coverage is a review gate, not CI. This PR does not bring these presentational files to 100% (change is deleting an unused field / the account-wallet row):
src/hooks/compliance.hook.ts— type-only delete of UserDataDetail.walletsrc/components/compliance/call-queue/call-queue-user-info.tsx— presentational; existing tests mock CallQueueUserInfosrc/components/compliance/user-data-panel.tsx— presentational row removalPer-file 100% is not claimed. The numbers belong in a follow-up that instruments these files; this PR does not raise them to the ratchet.
Playwright
Playwright visual tests do not run in CI. The committed overview baseline already has no account-wallet row. Regenerating platform-specific goldens is out of scope.
Reality
The expired-otp full-stack case SQL-writes
account_merge.expiration. Declared in docs/test-architecture.md.Related: DFXswiss/backend#5270.