@@ -6,10 +6,11 @@ import I18nProvider from "@/components/I18nProvider"
6
6
import mdComponents from "@/components/MdComponents"
7
7
8
8
import { dataLoader } from "@/lib/utils/data/dataLoader"
9
+ import { dateToString } from "@/lib/utils/date"
9
10
import { getPostSlugs } from "@/lib/utils/md"
10
11
import { getRequiredNamespacesForPage } from "@/lib/utils/translations"
11
12
12
- import { LOCALES_CODES } from "@/lib/constants"
13
+ import { DEFAULT_LOCALE , LOCALES_CODES } from "@/lib/constants"
13
14
14
15
import { componentsMapping , layoutMapping } from "@/layouts"
15
16
import { fetchGFIs } from "@/lib/api/fetchGFIs"
@@ -18,6 +19,18 @@ import { getMdMetadata } from "@/lib/md/metadata"
18
19
19
20
const loadData = dataLoader ( [ [ "gfissues" , fetchGFIs ] ] )
20
21
22
+ function getLayoutFromSlug ( slug : string ) {
23
+ if ( slug . includes ( "developers/docs" ) ) {
24
+ return "docs"
25
+ }
26
+
27
+ if ( slug . includes ( "developers/tutorials" ) ) {
28
+ return "tutorial"
29
+ }
30
+
31
+ return "static"
32
+ }
33
+
21
34
export default async function Page ( {
22
35
params,
23
36
} : {
@@ -26,7 +39,7 @@ export default async function Page({
26
39
const { locale, slug : slugArray } = await params
27
40
28
41
// Check if this specific path is in our valid paths
29
- const validPaths = await generateStaticParams ( )
42
+ const validPaths = await pagesToBuild ( )
30
43
const isValidPath = validPaths . some (
31
44
( path ) =>
32
45
path . locale === locale && path . slug . join ( "/" ) === slugArray . join ( "/" )
@@ -49,6 +62,7 @@ export default async function Page({
49
62
tocItems,
50
63
lastEditLocaleTimestamp,
51
64
isTranslated,
65
+ contributors,
52
66
} = await getPageData ( {
53
67
locale,
54
68
slug,
@@ -61,9 +75,14 @@ export default async function Page({
61
75
} )
62
76
63
77
// Determine the actual layout after we have the frontmatter
64
- const layout = frontmatter . template || "static"
78
+ const layout = frontmatter . template || getLayoutFromSlug ( slug )
65
79
const Layout = layoutMapping [ layout ]
66
80
81
+ // If the page has a published date, format it
82
+ if ( "published" in frontmatter ) {
83
+ frontmatter . published = dateToString ( frontmatter . published )
84
+ }
85
+
67
86
// Get i18n messages
68
87
const allMessages = await getMessages ( { locale } )
69
88
const requiredNamespaces = getRequiredNamespacesForPage ( slug , layout )
@@ -77,15 +96,18 @@ export default async function Page({
77
96
tocItems = { tocItems }
78
97
lastEditLocaleTimestamp = { lastEditLocaleTimestamp }
79
98
contentNotTranslated = { ! isTranslated }
99
+ contributors = { contributors }
100
+ // TODO: Remove this once we have a real timeToRead value
101
+ timeToRead = { 2 }
80
102
>
81
103
{ content }
82
104
</ Layout >
83
105
</ I18nProvider >
84
106
)
85
107
}
86
108
87
- export async function generateStaticParams ( ) {
88
- const slugs = await getPostSlugs ( "/" , / \/ d e v e l o p e r s / )
109
+ async function pagesToBuild ( ) {
110
+ const slugs = await getPostSlugs ( "/" )
89
111
90
112
return LOCALES_CODES . flatMap ( ( locale ) =>
91
113
slugs . map ( ( slug ) => ( {
@@ -95,6 +117,19 @@ export async function generateStaticParams() {
95
117
)
96
118
}
97
119
120
+ export async function generateStaticParams ( ) {
121
+ const allPages = await pagesToBuild ( )
122
+
123
+ if ( process . env . IS_PREVIEW_DEPLOY === "true" ) {
124
+ // Only build default locale
125
+ return allPages . filter ( ( page ) => page . locale === DEFAULT_LOCALE )
126
+ }
127
+
128
+ return allPages
129
+ }
130
+
131
+ export const dynamicParams = true
132
+
98
133
export async function generateMetadata ( {
99
134
params,
100
135
} : {
0 commit comments