From 3d7f0c5485a0853b8aa4c419e8e2e7997009ccc4 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 22 Feb 2026 19:01:43 +0800 Subject: [PATCH] fix(canvas): hide realtime button when feature or service is disabled --- app/api/site-settings/route.ts | 12 ++++++++++++ app/canvas/[id]/page.tsx | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/api/site-settings/route.ts b/app/api/site-settings/route.ts index 800259b87..4205702d5 100644 --- a/app/api/site-settings/route.ts +++ b/app/api/site-settings/route.ts @@ -35,6 +35,7 @@ const LOVART_PROMPT_TAG_VISIBILITY_KEY = "lovart_prompt_tag_visibility"; const CONTACT_CONFIG_KEY = "contact_config"; const MEMBERSHIP_CONFIG_KEY = "membership_config"; const MEMBERSHIP_USER_OVERRIDES_KEY = "membership_user_plan_overrides"; +const REALTIME_CANVAS_CONFIG_KEY = "realtime_canvas_config"; function normalizeHomeVariant(value: unknown): "classic" | "lovart" { return value === "lovart" ? "lovart" : "classic"; @@ -152,6 +153,7 @@ export async function GET() { pointsSystemConfigSetting, pointsPackagesSetting, dulupayConfigSetting, + realtimeCanvasConfigSetting, ] = await Promise.all([ db.select().from(siteSettings).limit(1).then(rows => rows[0]), db @@ -232,6 +234,12 @@ export async function GET() { .where(eq(systemSettings.key, DULUPAY_CONFIG_KEY)) .limit(1) .then(rows => rows[0]), + db + .select() + .from(systemSettings) + .where(eq(systemSettings.key, REALTIME_CANVAS_CONFIG_KEY)) + .limit(1) + .then(rows => rows[0]), ]); const notification = notificationSetting?.value || { enabled: false, title: "", content: "" }; @@ -259,6 +267,8 @@ export async function GET() { const dulupayConfig = isAdmin ? normalizeDulupayConfig(dulupayConfigSetting?.value) : normalizeDulupayForPublic(dulupayConfigSetting?.value); + const realtimeCanvasServiceEnabled = + (realtimeCanvasConfigSetting?.value as { enabled?: boolean } | undefined)?.enabled !== false; // 如果没有设置记录,返回默认值 const baseSettings = settings || { @@ -284,6 +294,7 @@ export async function GET() { rankingEnabled: true, canvasEnabled: true, realtimeCanvasEnabled: true, + realtimeCanvasServiceEnabled: true, canvasDefaultModelId: null, canvasAutoModeDefaultModelId: null, canvasDetailDefaultModelId: null, @@ -326,6 +337,7 @@ export async function GET() { pointsSystemConfig, pointsPackages, dulupayConfig, + realtimeCanvasServiceEnabled, }); // 禁用缓存,确保总是获取最新设置 diff --git a/app/canvas/[id]/page.tsx b/app/canvas/[id]/page.tsx index 7222b01ca..c761345b6 100644 --- a/app/canvas/[id]/page.tsx +++ b/app/canvas/[id]/page.tsx @@ -130,6 +130,7 @@ export default function CanvasEditorPage({ params }: PageProps) { siteLogo?: string | null; siteLogoDark?: string | null; realtimeCanvasEnabled?: boolean; + realtimeCanvasServiceEnabled?: boolean; }>("/api/site-settings", fetcher); // 生成配置 @@ -753,7 +754,8 @@ export default function CanvasEditorPage({ params }: PageProps) { 添加图片 - {siteSettingsData?.realtimeCanvasEnabled ? ( + {siteSettingsData?.realtimeCanvasEnabled === true && + siteSettingsData?.realtimeCanvasServiceEnabled !== false ? (