From a419337d99c86f21755f96d03a0e770036224514 Mon Sep 17 00:00:00 2001 From: Unchained Date: Sat, 28 Mar 2026 07:27:09 +0200 Subject: [PATCH] feat: store userLanguage in checkout metadata for multi-language emails Adds userLanguage and userLocale to checkout metadata during order completion. This allows N8N workflows to detect the customer's selected language and send order confirmation emails in the correct language (sr, en, de, fr). --- src/app/[locale]/checkout/page.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/[locale]/checkout/page.tsx b/src/app/[locale]/checkout/page.tsx index cc79135..71ec887 100644 --- a/src/app/[locale]/checkout/page.tsx +++ b/src/app/[locale]/checkout/page.tsx @@ -244,7 +244,7 @@ export default function CheckoutPage() { } console.log("Step 2: Shipping method set successfully"); - console.log("Step 3: Saving phone number..."); + console.log("Step 3: Saving metadata..."); const metadataResult = await saleorClient.mutate({ mutation: CHECKOUT_METADATA_UPDATE, variables: { @@ -252,6 +252,8 @@ export default function CheckoutPage() { metadata: [ { key: "phone", value: shippingAddress.phone }, { key: "shippingPhone", value: shippingAddress.phone }, + { key: "userLanguage", value: locale }, + { key: "userLocale", value: locale }, ], }, }); @@ -316,7 +318,16 @@ export default function CheckoutPage() { }); if (emailResult.data?.checkoutEmailUpdate?.errors && emailResult.data.checkoutEmailUpdate.errors.length > 0) { - throw new Error(`Email update failed: ${emailResult.data.checkoutEmailUpdate.errors[0].message}`); + const errorMessage = emailResult.data.checkoutEmailUpdate.errors[0].message; + // Check if checkout no longer exists + if (errorMessage.includes("Couldn't resolve to a node")) { + console.error("Checkout not found, clearing cart..."); + localStorage.removeItem('cart'); + localStorage.removeItem('checkoutId'); + window.location.href = `/${locale}/products`; + return; + } + throw new Error(`Email update failed: ${errorMessage}`); } console.log("Step 1: Email updated successfully");