Skip to content

feat(i18n): broaden purchase pre-flight message wording#599

Merged
TaprootFreak merged 1 commit into
integration/realunit-registrationfrom
feat/replace-registration-required-wording
May 28, 2026
Merged

feat(i18n): broaden purchase pre-flight message wording#599
TaprootFreak merged 1 commit into
integration/realunit-registrationfrom
feat/replace-registration-required-wording

Conversation

@TaprootFreak
Copy link
Copy Markdown
Contributor

Summary

Renames the user-facing pre-flight banner on the RealUnit buy screen from "Registrierung erforderlich" / "Registration required" to "Zusätzliche Angaben erforderlich" / "Additional information required".

Why: the previous wording suggests the user is not registered — but every user reaching the buy screen is authenticated and many already hold KYC up to level 50 with DFX. What is actually missing is a separate RealUnitRegistration KycStep (Aktionariat shareholder registry entry). The new wording communicates that more accurately without leaking implementation details.

Scope

  • assets/languages/strings_de.arbregistrationRequired, registrationRequiredDescription
  • assets/languages/strings_en.arb — same two keys

Not changed

  • The ARB key registrationRequired and the Dart enum PaymentInfoError.registrationRequired — these mirror the API's REGISTRATION_REQUIRED error code per the API as Decision Authority rule and should track the backend contract, not the UI label.
  • lib/generated/i18n.dart is .gitignored and will be regenerated by CI / contributors via dart run tool/generate_localization.dart.

Verification

  • App rebuilt and launched on iOS 26.5 Simulator; buy screen renders the new wording in DE.
  • flutter analyze clean (one pre-existing warning in generated i18n.dart is untouched).

Follow-up (separate PR)

Even with better wording, the registration screen still starts with empty form controllers and the API rejects any input that doesn't exactly match the user's already-stored DFX data (realunit.service.ts:614 isPersonalDataMatching). Pair-PR planned: API exposes the existing personal data on GET /v1/realunit/wallet/status (server-driven Pre-Tap signal per the new capability design rules), app pre-fills the form from it.

"Registration required" is misleading for KYC-verified users — they
are already registered with DFX; the missing piece is the RealUnit
shareholder registration (Aktionariat). Reword to "Additional
information required" / "Zusätzliche Angaben erforderlich" so the
message is accurate regardless of which pre-purchase step the API
gates on.

Only the user-facing strings change. The internal key and the
PaymentInfoError.registrationRequired enum stay (they mirror the
backend's REGISTRATION_REQUIRED code per the API authority rule).
@TaprootFreak TaprootFreak changed the base branch from develop to integration/realunit-registration May 28, 2026 07:26
@TaprootFreak TaprootFreak marked this pull request as ready for review May 28, 2026 07:27
@TaprootFreak TaprootFreak merged commit 199f07b into integration/realunit-registration May 28, 2026
13 of 14 checks passed
@TaprootFreak TaprootFreak deleted the feat/replace-registration-required-wording branch May 28, 2026 07:27
TaprootFreak added a commit that referenced this pull request May 28, 2026
## Summary

Integration branch bundling the RealUnit registration UX improvements so
they can land on `develop` as a single coordinated change. Individual
feature PRs target this branch as their base; once they have all merged
here, this PR is reviewed end-to-end and merged into `develop`.

## Member PRs

- **[#599](#599) —
feat(i18n): broaden purchase pre-flight message wording**
Renames the buy-screen banner from "Registrierung erforderlich" →
"Zusätzliche Angaben erforderlich" so KYC-completed users aren't told
they need to register again.
- **[#600](#600) —
feat(realunit): pre-fill registration form from wallet status**
Pre-populates the Aktionariat registration wizard from `GET
/v1/realunit/wallet/status`, replacing the empty-controllers experience
that today forces users to retype data the backend already holds. Pairs
with [DFXswiss/api#3782](DFXswiss/api#3782).

## Why bundle

Both PRs touch the same screen (RealUnit registration), share goldens,
and only deliver their full UX value together — the new wording
communicates the right expectation, and the pre-fill makes that
expectation accurate. Reviewing them as one end-to-end change at the
integration step prevents partial-merge regressions and keeps the
goldens in sync.

## Workflow

1. Open each member PR against `integration/realunit-registration`
2. Merge member PRs into this branch as they're approved
3. Review this PR end-to-end against `develop` (full diff = combined
member content)
4. Merge into `develop`

Empty seed commit will disappear once the member PRs merge in and the
branch diverges with real content.

---------

Co-authored-by: Blume1977 <jana.ruettimann@dfx.swiss>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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