Skip to content

Commit cdcaa9c

Browse files
committed
Merge branch 'canary' into sync-integrations-makeswift
2 parents f506e9b + ab9f11e commit cdcaa9c

35 files changed

Lines changed: 2482 additions & 23 deletions

.changeset/huge-dryers-dig.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@bigcommerce/catalyst-core": minor
3+
---
4+
5+
Passes the shoppers consent to the checkout redirect mutation

.changeset/old-days-tan.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@bigcommerce/catalyst-core": patch
3+
---
4+
5+
Fixed issue with 301 redirect loops when `TRAILING_SLASH` is set to `false`, or when 301 redirects exist targeting the same path but with different capitalization.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@bigcommerce/catalyst-core": patch
3+
---
4+
5+
Update translations.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@bigcommerce/catalyst-core": patch
3+
---
4+
5+
Update translations.

core/app/[locale]/(default)/checkout/route.ts

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,33 @@ import { graphql } from '~/client/graphql';
99
import { redirect } from '~/i18n/routing';
1010
import { getVisitIdCookie, getVisitorIdCookie } from '~/lib/analytics/bigcommerce';
1111
import { getCartId } from '~/lib/cart';
12+
import { getConsentCookie } from '~/lib/consent-manager/cookies/server';
1213

1314
const CheckoutRedirectMutation = graphql(`
14-
mutation CheckoutRedirectMutation($cartId: String!, $visitId: UUID, $visitorId: UUID) {
15+
mutation CheckoutRedirectMutation(
16+
$cartId: String!
17+
$visitId: String!
18+
$visitorId: String!
19+
$referer: URL!
20+
$userAgent: String!
21+
$analyticsConsent: Boolean!
22+
$functionalConsent: Boolean!
23+
$targetingConsent: Boolean!
24+
) {
1525
cart {
1626
createCartRedirectUrls(
17-
input: { cartEntityId: $cartId, visitId: $visitId, visitorId: $visitorId }
27+
input: {
28+
cartEntityId: $cartId
29+
analytics: {
30+
initiator: { visitId: $visitId, visitorId: $visitorId }
31+
request: { url: $referer, userAgent: $userAgent }
32+
consent: {
33+
analytics: $analyticsConsent
34+
functional: $functionalConsent
35+
targeting: $targetingConsent
36+
}
37+
}
38+
}
1839
) {
1940
errors {
2041
... on NotFoundError {
@@ -41,11 +62,21 @@ export async function GET(req: NextRequest, { params }: { params: Promise<{ loca
4162

4263
const visitId = await getVisitIdCookie();
4364
const visitorId = await getVisitorIdCookie();
65+
const consent = await getConsentCookie();
4466

4567
try {
4668
const { data } = await client.fetch({
4769
document: CheckoutRedirectMutation,
48-
variables: { cartId, visitId, visitorId },
70+
variables: {
71+
cartId,
72+
visitId: visitId ?? '',
73+
visitorId: visitorId ?? '',
74+
analyticsConsent: consent?.preferences.measurement ?? false,
75+
functionalConsent: consent?.preferences.functionality ?? false,
76+
targetingConsent: consent?.preferences.marketing ?? false,
77+
referer: req.headers.get('referer') ?? '',
78+
userAgent: req.headers.get('user-agent') ?? '',
79+
},
4980
fetchOptions: { cache: 'no-store' },
5081
customerAccessToken,
5182
channelId,

core/messages/da.json

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,19 @@
159159
"summaryTotal": "I alt",
160160
"destination": "Destination",
161161
"destinationWithCount": "Destination {number, number}/{total, number}",
162+
"digitalDelivery": "Digital levering til {email}",
162163
"subtotal": "Subtotal",
163164
"shipping": "Forsendelse",
164165
"tax": "Moms",
165-
"orderSummary": "Ordreoversigt"
166+
"orderSummary": "Ordreoversigt",
167+
"paymentMethodsLabel": "{count, plural, =1 {Betalingsmetode} other {Betalingsmetoder}}",
168+
"paymentEndingInLabel": "Slutter på",
169+
"PaymentMethods": {
170+
"creditCard": "Kreditkort",
171+
"giftCertificate": "Gavekort",
172+
"storeCredit": "Butikskredit",
173+
"other": "Andet"
174+
}
166175
}
167176
},
168177
"Addresses": {
@@ -375,6 +384,16 @@
375384
"noShippingOptions": "Der er ingen tilgængelige forsendelsesmuligheder for din adresse"
376385
}
377386
},
387+
"GiftCertificate": {
388+
"giftCertificate": "Gavekort",
389+
"giftCertificateCode": "Gavekortkode",
390+
"removeGiftCertificate": "Fjern gavekortet",
391+
"apply": "Anvend",
392+
"to": "Til",
393+
"message": "Meddelelse",
394+
"invalidGiftCertificate": "Indtast en gyldig gavekortkode",
395+
"cartNotFound": "Der blev ikke fundet cartId-cookie."
396+
},
378397
"Empty": {
379398
"title": "Din indkøbskurv er tom.",
380399
"subtitle": "Tilføj nogle produkter for at komme i gang.",
@@ -526,6 +545,95 @@
526545
"placeholder": "Indtast din e-mailadresse",
527546
"description": "Hold dig opdateret med de seneste nyheder og tilbud fra vores butik.",
528547
"success": "Tak for din interesse! Nyhedsbrevsfunktionen kommer snart!"
548+
},
549+
"ConsentManager": {
550+
"Common": {
551+
"rejectAll": "Afvis alle",
552+
"acceptAll": "Accepter alle",
553+
"customize": "Tilpas",
554+
"save": "Gem indstillinger"
555+
},
556+
"CookieBanner": {
557+
"title": "Vi værdsætter dit privatliv",
558+
"description": "Denne hjemmeside bruger cookies til at forbedre din browseroplevelse, analysere webstedstrafik og vise personligt tilpasset indhold."
559+
},
560+
"Dialog": {
561+
"title": "Privatlivsindstillinger",
562+
"description": "Tilpas dine privatlivsindstillinger her. Du kan vælge, hvilke typer cookies og tracking-teknologier du vil tillade."
563+
},
564+
"ConsentTypes": {
565+
"necessary": {
566+
"title": "Strengt nødvendigt",
567+
"description": "Disse cookies er afgørende for, at hjemmesiden fungerer korrekt og kan ikke deaktiveres."
568+
},
569+
"functionality": {
570+
"title": "Funktionalitet",
571+
"description": "Disse cookies muliggør forbedret funktionalitet og personalisering af hjemmesiden."
572+
},
573+
"marketing": {
574+
"title": "Markedsføring",
575+
"description": "Disse cookies anvendes til at levere relevante annoncer og spore deres effektivitet."
576+
},
577+
"measurement": {
578+
"title": "Analyse",
579+
"description": "Disse cookies hjælper os med at forstå, hvordan besøgende interagerer med hjemmesiden og forbedrer dens ydeevne."
580+
},
581+
"experience": {
582+
"title": "Oplevelse",
583+
"description": "Disse cookies hjælper os med at give en bedre brugeroplevelse og teste nye funktioner."
584+
}
585+
}
586+
}
587+
},
588+
"GiftCertificates": {
589+
"title": "Gavekort",
590+
"description": "Giv den perfekte gave, der aldrig går af mode. Lad venner og familie vælge præcis, hvad de ønsker sig fra hele vores kollektion.",
591+
"purchaseLabel": "Køb nu",
592+
"checkBalanceLabel": "Tjek saldo",
593+
"expiresAtLabel": "Gyldig til",
594+
"CheckBalance": {
595+
"title": "Tjek saldo",
596+
"description": "Du kan tjekke saldoen og få oplysninger om dit gavekort ved at indtaste koden i feltet nedenfor.",
597+
"inputLabel": "Kode",
598+
"inputPlaceholder": "Indtast kode",
599+
"purchasedDateLabel": "Købt",
600+
"senderLabel": "Fra",
601+
"Errors": {
602+
"invalidCode": "Gavekortkoden, du indtastede, er ugyldig. Kontroller koden, og prøv igen.",
603+
"codeRequired": "Indtast en gavekortkode.",
604+
"somethingWentWrong": "Noget gik galt. Prøv igen senere."
605+
}
606+
},
607+
"Purchase": {
608+
"breadcrumbTitle": "Køb et gavekort",
609+
"title": "Digitalt gavekort",
610+
"description": "Udforsk vores gavekort, som er perfekte til enhver lejlighed. Vælg beløbet, og personaliser din besked.",
611+
"successMessage": "Gavekort er blevet tilføjet til <cartLink> din kurv</cartLink>",
612+
"missingCart": "Indkøbskurven blev ikke fundet. Prøv igen senere.",
613+
"unknownError": "Ukendt fejl. Prøv igen senere.",
614+
"Form": {
615+
"amountLabel": "Beløb",
616+
"customAmountLabel": "Beløb (mellem {minAmount} og {maxAmount})",
617+
"selectAmountPlaceholder": "Vælg et beløb",
618+
"customAmountPlaceholder": "Indtast et brugerdefineret beløb",
619+
"senderNameLabel": "Dit navn",
620+
"senderEmailLabel": "Din email",
621+
"recipientNameLabel": "Modtagers navn",
622+
"recipientEmailLabel": "Modtagers e-mail",
623+
"namePlaceholder": "Indtast navn",
624+
"emailPlaceholder": "Indtast e-mail",
625+
"messageLabel": "Meddelelse",
626+
"messagePlaceholder": "Indtast din besked (valgfrit)",
627+
"nonRefundableCheckboxLabel": "Jeg accepterer, at gavekort ikke kan refunderes",
628+
"expiryCheckboxLabel": "Jeg accepterer, at dette gavekort udløber den {expiryDate}",
629+
"ctaLabel": "Føj til kurv",
630+
"Errors": {
631+
"amountRequired": "Vælg eller indtast et gavekortbeløb.",
632+
"amountInvalid": "Vælg et gyldigt gavekortbeløb.",
633+
"amountOutOfRange": "Indtast et beløb mellem {minAmount} og {maxAmount}.",
634+
"unexpectedSettingsError": "Der opstod en uventet fejl under hentning af indstillingerne for gavekort. Prøv igen senere."
635+
}
636+
}
529637
}
530638
}
531639
}

core/messages/de.json

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,19 @@
159159
"summaryTotal": "Summe",
160160
"destination": "Zielort",
161161
"destinationWithCount": "Zielort {Nummer, Nummer}/{Gesamt, Nummer}",
162+
"digitalDelivery": "Digitale Lieferung an {email}",
162163
"subtotal": "Zwischensumme",
163164
"shipping": "Versand",
164165
"tax": "Steuern",
165-
"orderSummary": "Bestellübersicht"
166+
"orderSummary": "Bestellübersicht",
167+
"paymentMethodsLabel": "{count, plural, =1 {Zahlungsmethode} other {Zahlungsmethoden}}",
168+
"paymentEndingInLabel": "Endet auf",
169+
"PaymentMethods": {
170+
"creditCard": "Kreditkarte",
171+
"giftCertificate": "Geschenkgutschein",
172+
"storeCredit": "Shop-Guthaben",
173+
"other": "Sonstige"
174+
}
166175
}
167176
},
168177
"Addresses": {
@@ -375,6 +384,16 @@
375384
"noShippingOptions": "Für Ihre Adresse sind keine Versandoptionen verfügbar"
376385
}
377386
},
387+
"GiftCertificate": {
388+
"giftCertificate": "Geschenkgutschein",
389+
"giftCertificateCode": "Geschenkgutscheincode",
390+
"removeGiftCertificate": "Geschenkgutschein entfernen",
391+
"apply": "Anwenden",
392+
"to": "Nach",
393+
"message": "Nachricht",
394+
"invalidGiftCertificate": "Bitte geben Sie einen gültigen Geschenkgutscheincode ein.",
395+
"cartNotFound": "Kein cartId-Cookie gefunden."
396+
},
378397
"Empty": {
379398
"title": "Ihr Warenkorb ist leer.",
380399
"subtitle": "Fügen Sie einige Produkte hinzu, um zu beginnen.",
@@ -526,6 +545,95 @@
526545
"placeholder": "Geben Sie Ihre E-Mail-Adresse ein",
527546
"description": "Bleiben Sie auf dem Laufenden über die aktuellen Neuigkeiten und Angebote in unserem Shop.",
528547
"success": "Vielen Dank für Ihr Interesse! Die Newsletter-Funktion wird in Kürze verfügbar sein!"
548+
},
549+
"ConsentManager": {
550+
"Common": {
551+
"rejectAll": "Alle ablehnen",
552+
"acceptAll": "Alle akzeptieren",
553+
"customize": "Benutzerdefiniert anpassen",
554+
"save": "Einstellungen speichern"
555+
},
556+
"CookieBanner": {
557+
"title": "Wir respektieren Ihre Privatsphäre.",
558+
"description": "Diese Website verwendet Cookies, um Ihr Surferlebnis zu verbessern, den Website-Traffic zu analysieren und personalisierte Inhalte anzuzeigen."
559+
},
560+
"Dialog": {
561+
"title": "Datenschutzeinstellungen",
562+
"description": "Passen Sie hier Ihre Datenschutzeinstellungen an. Sie können auswählen, welche Arten von Cookies und Tracking-Technologien Sie zulassen möchten."
563+
},
564+
"ConsentTypes": {
565+
"necessary": {
566+
"title": "Unbedingt notwendig",
567+
"description": "Diese Cookies sind für die ordnungsgemäße Funktion der Website unbedingt erforderlich und können nicht deaktiviert werden."
568+
},
569+
"functionality": {
570+
"title": "Funktionalität",
571+
"description": "Diese Cookies ermöglichen erweiterte Funktionalität und Personalisierung der Website."
572+
},
573+
"marketing": {
574+
"title": "Marketing",
575+
"description": "Diese Cookies werden verwendet, um relevante Werbung zu liefern und deren Wirksamkeit zu verfolgen."
576+
},
577+
"measurement": {
578+
"title": "Analysen",
579+
"description": "Diese Cookies helfen uns zu verstehen, wie Besucher mit der Website interagieren und ihre Leistung zu verbessern."
580+
},
581+
"experience": {
582+
"title": "Erlebnis",
583+
"description": "Diese Cookies helfen uns, eine bessere Benutzererfahrung zu bieten und neue Funktionen zu testen."
584+
}
585+
}
586+
}
587+
},
588+
"GiftCertificates": {
589+
"title": "Geschenkgutscheine",
590+
"description": "Verschenken Sie das perfekte Geschenk, das nie aus der Mode kommt. Lassen Sie Freunde und Bekannte aus unserer gesamten Kollektion genau das auswählen, was sie wollen.",
591+
"purchaseLabel": "Jetzt shoppen",
592+
"checkBalanceLabel": "Guthaben abfragen",
593+
"expiresAtLabel": "Gültig bis",
594+
"CheckBalance": {
595+
"title": "Guthaben abfragen",
596+
"description": "Sie können das Guthaben überprüfen und Informationen zu Ihrem Geschenkgutschein erhalten, indem Sie den Code in das Feld unten eingeben.",
597+
"inputLabel": "Code",
598+
"inputPlaceholder": "Code eingeben",
599+
"purchasedDateLabel": "Gekauft",
600+
"senderLabel": "Von",
601+
"Errors": {
602+
"invalidCode": "Der von Ihnen eingegebene Geschenkgutscheincode ist ungültig. Bitte überprüfen Sie den Code und versuchen Sie es erneut.",
603+
"codeRequired": "Bitte geben Sie einen Geschenkgutscheincode ein.",
604+
"somethingWentWrong": "Es ist etwas schiefgegangen Bitte versuchen Sie es später erneut."
605+
}
606+
},
607+
"Purchase": {
608+
"breadcrumbTitle": "Einen Geschenkgutschein kaufen",
609+
"title": "Digitaler Geschenkgutschein",
610+
"description": "Entdecken Sie unsere Geschenkgutscheine – perfekt für jeden Anlass. Wählen Sie den Betrag und personalisieren Sie Ihre Nachricht.",
611+
"successMessage": "Der Geschenkgutschein wurde <cartLink> Ihrem Warenkorb</cartLink> hinzugefügt.",
612+
"missingCart": "Warenkorb nicht gefunden. Bitte versuchen Sie es später erneut.",
613+
"unknownError": "Unbekannter Fehler. Bitte versuchen Sie es später erneut.",
614+
"Form": {
615+
"amountLabel": "Betrag",
616+
"customAmountLabel": "Betrag (zwischen {minAmount} und {maxAmount})",
617+
"selectAmountPlaceholder": "Wählen Sie einen Betrag aus",
618+
"customAmountPlaceholder": "Geben Sie einen Benutzer: innen definierten Betrag ein",
619+
"senderNameLabel": "Ihr Name",
620+
"senderEmailLabel": "Ihre E-Mail-Adresse",
621+
"recipientNameLabel": "Name des Empfängers",
622+
"recipientEmailLabel": "E-Mail-Adresse des Empfängers",
623+
"namePlaceholder": "Geben Sie den Namen ein",
624+
"emailPlaceholder": "E-Mail-Adresse eingeben",
625+
"messageLabel": "Nachricht",
626+
"messagePlaceholder": "Geben Sie Ihre Nachricht ein (optional)",
627+
"nonRefundableCheckboxLabel": "Ich erkläre mich damit einverstanden, dass Geschenkgutscheine nicht erstattungsfähig sind",
628+
"expiryCheckboxLabel": "Ich bestätige, dass dieser Geschenkgutschein am {expiryDate} abläuft.",
629+
"ctaLabel": "Zum Warenkorb hinzufügen",
630+
"Errors": {
631+
"amountRequired": "Bitte wählen Sie einen Geschenkgutscheinbetrag aus oder geben Sie ihn ein.",
632+
"amountInvalid": "Bitte wählen Sie einen gültigen Betrag für diesen Geschenkgutschein aus.",
633+
"amountOutOfRange": "Bitte geben Sie einen Betrag zwischen {minAmount} und {maxAmount} ein.",
634+
"unexpectedSettingsError": "Beim Abrufen der Geschenkgutscheineinstellungen ist ein unerwarteter Fehler aufgetreten. Bitte versuchen Sie es später erneut."
635+
}
636+
}
529637
}
530638
}
531639
}

0 commit comments

Comments
 (0)