Skip to content

Commit 56e93c7

Browse files
authored
Delete the last thread when removing a project (#449)
- Allow project deletion when only one thread remains - Clear selection and remove the final thread before dispatching the delete command
1 parent 14f692c commit 56e93c7

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

apps/web/src/components/Sidebar.tsx

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,7 +1263,7 @@ export default function Sidebar() {
12631263
if (!project) return;
12641264

12651265
const projectThreads = sortedThreadsByProjectId.get(projectId) ?? EMPTY_THREADS;
1266-
if (projectThreads.length > 0) {
1266+
if (projectThreads.length > 1) {
12671267
toastManager.add({
12681268
type: "warning",
12691269
title: "Project is not empty",
@@ -1272,15 +1272,27 @@ export default function Sidebar() {
12721272
return;
12731273
}
12741274

1275-
const confirmed = await api.dialogs.confirm(`Remove project "${project.name}"?`);
1275+
const confirmed = await api.dialogs.confirm(
1276+
projectThreads.length === 1
1277+
? `Remove project "${project.name}" and delete its only thread?`
1278+
: `Remove project "${project.name}"?`,
1279+
);
12761280
if (!confirmed) return;
12771281

12781282
try {
1279-
const projectDraftThread = getDraftThreadByProjectId(projectId);
1280-
if (projectDraftThread) {
1281-
clearComposerDraftForThread(projectDraftThread.threadId);
1283+
if (projectThreads.length === 1) {
1284+
const [projectThread] = projectThreads;
1285+
if (projectThread) {
1286+
clearSelection();
1287+
await deleteThread(projectThread.id);
1288+
}
1289+
} else {
1290+
const projectDraftThread = getDraftThreadByProjectId(projectId);
1291+
if (projectDraftThread) {
1292+
clearComposerDraftForThread(projectDraftThread.threadId);
1293+
}
1294+
clearProjectDraftThreadId(projectId);
12821295
}
1283-
clearProjectDraftThreadId(projectId);
12841296
await api.orchestration.dispatchCommand({
12851297
type: "project.delete",
12861298
commandId: newCommandId(),
@@ -1297,8 +1309,10 @@ export default function Sidebar() {
12971309
}
12981310
},
12991311
[
1312+
clearSelection,
13001313
clearComposerDraftForThread,
13011314
clearProjectDraftThreadId,
1315+
deleteThread,
13021316
getDraftThreadByProjectId,
13031317
projectById,
13041318
sortedThreadsByProjectId,

0 commit comments

Comments
 (0)