Skip to content

Commit 9cfe205

Browse files
Protect active sessions from empty cleanup
Skip automatic empty-session cleanup for active and finalizing recordings, matching the existing running-batch protection.
1 parent 3d3ee83 commit 9cfe205

2 files changed

Lines changed: 27 additions & 20 deletions

File tree

apps/desktop/src/shared/desktop-tab-lifecycle.test.ts

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -100,27 +100,29 @@ describe("desktop tab lifecycle", () => {
100100
);
101101
});
102102

103-
it("skips cleanup for active batch sessions and non-session tabs", () => {
104-
const invalidateSessionResource = vi.fn();
105-
const deleteSessionFn = vi.fn();
106-
const handler = createSessionTabCloseHandler({
107-
store: {} as Parameters<
108-
typeof createSessionTabCloseHandler
109-
>[0]["store"],
110-
indexes: {} as Parameters<
111-
typeof createSessionTabCloseHandler
112-
>[0]["indexes"],
113-
invalidateSessionResource,
114-
getSessionMode: vi.fn().mockReturnValue("running_batch"),
115-
isSessionEmptyFn: vi.fn().mockReturnValue(true),
116-
deleteSessionFn,
117-
});
103+
it("skips cleanup for non-inactive sessions and non-session tabs", () => {
104+
for (const sessionMode of ["active", "finalizing", "running_batch"]) {
105+
const invalidateSessionResource = vi.fn();
106+
const deleteSessionFn = vi.fn();
107+
const handler = createSessionTabCloseHandler({
108+
store: {} as Parameters<
109+
typeof createSessionTabCloseHandler
110+
>[0]["store"],
111+
indexes: {} as Parameters<
112+
typeof createSessionTabCloseHandler
113+
>[0]["indexes"],
114+
invalidateSessionResource,
115+
getSessionMode: vi.fn().mockReturnValue(sessionMode),
116+
isSessionEmptyFn: vi.fn().mockReturnValue(true),
117+
deleteSessionFn,
118+
});
118119

119-
handler(createSessionTab({ id: "session-2" }));
120-
handler(createContactsTab());
120+
handler(createSessionTab({ id: `session-${sessionMode}` }));
121+
handler(createContactsTab());
121122

122-
expect(invalidateSessionResource).not.toHaveBeenCalled();
123-
expect(deleteSessionFn).not.toHaveBeenCalled();
123+
expect(invalidateSessionResource).not.toHaveBeenCalled();
124+
expect(deleteSessionFn).not.toHaveBeenCalled();
125+
}
124126
});
125127
});
126128
});

apps/desktop/src/shared/desktop-tab-lifecycle.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,12 @@ export function createSessionTabCloseHandler({
7272
}
7373

7474
const sessionId = tab.id;
75-
if (getSessionMode(sessionId) === "running_batch") {
75+
const sessionMode = getSessionMode(sessionId);
76+
if (
77+
sessionMode === "active" ||
78+
sessionMode === "finalizing" ||
79+
sessionMode === "running_batch"
80+
) {
7681
return;
7782
}
7883

0 commit comments

Comments
 (0)