Skip to content

fix(settings): Prevent pairing when the mobile browser is signed in - #21433

Merged
dschom merged 1 commit into
mainfrom
FXA-14479
Oct 12, 2026
Merged

dschom merged 1 commit into
mainfrom
FXA-14479

Conversation

@dschom

@dschom dschom commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Because

  • Pairing signs a device in to Sync. A mobile browser that already holds a verified account has nothing to pair, yet the v2 flow completed with no warning (FXA-14479).

This pull request

  • Routes a signed-in supplicant from /pair to the pairing dead-end screen before the channel opens, so the Connect card is never shown.
  • Adds a signed_in reason to TimeoutAndCancel with new Fluent copy telling the user to sign out and retry, plus a Storybook story.
  • Lists the new reason in the Glean dtm_mobile.timeout_view extra description.
  • Covers the gate (verified user stops; unverified or token-less user still hands off) and the new variant in the page tests.

Issue that this pull request solves

Closes: FXA-14479

Checklist

Put an x in the boxes that apply

  • My commit is GPG signed.
  • If applicable, I have modified or added tests which pass locally.
  • I have added necessary documentation (if appropriate).
  • I have verified that my changes render correctly in RTL (if appropriate).
  • I have manually reviewed all AI generated code.

How to review (Optional)

  • Key files/areas to focus on: pages/Pair/Index/index.tsx (the gate), pages/Pair2/Supplicant/TimeoutAndCancel/index.tsx (copy)
  • Suggested review order: gate, then the dead-end page and its en.ftl, then tests
  • Risky or complex parts: none; the channel is never opened on the new path

Screenshots (Optional)

FXA-14479 — mobile dead-end screen, signed_in reason (Storybook, this branch)

After (this branch)
After: signed-in dead-end screen

Other information (Optional)

  • This stops a signed-in device on purpose. The account switch QA observed on train 346.3 no longer happens; the user is told to sign out first.
  • Desktop is not notified on this path. It waits out the channel and shows its timeout screen.
  • Copy is a first draft and needs a UX pass before l10n export.

@dschom dschom changed the title fix(settings): stop pairing when the mobile browser is signed in fix(settings): Prevent pairing when the mobile browser is signed in Oct 9, 2026
@dschom
dschom marked this pull request as ready for review October 9, 2026 01:26
@dschom
dschom requested review from a team as code owners October 9, 2026 01:26

@vbudhram vbudhram left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dschom Works on emulator 👍🏽

combined.mp4

Because:
- Pairing signs a device in to Sync, so a browser that already holds a verified account has nothing to pair.
- The v2 supplicant flow completed anyway, with no warning to the user.

This commit:
- Routes a signed-in supplicant to the pairing dead-end screen before the channel opens.
- Adds a signed_in reason and copy to the TimeoutAndCancel page.
- Lists the new reason in the Glean timeout_view extra description.

Closes FXA-14479
@dschom
dschom merged commit 39320cc into main Oct 12, 2026
20 of 21 checks passed
@dschom
dschom deleted the FXA-14479 branch October 12, 2026 19: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.

3 participants