Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DEV-1962] implement urlreplacemap #1180

Merged
merged 27 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1634b99
add url replace map single type
MarBert Sep 24, 2024
c3f272b
add changeset
MarBert Sep 24, 2024
c0093d2
refactor for linting
MarBert Sep 24, 2024
e9dfb8d
add codec, fetch and make for urlreplacemap
MarBert Sep 25, 2024
3bfc82e
add required to url
MarBert Sep 25, 2024
8606f2a
Merge branch 'DEV-1950-add-urlreplacemap-to-strapi' into DEV-1951-add…
MarBert Sep 25, 2024
c700529
test, populate, refactor
petros-double-test1 Sep 30, 2024
9147ad0
Merge branch 'main' into DEV-1951-add-urlreplacemap-codec
tommaso1 Sep 30, 2024
7944f3d
Merge branch 'main' into DEV-1951-add-urlreplacemap-codec
MarBert Oct 3, 2024
cbe017e
add dictionary merge, replace old map with new one
MarBert Oct 3, 2024
7a18863
fixes required by review
MarBert Oct 9, 2024
c5aa05f
Merge branch 'main' into DEV-1962-implement-urlreplacemap
MarBert Oct 9, 2024
d9f206e
merge with main
MarBert Oct 9, 2024
70aa257
Delete .changeset/healthy-cobras-type.md
MarBert Oct 10, 2024
3ca5497
fix issue with populate
MarBert Oct 10, 2024
0afe7e9
fix issue with generated path
MarBert Oct 10, 2024
73f6ff8
add changeset
MarBert Oct 10, 2024
c0a5a94
Merge branch 'main' into DEV-1962-implement-urlreplacemap
MarBert Oct 10, 2024
a846778
Merge branch 'DEV-1962-implement-urlreplacemap' of github.com:pagopa/…
MarBert Oct 10, 2024
8d6ade2
fix tests
MarBert Oct 10, 2024
7aad2d0
fixes requested by review
MarBert Oct 11, 2024
347267d
rename urlreplacesmap to urlreplacemap
MarBert Oct 11, 2024
599fb19
refactor as requested
MarBert Oct 11, 2024
0b074ba
Update apps/nextjs-website/src/lib/cmsApi.ts
MarBert Oct 11, 2024
315e32e
Merge branch 'main' into DEV-1962-implement-urlreplacemap
marcobottaro Oct 11, 2024
b94add9
Merge branch 'main' into DEV-1962-implement-urlreplacemap
marcobottaro Oct 11, 2024
e330123
Merge branch 'main' into DEV-1962-implement-urlreplacemap
marcobottaro Oct 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/orange-beans-drop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"nextjs-website": minor
---

