Jelajahi Sumber

fix(app): show unread for pending questions (#34684)

Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>
opencode-agent[bot] 2 bulan lalu
induk
melakukan
c5fe32fbb1
1 mengubah file dengan 11 tambahan dan 6 penghapusan
  1. 11 6
      packages/app/src/pages/layout/project-avatar-state.ts

+ 11 - 6
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 { useGlobal } from "@/context/global"
 import { useNotification } from "@/context/notification"
 import { useNotification } from "@/context/notification"
 import { usePermission } from "@/context/permission"
 import { usePermission } from "@/context/permission"
+import { sessionPermissionRequest, sessionQuestionRequest } from "@/pages/session/composer/session-request-tree"
 import { ServerConnection } from "@/context/server"
 import { ServerConnection } from "@/context/server"
-import { sessionPermissionRequest } from "@/pages/session/composer/session-request-tree"
 
 
 export function useSessionTabAvatarState(
 export function useSessionTabAvatarState(
   server: Accessor<ServerConnection.Key>,
   server: Accessor<ServerConnection.Key>,
@@ -26,15 +26,20 @@ export function useSessionTabAvatarState(
       return !permission.autoResponds(item, directory())
       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 loading = createMemo(() => {
     const serverSync = sync()
     const serverSync = sync()
     if (!serverSync) return false
     if (!serverSync) return false
-    if (hasPermissions()) return false
+    if (needsAttention()) return false
     return serverSync.session.data.session_working(sessionId())
     return serverSync.session.data.session_working(sessionId())
   })
   })
   return { unread, loading }
   return { unread, loading }