diff --git a/packages/app/src/pages/layout/project-avatar-state.ts b/packages/app/src/pages/layout/project-avatar-state.ts index 51a2a28021..ca105af37c 100644 --- a/packages/app/src/pages/layout/project-avatar-state.ts +++ b/packages/app/src/pages/layout/project-avatar-state.ts @@ -2,8 +2,8 @@ import { createMemo, type Accessor } from "solid-js" import { useGlobal } from "@/context/global" import { useNotification } from "@/context/notification" import { usePermission } from "@/context/permission" +import { sessionPermissionRequest, sessionQuestionRequest } from "@/pages/session/composer/session-request-tree" import { ServerConnection } from "@/context/server" -import { sessionPermissionRequest } from "@/pages/session/composer/session-request-tree" export function useSessionTabAvatarState( server: Accessor, @@ -26,15 +26,20 @@ export function useSessionTabAvatarState( return !permission.autoResponds(item, directory()) }) }) - const unread = createMemo(() => { - if (hasPermissions()) return true - if (!connection()) return false - return notification.ensureServerState(server()).session.unseenCount(sessionId()) > 0 + const hasQuestions = createMemo(() => { + const serverSync = sync() + if (!serverSync) return false + const [store] = serverSync.child(directory(), { bootstrap: false }) + return !!sessionQuestionRequest(store.session, serverSync.session.data.question, sessionId()) }) + const needsAttention = createMemo(() => hasPermissions() || hasQuestions()) + const unread = createMemo( + () => needsAttention() || notification.ensureServerState(server()).session.unseenCount(sessionId()) > 0, + ) const loading = createMemo(() => { const serverSync = sync() if (!serverSync) return false - if (hasPermissions()) return false + if (needsAttention()) return false return serverSync.session.data.session_working(sessionId()) }) return { unread, loading }