From 754b5d50718fbe90edc85e8160d5fb060ba5b4de Mon Sep 17 00:00:00 2001 From: sreecharan-desu Date: Fri, 23 Jan 2026 23:28:33 +0530 Subject: [PATCH] fix(settings): support userContextId in WebChannel status requests for containers --- packages/fxa-settings/src/components/App/index.tsx | 7 +++---- packages/fxa-settings/src/lib/channels/firefox.ts | 5 ++++- .../fxa-settings/src/models/integrations/data/data.ts | 11 ++++++++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/fxa-settings/src/components/App/index.tsx b/packages/fxa-settings/src/components/App/index.tsx index 2e27ad7cc38..ea29aa4b06d 100644 --- a/packages/fxa-settings/src/components/App/index.tsx +++ b/packages/fxa-settings/src/components/App/index.tsx @@ -89,9 +89,7 @@ const ResetPasswordConfirmedContainer = lazy( ); const ResetPasswordWithRecoveryKeyVerifiedContainer = lazy( () => - import( - '../../pages/ResetPassword/ResetPasswordWithRecoveryKeyVerified/container' - ) + import('../../pages/ResetPassword/ResetPasswordWithRecoveryKeyVerified/container') ); const CompleteSigninContainer = lazy( () => import('../../pages/Signin/CompleteSignin/container') @@ -228,7 +226,8 @@ export const App = ({ integration.data.context || '', // TODO with React pairing flow, update this if pairing flow false, - integration.data.service || '' + integration.data.service || '', + integration.data.userContextId ); } diff --git a/packages/fxa-settings/src/lib/channels/firefox.ts b/packages/fxa-settings/src/lib/channels/firefox.ts index 904c26b220c..2746fdfe0c6 100644 --- a/packages/fxa-settings/src/lib/channels/firefox.ts +++ b/packages/fxa-settings/src/lib/channels/firefox.ts @@ -63,6 +63,7 @@ type FxAStatusRequest = { service: string; // ex. 'sync' isPairing: boolean; context: string; // ex. 'fx_desktop_v3' + userContextId?: string; }; export type FxAStatusResponse = { @@ -382,7 +383,8 @@ export class Firefox extends EventTarget { async requestSignedInUser( context: string, isPairing: boolean, - service: string + service: string, + userContextId?: string ): Promise { let timeoutId: number; return Promise.race([ @@ -406,6 +408,7 @@ export class Firefox extends EventTarget { context, isPairing, service, + userContextId, }); }); }), diff --git a/packages/fxa-settings/src/models/integrations/data/data.ts b/packages/fxa-settings/src/models/integrations/data/data.ts index 0e28938dc70..4417ff5ba59 100644 --- a/packages/fxa-settings/src/models/integrations/data/data.ts +++ b/packages/fxa-settings/src/models/integrations/data/data.ts @@ -22,7 +22,11 @@ import { KeyTransforms as T, ModelDataProvider, } from '../../../lib/model-data'; -import { IsEmailOrEmpty, IsFxaRedirectToUrl, IsFxaRedirectUri } from '../../../lib/validation'; +import { + IsEmailOrEmpty, + IsFxaRedirectToUrl, + IsFxaRedirectUri, +} from '../../../lib/validation'; /** * Base integration class. Fields in this class represents data commonly accessed across many pages and is useful for various flows. @@ -115,6 +119,11 @@ export class IntegrationData extends ModelDataProvider { @IsString() @bind(T.snakeCase) flowBeginTime: string | undefined; + + @IsOptional() + @IsString() + @bind(T.snakeCase) + userContextId: string | undefined; } /**