Skip to content

01a010cb - Set account email before the support form - #1409

Merged
TaprootFreak merged 1 commit into
DFXswiss:developfrom
TaprootFreakAI:01a010cb-support-issue-mail-gate
Aug 17, 2026
Merged

01a010cb - Set account email before the support form#1409
TaprootFreak merged 1 commit into
DFXswiss:developfrom
TaprootFreakAI:01a010cb-support-issue-mail-gate

Conversation

@TaprootFreakAI

Copy link
Copy Markdown
Collaborator

EN:
A logged-in customer without account email is sent to the official mail screen before the support form. The ticket form no longer collects email. Cancel and merge-OK on the mail screen drop the stored return path so it cannot come back on a later visit. This replacement takes over #1397 onto current develop.

DE:
Ein eingeloggter Kunde ohne Konto-Mail wird vor dem Support-Formular auf die offizielle Mail-Seite geleitet. Das Ticket-Formular fragt keine Mail mehr ab. Abbruch und Merge-OK auf der Mail-Seite löschen den gespeicherten Rückweg, damit er bei einem späteren Besuch nicht wiederkehrt. Dieser Ersatz übernimmt #1397 auf den aktuellen develop.

Details

Takes over the still-draft in-repo PR #1397 (no write on the org branch). Head is rebased onto develop 6e2cc5b (#1404) with no file overlap.

Logged-in users without user.mail are redirected to /account/mail with setRedirect: true. The origin is copied into session storage and redirectPath is consumed. After verifyMail the stored destination is restored. Cancel, merge-OK and a handled merge-401 clear both the store and redirectPath. The quote/order guest path is latched on first render so URL cleanup cannot trip the mail gate.

Declared deviations from CONTRIBUTING:

  • Whole-file 100% coverage is not claimed for the pre-existing screens src/screens/support-issue.screen.tsx and src/screens/edit-mail.screen.tsx. New branches are covered by src/__tests__/support-issue-receiver-iban.test.tsx, src/__tests__/edit-mail-return.test.tsx and src/__tests__/session-store.test.tsx.
  • No new Playwright baselines. The support-issue receiver-IBAN handbook screenshots already exist. The visual spec pins user.mail so the mail gate does not hide the form. The visible form for a user who already has mail is unchanged.
  • No new full-stack e2e case for the mail-first redirect. Existing e2e-stack/specs/support.spec.ts still uses factory users that already have mail, so the create-ticket path stays green. The new gate is covered by unit tests.

Supersedes #1397.

The support form no longer collects email. After verification the
customer returns via the stored origin; cancel and merge-OK drop
that path so it cannot come back on a later visit.
@TaprootFreakAI

Copy link
Copy Markdown
Collaborator Author

EN:
Ready after 1 review pass.
A logged-in customer without account email is sent to the official mail screen before the support form.

DE:
Bereit nach 1 Review-Durchlauf.
Ein eingeloggter Kunde ohne Konto-Mail wird vor dem Support-Formular auf die offizielle Mail-Seite geleitet.

Details

Replacement for #1397 (in-repo branch, no write). Head aa95c218 on develop 6e2cc5b. Commit signature verified.

Review: one pass, 0 findings on quality and logic. No open issue comments, reviews, or inline comments.

Mergeable: true (MERGEABLE). mergeable_state is blocked only because of draft/CODEOWNER, not a conflict.

