Skip to content

feat(kyc): port the cu-16 identity verification screen#36

Merged
netqo merged 1 commit into
devfrom
feat/kyc-screen
Jun 12, 2026
Merged

feat(kyc): port the cu-16 identity verification screen#36
netqo merged 1 commit into
devfrom
feat/kyc-screen

Conversation

@netqo

@netqo netqo commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Summary

Ports the cu-16 KYC screen (mockup/js/screens/kyc.js) and wires it into the nav graph in place of the placeholder. It is a static, full-screen identity-verification flow reached from Profile (Verify Identity) and the wallet withdraw tab. The front and back ID slots simulate an upload (Empty -> Uploading -> Uploaded) with a mock DNI preview; the progress meter and submit gate track both photos, Submit advances to the Pending review banner, and Replace clears a slot.

Rationale

  • No ViewModel (KISS): the front/back slot statuses and a submit flag live as screen-local state; tapping Camera / Gallery simulates the upload, and uploadedCount / canSubmit derive the progress meter and submit gate.
  • The review outcomes (Verified / Suspended / Error) collapse the screen to a single status banner, matching the mockup which hides the upload form in those states. They are not reachable from user actions in this shell (they come from the review pipeline), so they are exercised through @Preview until the KYC repository drives them.
  • Real camera / gallery capture and the Firebase Storage upload land with that repository in a later entrega.
  • Per-section files: KycScreen (scaffold + form), KycSlot (the upload slot states), KycBanners (review outcomes), KycUiState (state + the testable helpers).

Verification

  • ./gradlew ktlintCheck detekt testDebugUnitTest -> BUILD SUCCESSFUL
  • ./gradlew assembleDebug -> BUILD SUCCESSFUL
  • ./gradlew compileDebugAndroidTestKotlin -> BUILD SUCCESSFUL
  • On device: Profile -> Verify Identity opens KYC; Camera / Gallery on each slot runs the upload simulation to the DNI preview; the meter reaches 2/2 and Submit shows the Pending banner; Replace clears a slot; Back returns.

Test plan

  • ktlint + detekt clean
  • KycFormTest green (uploadedCount, canSubmit gate)
  • KycScreenTest compiles (instrumented; not run in the CI matrix)
  • Debug APK assembles
  • Manual device walkthrough of the flow above

Checklist

  • Commit messages follow Conventional Commits (see CONTRIBUTING.md).
  • Branch name follows the naming convention (feat/).
  • The change is scoped: KYC only.
  • If user-visible behavior changed, CHANGELOG.md has been updated under [Unreleased].
  • If a new dependency was added, it is justified in the PR description. (No new dependency.)

A static, full-screen KYC flow reached from Profile and the wallet
withdraw tab. The front and back ID slots simulate an upload
(Empty -> Uploading -> Uploaded) with a mock DNI preview; the progress
meter and submit gate track both photos, Submit advances to the Pending
review banner, and Replace clears a slot. The review outcomes (Verified,
Suspended, Error) collapse the screen to a single status banner and are
exercised through @Preview until the KYC repository drives them.

Real camera / gallery capture and the Firebase Storage upload land with
that repository in a later entrega. Replaces the KYC placeholder in
StackNavHost.

Tests: KycFormTest (uploadedCount and the canSubmit gate) and
KycScreenTest (empty / both / pending rendering and the back callback).
@netqo netqo merged commit 79790b5 into dev Jun 12, 2026
3 checks passed
@netqo netqo deleted the feat/kyc-screen branch June 12, 2026 21:59
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.

1 participant