Select residence country by searchable name (#64)
This commit is contained in:
1 parent
e84d2d1ad3
commit
417e6d96b6
10 files changed
+435
-15
No files matched your search
@@ -167,3 +167,46 @@ This is a display correction within the existing KYC journey, so no additional
|
||||
analytics events or financial data collection are introduced. Tests cover mapping
|
||||
without inferring remaining, unused/exhausted/over-cap/zero-cap ratios and EN/RU
|
||||
usage display at 320px with 1.6 text scaling.
|
||||
|
||||
## Residence country selection — task #64
|
||||
|
||||
Task [#64](https://git.sendico.io/tech/sxchnge/issues/64), branch `kyc-64`.
|
||||
The profile now shows a country name and opens a searchable country list instead
|
||||
of asking customers to type a two-letter code. Names follow the English/Russian
|
||||
app locale. Search accepts localized or English names and two-letter codes,
|
||||
ignoring case and surrounding whitespace. Selection updates only
|
||||
`IdentityProfile.residenceCountry` with the country code; the existing provider,
|
||||
service, mapper and transport contracts remain unchanged.
|
||||
|
||||
The `country_picker` dependency supplies bundled country data, code lookup and
|
||||
translations through `CountryService` and `CountryLocalizations`. Flutter Material
|
||||
controls provide the search interface, explicit no-results recovery, minimum
|
||||
touch targets, keyboard selection, a selected-state checkmark, Back and Escape.
|
||||
The package's built-in list omits explicit no-results feedback and uses shorter
|
||||
row targets, so its data/localizations are reused with standard Material controls.
|
||||
There is no remote lookup, copied country table or extra application provider.
|
||||
Cancelling preserves the current profile, prefilled codes display names, busy
|
||||
state disables opening the selector, and the search controller is disposed with
|
||||
its dialog. The list is a data catalogue; backend eligibility remains authoritative.
|
||||
|
||||
This change stays within the existing KYC preparation/submission journey and its
|
||||
measurement definitions above. No selector events, queries, names or country
|
||||
codes are added to telemetry. Existing acceptance/failure/retry/abandonment
|
||||
signals and documented server-side review measurement gaps still apply.
|
||||
|
||||
Focused widget checks cover name/code search, code-only updates, reselection,
|
||||
cancel, no-results recovery, clearing search, saved values, locale changes,
|
||||
Russian names, disabled state, keyboard activation/selection/Escape and labeled
|
||||
touch targets. A long country name fits at 320px with 1.6 text scale. Existing
|
||||
EN/RU verification journeys now select a country and assert the profile code
|
||||
before continuing through document submission. Native screen-reader and device
|
||||
keyboard testing remain release checks; widget semantics checks do not establish
|
||||
those device outcomes.
|
||||
|
||||
Validation: five changed Dart files passed the format check; `flutter analyze`
|
||||
in `frontend/app` reported no issues; `make test-frontend` passed all 222 tests;
|
||||
and `flutter build web` passed, including its Wasm compatibility dry run. Browser
|
||||
smoke testing on the local demo opened the selector, searched for Poland and
|
||||
confirmed that the profile displays Poland after selection. Focused and full
|
||||
journey tests verify the stored `PL` code. Generated localization/build outputs
|
||||
remain ignored and uncommitted.
|
||||
Reference in new issue
Block a user