Skip to content

Commit 35ca0a4

Browse files
committed
refactor(frontend): abstract get metadata
1 parent 7a0b015 commit 35ca0a4

File tree

9 files changed

+37
-98
lines changed

9 files changed

+37
-98
lines changed

frontend/src/app/community/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,11 @@ import type { Metadata } from "next";
33
import CommunitiesSection from "@/components/Community/CommunitiesSection";
44
import Hero from "@/components/Community/hero";
55
import { heroQuery, HeroQueryType } from "@/queries/community/hero";
6-
import { seoQuery, SEOQueryType } from "@/queries/seo";
76
import { request } from "@/utils/graphQLClient";
7+
import { getPageMetadata } from "@/utils/seo";
88

99
export const generateMetadata = async (): Promise<Metadata> => {
10-
const seoData = await request<SEOQueryType>(seoQuery);
11-
const { title, description, image } = seoData.communityPageSeo.SEO;
12-
return {
13-
title,
14-
description,
15-
openGraph: {
16-
title,
17-
description,
18-
images: image.url,
19-
},
20-
};
10+
return await getPageMetadata("communityPageSeo");
2111
};
2212

2313
const Community: React.FC = async () => {

frontend/src/app/cooperative/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,11 @@ import {
1212
cooperativePageReportQuery,
1313
CooperativePageReportQueryType,
1414
} from "@/queries/cooperative/report-section";
15-
import { seoQuery, SEOQueryType } from "@/queries/seo";
1615
import { request } from "@/utils/graphQLClient";
16+
import { getPageMetadata } from "@/utils/seo";
1717

1818
export const generateMetadata = async (): Promise<Metadata> => {
19-
const seoData = await request<SEOQueryType>(seoQuery);
20-
const { title, description, image } = seoData.cooperativePageSeo.SEO;
21-
return {
22-
title,
23-
description,
24-
openGraph: {
25-
title,
26-
description,
27-
images: image.url,
28-
},
29-
};
19+
return await getPageMetadata("cooperativePageSeo");
3020
};
3121

3222
const Cooperative: React.FC = async () => {

frontend/src/app/earn/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,11 @@ import Hero from "@/components/Earn/Hero";
44
import TabSection from "@/components/Earn/TabSection";
55
import { heroQuery, HeroQueryType } from "@/queries/earn/hero";
66
import { tabSectionQuery, TabSectionQueryType } from "@/queries/earn/tabs-data";
7-
import { seoQuery, SEOQueryType } from "@/queries/seo";
87
import { request } from "@/utils/graphQLClient";
8+
import { getPageMetadata } from "@/utils/seo";
99

1010
export const generateMetadata = async (): Promise<Metadata> => {
11-
const seoData = await request<SEOQueryType>(seoQuery);
12-
const { title, description, image } = seoData.earnPageSeo.SEO;
13-
return {
14-
title,
15-
description,
16-
openGraph: {
17-
title,
18-
description,
19-
images: image.url,
20-
},
21-
};
11+
return await getPageMetadata("earnPageSeo");
2212
};
2313

2414
const Earn: React.FC = async () => {

frontend/src/app/for-builders/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,11 @@ import {
88
useCasesQuery,
99
UseCasesQueryType,
1010
} from "@/queries/for-builders/use-cases";
11-
import { seoQuery, SEOQueryType } from "@/queries/seo";
1211
import { request } from "@/utils/graphQLClient";
12+
import { getPageMetadata } from "@/utils/seo";
1313

1414
export const generateMetadata = async (): Promise<Metadata> => {
15-
const seoData = await request<SEOQueryType>(seoQuery);
16-
const { title, description, image } = seoData.forBuildersPageSeo.SEO;
17-
return {
18-
title,
19-
description,
20-
openGraph: {
21-
title,
22-
description,
23-
images: image.url,
24-
},
25-
};
15+
return await getPageMetadata("forBuildersPageSeo");
2616
};
2717

2818
const ForBuilders: React.FC = async () => {

frontend/src/app/for-lawyers/page.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type { Metadata } from "next";
22

3-
import { seoQuery, SEOQueryType } from "@/queries/seo";
4-
import { request } from "@/utils/graphQLClient";
3+
import { getPageMetadata } from "@/utils/seo";
54

65
import Hero from "./components/Hero";
76
import KlerosDisputeResolutionSection from "./components/KlerosDisputeResolutionSection";
@@ -11,17 +10,7 @@ import KlerosMediationSection from "./components/KlerosMediationSection";
1110
import KlerosParticipateSection from "./components/KlerosParticipateSection";
1211

1312
export const generateMetadata = async (): Promise<Metadata> => {
14-
const seoData = await request<SEOQueryType>(seoQuery);
15-
const { title, description, image } = seoData.forLawyersPageSeo.SEO;
16-
return {
17-
title,
18-
description,
19-
openGraph: {
20-
title,
21-
description,
22-
images: image.url,
23-
},
24-
};
13+
return getPageMetadata("forLawyersPageSeo");
2514
};
2615

2716
const ForLawyers: React.FC = async () => {

frontend/src/app/home/page.tsx

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import type { Metadata } from "next";
22

33
import IntegrateSection from "@/components/IntegrateSection";
4-
import { seoQuery, SEOQueryType } from "@/queries/seo";
5-
import { request } from "@/utils/graphQLClient";
4+
import { getPageMetadata } from "@/utils/seo";
65

76
import CaseStudies from "./components/CaseStudies";
87
import GetInTouch from "./components/GetInTouch";
@@ -14,17 +13,7 @@ import TrustedBy from "./components/TrustedBy";
1413
import UseCases from "./components/UseCases";
1514

1615
export const generateMetadata = async (): Promise<Metadata> => {
17-
const seoData = await request<SEOQueryType>(seoQuery);
18-
const { title, description, image } = seoData.homePageSeo.SEO;
19-
return {
20-
title,
21-
description,
22-
openGraph: {
23-
title,
24-
description,
25-
images: image.url,
26-
},
27-
};
16+
return await getPageMetadata("homePageSeo");
2817
};
2918

3019
const Home: React.FC = async () => {

frontend/src/app/pnk-token/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,11 @@ import {
1717
TokenomicsSectionQueryType,
1818
tokenomicsSectionQuery,
1919
} from "@/queries/pnk-token/tokenomics";
20-
import { seoQuery, SEOQueryType } from "@/queries/seo";
2120
import { request } from "@/utils/graphQLClient";
21+
import { getPageMetadata } from "@/utils/seo";
2222

2323
export const generateMetadata = async (): Promise<Metadata> => {
24-
const seoData = await request<SEOQueryType>(seoQuery);
25-
const { title, description, image } = seoData.pnkTokenPageSeo.SEO;
26-
return {
27-
title,
28-
description,
29-
openGraph: {
30-
title,
31-
description,
32-
images: image.url,
33-
},
34-
};
24+
return await getPageMetadata("pnkTokenPageSeo");
3525
};
3626

3727
const PNKToken: React.FC = async () => {

frontend/src/app/r-and-d/page.tsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,11 @@ import {
77
tabSectionQuery,
88
TabSectionQueryType,
99
} from "@/queries/research-development/tabs-data";
10-
import { seoQuery, SEOQueryType } from "@/queries/seo";
1110
import { request } from "@/utils/graphQLClient";
11+
import { getPageMetadata } from "@/utils/seo";
1212

1313
export const generateMetadata = async (): Promise<Metadata> => {
14-
const seoData = await request<SEOQueryType>(seoQuery);
15-
const { title, description, image } = seoData.rAndDPageSeo.SEO;
16-
return {
17-
title,
18-
description,
19-
openGraph: {
20-
title,
21-
description,
22-
images: image.url,
23-
},
24-
};
14+
return getPageMetadata("rAndDPageSeo");
2515
};
2616

2717
const ResearchDevelopment: React.FC = async () => {

frontend/src/utils/seo.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import type { Metadata } from "next";
2+
3+
import { seoQuery, SEOQueryType } from "@/queries/seo";
4+
import { request } from "@/utils/graphQLClient";
5+
6+
type PageKey = keyof SEOQueryType;
7+
8+
export const getPageMetadata = async (pageKey: PageKey): Promise<Metadata> => {
9+
const seoData = await request<SEOQueryType>(seoQuery);
10+
const { title, description, image } = seoData[pageKey].SEO;
11+
12+
return {
13+
title,
14+
description,
15+
openGraph: {
16+
title,
17+
description,
18+
images: image.url,
19+
},
20+
};
21+
};

0 commit comments

Comments
 (0)