CI on this head: Build and test success, Full-stack E2E success, review success, Analyze (actions) success. Handbook image job is skipped while the PR is draft (if: draft == false); it is expected to run after ready because this PR touches docs/** and scripts/handbook/**. Analyze (javascript-typescript) failed in CodeQL init with GitHub HTTP 503 ("No server is currently available"); the same tree was CodeQL-green on #1397 (8176ad70). Rerun was refused (no admin on the org repo). Not a diff defect.

Declared deviations: no whole-file 100% coverage of the pre-existing screens; no new Playwright baselines; no new full-stack case for the mail-first redirect.

@TaprootFreakAI

Copy link
Copy Markdown
Collaborator Author

EN:
CI is fully green on this head after CodeQL was retriggered.

DE:
Die CI ist auf diesem Head vollständig grün, nachdem CodeQL neu gelaufen ist.

Details

Reopened the PR to fire pull_request.reopened after the first CodeQL init died on GitHub HTTP 503. Latest checks on aa95c218: Analyze (javascript-typescript) success, Analyze (actions) success, CodeQL success, Build and test success, Full-stack E2E success, handbook image success, review success. Mergeable MERGEABLE. Still ready for review.

@TaprootFreak
TaprootFreak merged commit 7f6fef1 into DFXswiss:develop Aug 17, 2026
14 of 15 checks passed
TaprootFreakAI added a commit to TaprootFreakAI/services that referenced this pull request Aug 18, 2026
The mail-gate tests clear all mocks. The tx suite must put useUserContext
back so the screen can destructure user after DFXswiss#1409.
TaprootFreakAI added a commit to TaprootFreakAI/services that referenced this pull request Aug 18, 2026
The mail-gate tests clear all mocks. The tx suite must put useUserContext
back so the screen can destructure user after DFXswiss#1409.
TaprootFreak added a commit that referenced this pull request Aug 20, 2026
…ge (#1407)

* Open assign, refund and support on the public TX status page

Buttons on /tx/T… no longer redirect to login. Assign and refund use
UID guest endpoints; the support form accepts a tx query param so a
ticket can be filed without a session.

* Keep the tx query param after the URL is cleaned

Snapshot tx at mount so clearing the query string cannot re-enable
the login guard or wipe the prefilled transaction. Guest refund
renders without a numeric transaction id.

* Hide logged-in refund dropdowns on the guest path

Guest refunds always use free-text IBAN and address fields so leftover
bank-account context after a previous session cannot open the dropdown.

* Keep public TX mail links working when a session is already open

Assign, refund and support on a T/Q status URL always use the guest
capability path so a logged-in session cannot block or widen the action.

* Drop unused within import from the refund tests

ESLint treats the leftover import as a warning and CI fails at max-warnings 0.

* Wire the guest refund mock in the list/txinfo suite

T/Q refund now always calls getRefund. The list suite still stubbed that
as a bare jest.fn, so the form never left the spinner.

* Refresh status checks for the feature-branch pull request

The previous head still carried a Full-stack E2E run from the closed
develop-targeted fork PR. This branch is not develop, so that workflow
does not apply here.

* Do not fail full-stack E2E when the API checkout key is missing

Fork pull requests do not receive repository secrets. Without the API checkout key the job dies as repository-not-found. Treat a missing key like a documentation-only change: mode=none, job still runs.

* Drop unreachable session refund UI from the public TX refund form

The refund route only mounts for T/Q UIDs, so the logged-in dropdowns
and session refund APIs could never run. Always use the guest form, and
expect the full-stack refund test to land on /tx/{uid}.

* Drop leftover uid gates on the refund form and cover public assign

TransactionRefund only mounts for T/Q, so a second isUid check was
dead. The full-stack suite now opens /tx/{uid}/assign and expects the
guest assign screen, not the list.

* Restore user and session mocks in the tx query-param suite

The mail-gate tests clear all mocks. The tx suite must put useUserContext
back so the screen can destructure user after #1409.

* Use the mail action secret on guest assign and refund URLs

The unmatched-deposit mail stays one link: /tx/{uid}/{secret}.
Guest assign and refund call the secret APIs; status without a secret
does not offer those actions.

* Restore JWT refund on the logged-in TX list path

* Add handbook screenshots for the mail action-secret TX flow

* Drop the unused JWT helper from the guest TX visual spec

---------

Co-authored-by: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com>
Co-authored-by: TaprootFreakAI <315477232+TaprootFreakAI@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.

2 participants