Skip to content

i18n: fix buy-payment button label to match its actual action (request payment instructions) #660

@TaprootFreak

Description

@TaprootFreak

Goal

Fix the misleading label on the buy-payment action button so it matches what the button actually does. Tester feedback from Bojan Jankovic (RealUnit, 28.05): the current wording tells the customer to transfer money first and click afterwards, but the click is in fact what requests the payment instructions — the customer should click first, receive the payment slip, then pay.

This is a pure i18n label change. No behaviour, flow, API, or surrounding-copy change.

Exact change

File: assets/languages/strings_de.arb and assets/languages/strings_en.arb, key buyPaymentConfirm (currently line 31 in both).

Lang Current New
de Klicken Sie hier, sobald Sie die Überweisung getätigt haben Zahlungsanweisungen per E-Mail anfordern
en Click here once you have made the transfer Request payment instructions by email

Nothing else in the ARB files changes.

Why this is correct (investigation summary)

The button lives in lib/screens/buy/widgets/payment_information_details.dart:225. Its onPressed calls BuyConfirmCubit.confirmPayment(buyPaymentInfo.id)RealUnitBuyPaymentInfoService.confirmPayment(id)PUT /v1/realunit/buy/{id}/confirm (DFX API).

Server-side (DFXswiss/apirealunit.service.ts confirmBuy), that endpoint calls blockchainService.requestPaymentInstructions(...) against Aktionariat, sets the transaction request to WAITING_FOR_PAYMENT, and returns a reference. In other words the action requests the payment instructions — it does not record an already-made transfer. The old label inverted the real order of operations; the new label matches both the backend method name (requestPaymentInstructions) and RealUnit's established setup (Bojan: "Es ist einfacher für den Kunden, zuerst ein Mail mit Einzahlungsschein zu erhalten und erst danach die Zahlung im E-Banking zu erfassen. Im aktuellen Setup haben wir es auch so.").

Because the backend already does exactly what the new label says, only the label is wrong — hence the strict label-only scope. Bojan explicitly scoped it too: "Einzig den Text auf dem Button sollte man ändern."

Out of scope — do NOT touch

  • confirmPayment / BuyConfirmCubit logic, the /confirm endpoint, or any API behaviour.
  • buyPaymentInformationDescription ("Bitte überweisen Sie den Kaufbetrag mit diesen Angaben…") and the in-app IBAN/BIC/QR display — they stay; the customer can still see and use the details directly.
  • buyExecutedDescription ("Vielen Dank. Sobald Ihre Überweisung eingegangen ist, übertragen wir die REALU-Token…") and PaymentExecutedSheet — the post-action success copy still fits.
  • The error strings buyPaymentConfirmFailed / buyPaymentConfirmFailedAktionariat — unchanged.

Required follow-up steps (per repo conventions)

  1. Keep the ARB files alphabetically ordered (the key keeps its position). Run dart run tool/generate_localization.dart to regenerate lib/generated/i18n.dart.
  2. Goldens: the loaded buy-payment screen renders this button — the golden test/goldens/screens/buy/goldens/macos/buy_payment_info_loaded.png will change. After pushing the branch, trigger gh workflow run golden-regenerate.yaml --repo RealUnitCH/app --ref <branch> (don't wait for the Visual-Regression check to fail first).
  3. Widget tests: check test/screens/buy/widgets/payment_information_test.dart and test/screens/buy/buy_golden_test.dart for any assertion on the old literal string and update if present.

Acceptance criteria

  • buyPaymentConfirm reads the new text in both strings_de.arb and strings_en.arb.
  • lib/generated/i18n.dart regenerated; build green.
  • Buy-payment golden regenerated; Visual Regression green.
  • No code/flow/API change; no other ARB keys touched.
  • (Stakeholder verification, outside this PR) Bojan confirms in the next test build that clicking the button leads to the payment-slip email as expected.

Branch / workflow

Feature branch → PR against staging (RealUnit branch flow, per CONTRIBUTING.md), open as Draft.

Source: tester feedback "Test RU App mit Android", Bojan Jankovic, 28.05.2026.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions