From 577bfbe6c56ab29812075a040303549a69ddb78f Mon Sep 17 00:00:00 2001 From: Brion Date: Wed, 17 Dec 2025 16:22:23 +0530 Subject: [PATCH 1/2] Enhance flow response handling: add resolveTranslations option to normalizeFlowResponse and transformComponents --- .../presentation/auth/SignIn/v2/SignIn.tsx | 8 +++++-- .../auth/SignUp/v2/BaseSignUp.tsx | 3 ++- .../react/src/utils/v2/flowTransformer.ts | 22 ++++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/react/src/components/presentation/auth/SignIn/v2/SignIn.tsx b/packages/react/src/components/presentation/auth/SignIn/v2/SignIn.tsx index 34aa44b6d..71e639f73 100644 --- a/packages/react/src/components/presentation/auth/SignIn/v2/SignIn.tsx +++ b/packages/react/src/components/presentation/auth/SignIn/v2/SignIn.tsx @@ -396,7 +396,9 @@ const SignIn: FC = ({className, size = 'medium', onSuccess, onError return; } - const {flowId, components} = normalizeFlowResponse(response, t); + const {flowId, components} = normalizeFlowResponse(response, t, { + resolveTranslations: !children, + }); if (flowId && components) { setFlowId(flowId); @@ -448,7 +450,9 @@ const SignIn: FC = ({className, size = 'medium', onSuccess, onError return; } - const {flowId, components} = normalizeFlowResponse(response, t); + const {flowId, components} = normalizeFlowResponse(response, t, { + resolveTranslations: !children, + }); // Handle Error flow status - flow has failed and is invalidated if (response.flowStatus === EmbeddedSignInFlowStatusV2.Error) { diff --git a/packages/react/src/components/presentation/auth/SignUp/v2/BaseSignUp.tsx b/packages/react/src/components/presentation/auth/SignUp/v2/BaseSignUp.tsx index 7338462b1..1766c10e7 100644 --- a/packages/react/src/components/presentation/auth/SignUp/v2/BaseSignUp.tsx +++ b/packages/react/src/components/presentation/auth/SignUp/v2/BaseSignUp.tsx @@ -302,6 +302,7 @@ const BaseSignUpContent: FC = ({ try { const {components} = normalizeFlowResponse(response, t, { defaultErrorKey: 'components.signUp.errors.generic', + resolveTranslations: !children, }); return { @@ -320,7 +321,7 @@ const BaseSignUpContent: FC = ({ // Return as-is if no transformation needed return response; }, - [t], + [t, children], ); /** diff --git a/packages/react/src/utils/v2/flowTransformer.ts b/packages/react/src/utils/v2/flowTransformer.ts index b9dc6d208..5a3964f83 100644 --- a/packages/react/src/utils/v2/flowTransformer.ts +++ b/packages/react/src/utils/v2/flowTransformer.ts @@ -72,25 +72,35 @@ export interface FlowTransformOptions { * @default 'errors.flow.generic' */ defaultErrorKey?: string; + /** + * Whether to resolve translation strings or keep them as i18n keys + * @default true + */ + resolveTranslations?: boolean; } /** * Transform and resolve translations in components from flow response. - * This function extracts components from the response meta structure and resolves + * This function extracts components from the response meta structure and optionally resolves * any translation strings within them. * * @param response - The flow response object containing components in meta structure * @param t - Translation function from useTranslation hook - * @returns Array of flow components with resolved translations + * @param resolveTranslations - Whether to resolve translation strings or keep them as i18n keys (default: true) + * @returns Array of flow components with resolved or unresolved translations */ -export const transformComponents = (response: any, t: UseTranslation['t']): EmbeddedFlowComponent[] => { +export const transformComponents = ( + response: any, + t: UseTranslation['t'], + resolveTranslations: boolean = true, +): EmbeddedFlowComponent[] => { if (!response?.data?.meta?.components) { return []; } const components: EmbeddedFlowComponent[] = response.data.meta.components; - return resolveTranslationsInArray(components, t); + return resolveTranslations ? resolveTranslationsInArray(components, t) : components; }; /** @@ -154,7 +164,7 @@ export const normalizeFlowResponse = ( flowId: string; components: EmbeddedFlowComponent[]; } => { - const {throwOnError = true, defaultErrorKey = 'errors.flow.generic'} = options; + const {throwOnError = true, defaultErrorKey = 'errors.flow.generic', resolveTranslations = true} = options; // Check if this is an error response const errorMessage: string | null = checkForErrorResponse(response, t, defaultErrorKey); @@ -166,6 +176,6 @@ export const normalizeFlowResponse = ( return { flowId: response.flowId, - components: transformComponents(response, t), + components: transformComponents(response, t, resolveTranslations), }; }; From c68d138daada8224d3a4880a732ddf9f9086e758 Mon Sep 17 00:00:00 2001 From: Brion Date: Wed, 17 Dec 2025 16:23:13 +0530 Subject: [PATCH 2/2] =?UTF-8?q?Add=20changeset=20=F0=9F=A6=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/moody-pens-look.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/moody-pens-look.md diff --git a/.changeset/moody-pens-look.md b/.changeset/moody-pens-look.md new file mode 100644 index 000000000..761a28525 --- /dev/null +++ b/.changeset/moody-pens-look.md @@ -0,0 +1,5 @@ +--- +'@asgardeo/react': patch +--- + +Stop resolving `i18n` for render props