Skip to content
This repository was archived by the owner on Feb 27, 2024. It is now read-only.

Commit b72be6a

Browse files
committed
Add fn to retrieve fe route page
1 parent 4d0977f commit b72be6a

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import queryDefaultSeo from '../_global/queryDefaultSeo'
2+
import formatDefaultSeoData from '@/functions/formatDefaultSeoData'
3+
import {initializeWpApollo} from '../connector'
4+
5+
// Define SEO for Frontend routes.
6+
export const frontendPageSeo = {
7+
search: {
8+
title: 'Search',
9+
description: 'Search page'
10+
}
11+
}
12+
13+
/**
14+
* Retrieve data for Frontend-only route (i.e., page does not exist in WordPress).
15+
*
16+
* @author WebDevStudios
17+
* @param {string} route Frontend route.
18+
* @return {object} Object containing Apollo client instance and post data or error object.
19+
*/
20+
export default async function getFrontendPage(route) {
21+
// Get/create Apollo instance.
22+
const apolloClient = initializeWpApollo()
23+
24+
// Set up return object.
25+
const response = {
26+
apolloClient,
27+
error: false,
28+
errorMessage: null
29+
}
30+
31+
// Execute query.
32+
response.post = await apolloClient
33+
.query({query: queryDefaultSeo})
34+
.then((res) => {
35+
const {homepageSettings, siteSeo} = res.data
36+
37+
// Retrieve default SEO data.
38+
response.defaultSeo = formatDefaultSeoData({homepageSettings, siteSeo})
39+
40+
// Set route SEO.
41+
return !frontendPageSeo?.[route]
42+
? null
43+
: {
44+
seo: {
45+
title: frontendPageSeo[route]?.title,
46+
description: frontendPageSeo[route]?.description
47+
}
48+
}
49+
})
50+
.catch((error) => {
51+
response.error = true
52+
response.errorMessage = error.message
53+
54+
return null
55+
})
56+
57+
return response
58+
}

0 commit comments

Comments
 (0)