Update url mapping for documentation
2 changes: 1 addition & 1 deletion apps/nextjs-website/src/_contents/products.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export const spaceToPrefixMap = pipe(
/**
* Contains the mapping between the docs.pagopa.it url and the developer portal url.
*/
export const urlReplacesMap: { readonly [url: string]: string } = {
export const staticUrlReplaceMap: { readonly [url: string]: string } = {
// App IO
'https://docs.pagopa.it/io-guida-tecnica-1.3/':
'/app-io/guides/io-guida-tecnica/v1.3',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@ import ProductLayout, {
import { getGuide, getProductGuidePath } from '@/lib/api';
import { Product } from '@/lib/types/product';
import React from 'react';
import {
gitBookPagesWithTitle,
spaceToPrefixMap,
urlReplacesMap,
} from '@/_contents/products';
import { gitBookPagesWithTitle, spaceToPrefixMap } from '@/_contents/products';
import { ParseContentConfig } from 'gitbook-docs/parseContent';
import { Metadata } from 'next';
import {
Expand All @@ -17,7 +13,7 @@ import {
} from '@/helpers/metadata.helpers';
import GitBookTemplate from '@/components/templates/GitBookTemplate/GitBookTemplate';
import { productPageToBreadcrumbs } from '@/helpers/breadcrumbs.helpers';
import { getGuidesProps } from '@/lib/cmsApi';
import { getGuidesProps, getUrlReplaceMapProps } from '@/lib/cmsApi';
import { generateStructuredDataScripts } from '@/helpers/generateStructuredDataScripts.helpers';
import {
breadcrumbItemByProduct,
Expand Down Expand Up @@ -81,7 +77,7 @@ const Page = async ({ params }: { params: Params }) => {
params?.productSlug,
params?.productGuidePage ?? ['']
);

const urlReplaceMap = await getUrlReplaceMapProps();
const { product, page, guide, version, versions, source, bannerLinks, seo } =
guideProps;
const props: ProductGuidePageProps = {
Expand All @@ -98,7 +94,7 @@ const Page = async ({ params }: { params: Params }) => {
assetsPrefix: source.assetsPrefix,
gitBookPagesWithTitle,
spaceToPrefix: spaceToPrefixMap,
urlReplaces: urlReplacesMap,
urlReplaces: urlReplaceMap,
},
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ import {
import { Product } from '@/lib/types/product';
import GitBookContent from '@/components/organisms/GitBookContent/GitBookContent';
import { Box } from '@mui/material';
import {
gitBookPagesWithTitle,
spaceToPrefixMap,
urlReplacesMap,
} from '@/_contents/products';
import { gitBookPagesWithTitle, spaceToPrefixMap } from '@/_contents/products';
import { ParseContentConfig } from 'gitbook-docs/parseContent';
import { Metadata } from 'next';
import {
Expand All @@ -34,6 +30,7 @@ import {
breadcrumbItemByProduct,
productToBreadcrumb,
} from '@/helpers/structuredData.helpers';
import { getUrlReplaceMapProps } from '@/lib/cmsApi';

type Params = {
productSlug: string;
Expand Down Expand Up @@ -124,6 +121,7 @@ const Page = async ({ params }: { params: Params }) => {
);
}

const urlReplaceMap = await getUrlReplaceMapProps();
const tutorialProps = await getStaticTutorial(productSlug, [tutorialPath]);
const { product, page, bannerLinks, source, relatedLinks } = tutorialProps;
const props: ProductTutorialPageProps = {
Expand All @@ -137,7 +135,7 @@ const Page = async ({ params }: { params: Params }) => {
assetsPrefix: source.assetsPrefix,
gitBookPagesWithTitle,
spaceToPrefix: spaceToPrefixMap,
urlReplaces: urlReplacesMap,
urlReplaces: urlReplaceMap,
},
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
import React from 'react';
import {
gitBookPagesWithTitle,
spaceToPrefixMap,
urlReplacesMap,
} from '@/_contents/products';
import { gitBookPagesWithTitle, spaceToPrefixMap } from '@/_contents/products';
import { Metadata } from 'next';
import { makeMetadata } from '@/helpers/metadata.helpers';
import { getSolutionDetail, getSolutionSubPaths } from '@/lib/api';
import GitBookTemplate from '@/components/templates/GitBookTemplate/GitBookTemplate';
import { pageToBreadcrumbs } from '@/helpers/breadcrumbs.helpers';
import { ParseContentConfig } from 'gitbook-docs/parseContent';
import { getSolutionsProps } from '@/lib/cmsApi';
import { getSolutionsProps, getUrlReplaceMapProps } from '@/lib/cmsApi';
import { SolutionTemplateProps } from '@/components/templates/SolutionTemplate/SolutionTemplate';
import { generateStructuredDataScripts } from '@/helpers/generateStructuredDataScripts.helpers';
import { getItemFromPaths } from '@/helpers/structuredData.helpers';
Expand Down Expand Up @@ -64,6 +60,7 @@ const Page = async ({ params }: { params: Params }) => {
params?.solutionSubPathSlugs
);

const urlReplaceMap = await getUrlReplaceMapProps();
if (!solutionProps) {
return null;
}
Expand All @@ -79,7 +76,7 @@ const Page = async ({ params }: { params: Params }) => {
assetsPrefix: source.assetsPrefix,
gitBookPagesWithTitle,
spaceToPrefix: spaceToPrefixMap,
urlReplaces: urlReplacesMap,
urlReplaces: urlReplaceMap,
},
};

Expand Down
20 changes: 20 additions & 0 deletions apps/nextjs-website/src/lib/cmsApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
overviews,
products,
quickStartGuides,
staticUrlReplaceMap,
tutorialLists,
} from '@/_contents/products';
import { makeCaseHistoriesProps } from './strapi/makeProps/makeCaseHistories';
Expand All @@ -47,6 +48,9 @@ import { fetchOverviews } from '@/lib/strapi/fetches/fetchOverviews';
import { makeOverviewsProps } from '@/lib/strapi/makeProps/makeOverviews';
import { fetchTutorialListPages } from './strapi/fetches/fetchTutorialListPages';
import { makeTutorialListPagesProps } from './strapi/makeProps/makeTutorialListPages';
import { fetchUrlReplaceMap } from './strapi/fetches/fetchUrlReplaceMap';
import build from 'next/dist/build';
import { makeUrlReplaceMap } from './strapi/makeProps/makeUrlReplaceMap';

// a BuildEnv instance ready to be used
const buildEnv = pipe(
Expand Down Expand Up @@ -136,6 +140,22 @@ export const getQuickStartGuidesProps = async () => {
}
};

export const getUrlReplaceMapProps = async () => {
const {
config: { FETCH_FROM_STRAPI: fetchFromStrapi },
} = buildEnv;

if (fetchFromStrapi) {
const urlReplaceMap = await fetchUrlReplaceMap(buildEnv);
return Object.assign(
{},
staticUrlReplaceMap,
makeUrlReplaceMap(urlReplaceMap)
);
MarBert marked this conversation as resolved.
Show resolved Hide resolved
}
MarBert marked this conversation as resolved.
Show resolved Hide resolved
return staticUrlReplaceMap;
};

export const getApiDataListPagesProps = async () => {
const {
config: { FETCH_FROM_STRAPI: fetchFromStrapi },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { UrlReplaceMapCodec } from '../codecs/UrlReplaceMapCodec';
import * as Either from 'fp-ts/lib/Either';
import { pipe } from 'fp-ts/lib/function';
import { UrlReplaceMapCodec } from '../codecs/UrlReplaceMapCodec';
import { productJson } from './fixtures/product';
import { makeUrlReplaceMap } from '../makeProps/makeUrlReplaceMap';
import { pipe } from 'fp-ts/lib/function';
import { mediaRasterJson } from './fixtures/media';

const strapiResponse = {
Expand Down Expand Up @@ -73,7 +73,7 @@ describe('UrlReplaceMapCodec', () => {
const urlReplaceMap = makeUrlReplaceMap(result!);

expect(urlReplaceMap).toEqual({
aaaa: 'firma-con-io/guides/aaaa/2',
aaaa: '/firma-con-io/guides/aaaa/2',
});
});
});
30 changes: 19 additions & 11 deletions apps/nextjs-website/src/lib/strapi/fetches/fetchUrlReplaceMap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,25 @@ import qs from 'qs';

const makeStrapiUrlReplaceMapPopulate = () =>
qs.stringify({
populate: [
'urlToGuide.guide.*',
'urlToGuide.guide.image',
'urlToGuide.guide.mobileImage',
'urlToGuide.guide.listItems',
'urlToGuide.guide.product.*',
'urlToGuide.guide.versions.*',
'urlToGuide.guide.seo.*',
'urlToGuide.guide.product.bannerLinks.*',
'urlToGuide.guide.product.bannerLinks.icon',
],
populate: {
urlToGuide: {
populate: {
guide: {
populate: [
'image',
'mobileImage',
'listItems',
'versions',
'bannerLinks.icon',
'seo',
'seo.metaSocial.image',
'product.logo',
'product.bannerLinks.icon',
],
},
},
},
},
MarBert marked this conversation as resolved.
Show resolved Hide resolved
});

export const fetchUrlReplaceMap = fetchFromStrapi(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@ export type UrlReplaceMap = Record<string, string>;
export function makeUrlReplaceMap(
urlReplacemap: StrapiUrlReplaceMap
): UrlReplaceMap {
const map = urlReplacemap.data.attributes.urlToGuide.reduce((map, obj) => {
return urlReplacemap.data.attributes.urlToGuide.reduce((map, obj) => {
return {
...map,
[obj.url]: `${
[obj.url]: `/${
obj.guide.data?.attributes.product.data.attributes.slug
}/guides/${obj.guide.data?.attributes.slug}${
obj.version ? `/${obj.version}` : ''
}`,
};
}, {} as UrlReplaceMap);
return map;
}
Loading