From 50c200bac22a56ab068974642721b0571a4e4736 Mon Sep 17 00:00:00 2001 From: Innei Date: Mon, 1 Apr 2024 19:17:39 +0800 Subject: [PATCH] fix: script inject Signed-off-by: Innei --- src/app/(app)/layout.tsx | 9 +++--- src/config.d.ts | 2 +- src/providers/root/index.tsx | 3 -- src/providers/root/script-inject-provider.tsx | 32 +++++++++++++++---- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/app/(app)/layout.tsx b/src/app/(app)/layout.tsx index cfd6ffd117..1ef8b263a4 100644 --- a/src/app/(app)/layout.tsx +++ b/src/app/(app)/layout.tsx @@ -18,6 +18,7 @@ import { TocAutoScroll } from '~/components/modules/toc/TocAutoScroll' import { sansFont, serifFont } from '~/lib/fonts' import { AggregationProvider } from '~/providers/root/aggregation-data-provider' import { AppFeatureProvider } from '~/providers/root/app-feature-provider' +import { ScriptInjectProvider } from '~/providers/root/script-inject-provider' import { WebAppProviders } from '../../providers/root' import { Analyze } from './analyze' @@ -156,6 +157,7 @@ export default async function RootLayout(props: PropsWithChildren) { type="image/x-icon" media="(prefers-color-scheme: light)" /> + -
{children}
@@ -174,10 +175,10 @@ export default async function RootLayout(props: PropsWithChildren) { + + +
- - -
diff --git a/src/config.d.ts b/src/config.d.ts index 4dc19dfabe..79061c43d7 100644 --- a/src/config.d.ts +++ b/src/config.d.ts @@ -43,8 +43,8 @@ declare global { export interface Custom { css: string[] - styles: any[] js: string[] + styles: string[] scripts: ScriptProps[] } diff --git a/src/providers/root/index.tsx b/src/providers/root/index.tsx index 2e8be3bfcd..5e2d0431b8 100644 --- a/src/providers/root/index.tsx +++ b/src/providers/root/index.tsx @@ -17,7 +17,6 @@ import { DebugProvider } from './debug-provider' import { EventProvider } from './event-provider' import { JotaiStoreProvider } from './jotai-provider' import { PageScrollInfoProvider } from './page-scroll-info-provider' -import { ScriptInjectProvider } from './script-inject-provider' import { SocketContainer } from './socket-provider' const loadFeatures = () => @@ -45,8 +44,6 @@ export function WebAppProviders({ children }: PropsWithChildren) { {/* */} - - ) } diff --git a/src/providers/root/script-inject-provider.tsx b/src/providers/root/script-inject-provider.tsx index 2f32ed4b08..ae233cd22e 100644 --- a/src/providers/root/script-inject-provider.tsx +++ b/src/providers/root/script-inject-provider.tsx @@ -1,15 +1,33 @@ -'use client' - import Script from 'next/script' -import { useAppConfigSelector } from './aggregation-data-provider' +import { fetchAggregationData } from '~/app/(app)/api' + +export const ScriptInjectProvider = async () => { + const { theme } = await fetchAggregationData() + const { scripts, css, js, styles } = theme.config.custom || {} -export const ScriptInjectProvider = () => { - const scripts = useAppConfigSelector((config) => config.custom?.scripts) - if (!scripts) return null return ( <> - {scripts.map((props) => { + {css && ( +