diff --git a/src/data/models/multis/Redirect.ts b/src/data/models/multis/Redirect.ts index 915be57..7fa6283 100644 --- a/src/data/models/multis/Redirect.ts +++ b/src/data/models/multis/Redirect.ts @@ -3,4 +3,5 @@ import type { NonLocalized } from "../../internals/NonLocalizedT"; export interface Redirect { prevSlug: NonLocalized, newContent: NonLocalized, + newContentSchema: NonLocalized<{ schemaName: string }[]>, } \ No newline at end of file diff --git a/src/pages/[...routeLookup].astro b/src/pages/[...routeLookup].astro index 665d849..1ec9485 100644 --- a/src/pages/[...routeLookup].astro +++ b/src/pages/[...routeLookup].astro @@ -87,27 +87,24 @@ else { const redirectDto = await getRedirectsByPreviousSlug(routeLookup!); console.log("redirectDto:", redirectDto); if (redirectDto && redirectDto.items && redirectDto.items.length > 0) { - console.log("getting redirectReferencesDto for", SCHEMAS.REDIRECTS, redirectDto.items[0].id); + console.log("getting redirectReferencesDto for", SCHEMAS.REDIRECTS, redirectDto.items[0].data?.newContentSchema[locale]); + // let objectId = redirectDto.items[0].data.newContent[locale]; //next line crashes: - let redirectReferencesDto = await client.contents.getReferences({ schema: SCHEMAS.REDIRECTS, id: redirectDto.items[0].id }); - console.log("redirectReferencesDto:", redirectReferencesDto); + // let redirectReferencesDto = await client.contents.getReferences({ schema: SCHEMAS.REDIRECTS, id: redirectDto.items[0].id }); + let schemaName = redirectDto.items[0].data?.newContentSchema[locale][0].schemaName; + let whicheverDto = await client.contents.getContent({schema: schemaName, id: redirectDto.items[0].data?.newContent[locale][0]}); + // console.log("redirectReferencesDto:", redirectReferencesDto); // client.contents.getConten - // switch (redirectDto.items[0].data?.referenceSchema.iv) { - // case SCHEMAS.BRANDS: - // return Astro.rewrite(`/view/brands/${locale}/${objectId}`); - // case SCHEMAS.MARKETPLACES: - // return Astro.rewrite(`/view/marketplaces/${locale}/${objectId}`); - // case SCHEMAS.PAGES: - // return Astro.rewrite(`/view/pages/${locale}/${objectId}`); - // case SCHEMAS.PRODUCT_CATEGORIES: - // return Astro.rewrite(`/view/product-categories/${locale}/${objectId}`); - // case SCHEMAS.PRODUCTS: - // return Astro.rewrite(`/view/products/${locale}/${objectId}`); - // case SCHEMAS.SELLERS: - // return Astro.rewrite(`/view/sellers/${locale}/${objectId}`); - // } - // Astro.response.headers.set('Vary', 'Accept-Language'); - // return Astro.redirect(,303) + switch (schemaName) { + case SCHEMAS.BRANDS: + case SCHEMAS.MARKETPLACES: + case SCHEMAS.PAGES: + case SCHEMAS.PRODUCT_CATEGORIES: + case SCHEMAS.PRODUCTS: + case SCHEMAS.SELLERS: + Astro.response.headers.set('Vary', 'Accept-Language'); + return Astro.redirect(`/${whicheverDto.data.slug[locale]}`, 303); + } } return redirect404NotFound(); }