diff --git a/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx b/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx index f71b9ef149..fca353e65f 100644 --- a/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx @@ -14,7 +14,7 @@ import { AgentSessionEntity } from '@renderer/types' import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuTrigger } from '@renderer/ui/context-menu' import { buildAgentSessionTopicId } from '@renderer/utils/agentSession' import { XIcon } from 'lucide-react' -import React, { FC, memo, startTransition, useMemo, useState } from 'react' +import React, { FC, memo, startTransition, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -97,6 +97,12 @@ const SessionItem: FC = ({ session, agentId, isDisabled, isLoa const isPending = useMemo(() => topicLoadingQuery[sessionTopicId], [sessionTopicId, topicLoadingQuery]) const isFulfilled = useMemo(() => topicFulfilledQuery[sessionTopicId], [sessionTopicId, topicFulfilledQuery]) + useEffect(() => { + if (isFulfilled && activeSessionId === session.id) { + dispatch(newMessagesActions.setTopicFulfilled({ topicId: sessionTopicId, fulfilled: false })) + } + }, [activeSessionId, dispatch, isFulfilled, session.id, sessionTopicId]) + return ( <> @@ -104,10 +110,7 @@ const SessionItem: FC = ({ session, agentId, isDisabled, isLoa { - dispatch(newMessagesActions.setTopicFulfilled({ topicId: sessionTopicId, fulfilled: false })) - onPress() - }} + onPress={onPress} isActive={isActive} onDoubleClick={() => startEdit(session.name ?? '')} className="group"> diff --git a/src/renderer/src/pages/home/Tabs/components/Sessions.tsx b/src/renderer/src/pages/home/Tabs/components/Sessions.tsx index 7a3f0c7ac6..5564978f90 100644 --- a/src/renderer/src/pages/home/Tabs/components/Sessions.tsx +++ b/src/renderer/src/pages/home/Tabs/components/Sessions.tsx @@ -4,12 +4,14 @@ import { useAgent } from '@renderer/hooks/agents/useAgent' import { useSessions } from '@renderer/hooks/agents/useSessions' import { useRuntime } from '@renderer/hooks/useRuntime' import { useAppDispatch } from '@renderer/store' +import { newMessagesActions } from '@renderer/store/newMessage' import { setActiveSessionIdAction, setActiveTopicOrSessionAction, setSessionWaitingAction } from '@renderer/store/runtime' import { CreateSessionForm } from '@renderer/types' +import { buildAgentSessionTopicId } from '@renderer/utils/agentSession' import { AnimatePresence, motion } from 'framer-motion' import { Plus } from 'lucide-react' import { memo, useCallback, useEffect } from 'react' @@ -80,6 +82,17 @@ const Sessions: React.FC = ({ agentId }) => { } }, [isLoading, sessions, currentActiveSessionId, agentId, setActiveSessionId]) + useEffect(() => { + if (currentActiveSessionId) { + dispatch( + newMessagesActions.setTopicFulfilled({ + topicId: buildAgentSessionTopicId(currentActiveSessionId), + fulfilled: false + }) + ) + } + }, [currentActiveSessionId, dispatch]) + if (isLoading) { return (