@@ -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