From 9b56fec49308232509e6a83765a0e5e8dea48952 Mon Sep 17 00:00:00 2001 From: lukaskratzel Date: Wed, 25 Feb 2026 17:30:40 +0100 Subject: [PATCH] Add situation config to connect append component --- .../src/components/append/AppendInitScreen.tsx | 10 ++++++++-- packages/types/src/connect/config.ts | 1 + packages/web-core/src/services/ConnectService.ts | 15 +++++++++++---- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/packages/connect-react/src/components/append/AppendInitScreen.tsx b/packages/connect-react/src/components/append/AppendInitScreen.tsx index c4a8dc66..d30b0912 100644 --- a/packages/connect-react/src/components/append/AppendInitScreen.tsx +++ b/packages/connect-react/src/components/append/AppendInitScreen.tsx @@ -80,7 +80,7 @@ const AppendInitScreen = () => { getConnectService().setInvitation(invitationToken); } - const res = await getConnectService().appendInit(ac); + const res = await getConnectService().appendInit(ac, config.situation); if (res.err) { if (res.val.type === ConnectErrorType.Cancel) { return; @@ -107,7 +107,13 @@ const AppendInitScreen = () => { return handleSituation(AppendSituationCode.CtApiNotAvailablePreAuthenticator); } - const startAppendRes = await getConnectService().startAppend(appendToken, loadedMs, ac); + const startAppendRes = await getConnectService().startAppend( + appendToken, + loadedMs, + ac, + undefined, + config.situation, + ); if (startAppendRes.err) { if (startAppendRes.val.type === ConnectErrorType.Cancel) { return; diff --git a/packages/types/src/connect/config.ts b/packages/types/src/connect/config.ts index 6f0500bf..c45ce6c0 100644 --- a/packages/types/src/connect/config.ts +++ b/packages/types/src/connect/config.ts @@ -26,6 +26,7 @@ export type CorbadoConnectAppendConfig = { onError?(error: string): void; onSkip(status: AppendStatus): Promise; onComplete(status: AppendStatus, clientState: string): Promise; + situation?: string; }; export type AppendStatus = 'skip-implicit' | 'skip-explicit' | 'complete' | 'complete-noop'; diff --git a/packages/web-core/src/services/ConnectService.ts b/packages/web-core/src/services/ConnectService.ts index 475369f8..be285bf7 100644 --- a/packages/web-core/src/services/ConnectService.ts +++ b/packages/web-core/src/services/ConnectService.ts @@ -350,7 +350,10 @@ export class ConnectService { return loginFinishResp; } - async appendInit(abortController: AbortController): Promise> { + async appendInit( + abortController: AbortController, + situation?: string, + ): Promise> { const existingProcess = ConnectProcess.loadFromStorage(this.#projectId); if (existingProcess) { log.debug('process exists, preparing api clients'); @@ -363,7 +366,10 @@ export class ConnectService { } } - const { req, flags } = await this.#getInitReq(); + const { req, flags } = await this.#getInitReq(); + if (situation) { + req.situation = situation; + } const res = await this.wrapWithErr(() => this.#connectApi.connectAppendInit(req, { signal: abortController.signal }), ); @@ -419,15 +425,16 @@ export class ConnectService { loadedMs: number, abortController?: AbortController, initiatedByUser?: boolean, + situation?: string, ): Promise> { - const existingProcess = await this.#getExistingProcess(() => this.appendInit(new AbortController())); + const existingProcess = await this.#getExistingProcess(() => this.appendInit(new AbortController(), situation)); if (!existingProcess) { return Err(new ConnectError(ConnectErrorType.MissingInit)); } return this.wrapWithErr(() => this.#connectApi.connectAppendStart( - { appendTokenValue: appendTokenValue, forcePasskeyAppend: initiatedByUser, loadedMs }, + { appendTokenValue, forcePasskeyAppend: initiatedByUser, loadedMs, situation }, abortController && { signal: abortController.signal }, ), );