Files
jiang13-bbs/frontend/lib/publicMetaSnapshot.ts

41 lines
1.3 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** 进程内公开元信息快照:供根 layout 同步 generateMetadata,避免 await 触发标题闪成 localhost */
export type PublicMetaSnapshot = {
site_name: string;
site_slogan: string;
site_description: string;
site_keywords: string[];
favicon_url: string;
};
const DEFAULT_SNAP: PublicMetaSnapshot = {
site_name: "姜十三论坛",
site_slogan: "",
site_description: "姜十三论坛 - 技术分享与讨论社区",
site_keywords: [],
favicon_url: "",
};
let snap: PublicMetaSnapshot = { ...DEFAULT_SNAP };
export function publishPublicMetaSnapshot(
s: Partial<PublicMetaSnapshot> | null | undefined,
): void {
if (!s) return;
const name = typeof s.site_name === "string" ? s.site_name.trim() : "";
snap = {
site_name: name || DEFAULT_SNAP.site_name,
site_slogan: typeof s.site_slogan === "string" ? s.site_slogan.trim() : snap.site_slogan,
site_description:
typeof s.site_description === "string" && s.site_description.trim()
? s.site_description.trim()
: snap.site_description,
site_keywords: Array.isArray(s.site_keywords) ? s.site_keywords : snap.site_keywords,
favicon_url: typeof s.favicon_url === "string" ? s.favicon_url.trim() : snap.favicon_url,
};
}
export function peekPublicMetaSnapshot(): PublicMetaSnapshot {
return snap;
}