Fix active session replay state

This commit is contained in:
wuyang6
2026-05-11 21:35:23 +08:00
parent 413a37b32c
commit 535e4b2c83
7 changed files with 88 additions and 46 deletions
@@ -43,6 +43,11 @@ import {
SidebarTrigger,
useSidebar,
} from "@/components/ui/sidebar";
import {
clearActiveSessionId,
readActiveSessionId,
writeActiveSessionId,
} from "@/lib/claw-active-session";
import { useClawSessionReplay } from "@/lib/claw-session-replay";
type ThreadListSidebarProps = React.ComponentProps<typeof Sidebar> & {
@@ -157,7 +162,7 @@ function CollapsedSidebarRail({
<div className="flex flex-col items-center gap-3">
<div
onClickCapture={() => {
window.localStorage.removeItem("claw.activeSessionId");
clearActiveSessionId();
window.dispatchEvent(new Event("claw-active-session-cleared"));
}}
>
@@ -360,7 +365,7 @@ function useSidebarSessions(open: boolean) {
) {
const cleanSessionId = normalizeSessionId(sessionId);
if (!cleanSessionId) return;
window.localStorage.setItem("claw.activeSessionId", cleanSessionId);
writeActiveSessionId(cleanSessionId);
setLoadingSessionId(sessionId);
try {
const response = await fetch(`/api/claw/sessions/${cleanSessionId}`, {
@@ -438,14 +443,13 @@ function AccountMenu({
setState(nextState);
setSessions(nextSessions);
const activeSessionId = normalizeSessionId(
window.localStorage.getItem("claw.activeSessionId") ??
nextState?.active_session_id,
readActiveSessionId() ?? nextState?.active_session_id,
);
if (!activeSessionId) {
setActiveSession(null);
return;
}
window.localStorage.setItem("claw.activeSessionId", activeSessionId);
writeActiveSessionId(activeSessionId);
const response = await fetch(`/api/claw/sessions/${activeSessionId}`, {
cache: "no-store",
});
@@ -460,7 +464,7 @@ function AccountMenu({
async function logout() {
await fetch("/api/claw/auth/logout", { method: "POST" });
window.localStorage.removeItem("claw.activeSessionId");
clearActiveSessionId();
onLogout();
}