1
1
import '../styles/index.css'
2
2
3
3
import { Analytics } from '@vercel/analytics/react'
4
+ import { cache } from 'react'
4
5
import { ToastContainer } from 'react-toastify'
5
6
import type { AggregateRoot } from '@mx-space/api-client'
7
+ import type { AppConfig } from './config'
6
8
7
9
import { ClerkProvider } from '@clerk/nextjs'
10
+ import { get } from '@vercel/edge-config'
8
11
9
12
import PKG from '~/../package.json'
10
- import { appConfig } from '~/app.config'
11
13
import { Root } from '~/components/layout/root/Root'
12
14
import { TocAutoScroll } from '~/components/widgets/toc/TocAutoScroll'
13
15
import { attachUA } from '~/lib/attach-ua'
@@ -24,12 +26,18 @@ import { init } from './init'
24
26
const { version } = PKG
25
27
init ( )
26
28
29
+ const getAppConfig = cache ( ( ) => {
30
+ return get ( 'config' ) as Promise < AppConfig >
31
+ } )
32
+
27
33
let aggregationData : AggregateRoot | null = null
28
34
export const generateMetadata = defineMetadata ( async ( _ , getData ) => {
29
35
const fetchedData = aggregationData ?? ( await getData ( ) )
30
36
aggregationData = fetchedData
31
37
const { seo, url, user } = fetchedData
32
38
39
+ const config = getAppConfig ( )
40
+
33
41
return {
34
42
metadataBase : new URL ( url . webUrl ) ,
35
43
title : {
@@ -40,7 +48,7 @@ export const generateMetadata = defineMetadata(async (_, getData) => {
40
48
keywords : seo . keywords ?. join ( ',' ) || '' ,
41
49
icons : [
42
50
{
43
- url : appConfig . site . favicon ,
51
+ url : config . site . favicon ,
44
52
type : 'image/svg+xml' ,
45
53
sizes : 'any' ,
46
54
} ,
@@ -102,6 +110,7 @@ export default async function RootLayout(props: Props) {
102
110
103
111
aggregationData = data
104
112
113
+ const appConfig = await getAppConfig ( )
105
114
return (
106
115
// <ClerkProvider localization={ClerkZhCN}>
107
116
< ClerkProvider >
@@ -113,7 +122,7 @@ export default async function RootLayout(props: Props) {
113
122
className = { `${ sansFont . variable } ${ serifFont . variable } m-0 h-full p-0 font-sans` }
114
123
>
115
124
< Providers >
116
- < AggregationProvider aggregationData = { data } />
125
+ < AggregationProvider aggregationData = { data } appConfig = { appConfig } />
117
126
118
127
< Root > { children } </ Root >
119
128
0 commit comments