fix(ui): sync sidebar sessions after chat history deletion (#7707)
Signed-off-by: George <george@zuos.us> Co-authored-by: George <george@zuos.us>
This commit is contained in:
@@ -138,6 +138,39 @@ export function useNavigationSessions(options: UseNavigationSessionsOptions = {}
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleSessionDeleted = (event: Event) => {
|
||||||
|
const { sessionId } = (event as CustomEvent<{ sessionId: string }>).detail;
|
||||||
|
|
||||||
|
setRecentSessions((prev) => prev.filter((session) => session.id !== sessionId));
|
||||||
|
sessionsRef.current = sessionsRef.current.filter((session) => session.id !== sessionId);
|
||||||
|
|
||||||
|
if (lastSessionIdRef.current === sessionId) {
|
||||||
|
lastSessionIdRef.current = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSessionRenamed = (event: Event) => {
|
||||||
|
const { sessionId, newName } =
|
||||||
|
(event as CustomEvent<{ sessionId: string; newName: string }>).detail;
|
||||||
|
|
||||||
|
setRecentSessions((prev) =>
|
||||||
|
prev.map((session) => (session.id === sessionId ? { ...session, name: newName } : session))
|
||||||
|
);
|
||||||
|
sessionsRef.current = sessionsRef.current.map((session) =>
|
||||||
|
session.id === sessionId ? { ...session, name: newName } : session
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener(AppEvents.SESSION_DELETED, handleSessionDeleted);
|
||||||
|
window.addEventListener(AppEvents.SESSION_RENAMED, handleSessionRenamed);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener(AppEvents.SESSION_DELETED, handleSessionDeleted);
|
||||||
|
window.removeEventListener(AppEvents.SESSION_RENAMED, handleSessionRenamed);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const handleNavClick = useCallback(
|
const handleNavClick = useCallback(
|
||||||
(path: string) => {
|
(path: string) => {
|
||||||
if (path === '/pair') {
|
if (path === '/pair') {
|
||||||
|
|||||||
Reference in New Issue
Block a user