diff --git a/src/web/src/hooks/useLogoSrc.ts b/src/web/src/hooks/useLogoSrc.ts index 56b6536..4413145 100644 --- a/src/web/src/hooks/useLogoSrc.ts +++ b/src/web/src/hooks/useLogoSrc.ts @@ -1,6 +1,7 @@ import { useBackground, useResolvedTheme, + useSettings, type Background, } from "../stores/useSettings"; @@ -20,3 +21,9 @@ export function useLogoSrc() { const theme = useResolvedTheme(); return getLogoSrc(background, theme); } + +/** 非 React 上下文中获取当前 logo 路径(快照式,无订阅) */ +export function getCurrentLogoSrc(): string { + const { background, resolvedTheme } = useSettings.getState(); + return getLogoSrc(background, resolvedTheme); +} diff --git a/src/web/src/hooks/useTaskNotifier.ts b/src/web/src/hooks/useTaskNotifier.ts index 9cb3c81..8e57388 100644 --- a/src/web/src/hooks/useTaskNotifier.ts +++ b/src/web/src/hooks/useTaskNotifier.ts @@ -9,6 +9,7 @@ import i18next from "i18next"; import { useWebSocket } from "../stores/useWebSocket"; import { useInstances } from "../stores/useInstances"; import { useSettings } from "../stores/useSettings"; +import { getCurrentLogoSrc } from "./useLogoSrc"; import type { InstanceId, InstanceStatus, @@ -105,6 +106,7 @@ function showCompletionNotification( // 导致同一实例连续完成任务时后续通知不可见。 const notification = new Notification("Paimon", { body: i18next.t("notification.taskComplete", { name: dirName }), + icon: getCurrentLogoSrc(), }); // 点击通知:聚焦窗口并导航到对应实例