Skip to content

Commit a112dcb

Browse files
authored
dont wait for chat session deletion (#361)
1 parent 150de15 commit a112dcb

File tree

4 files changed

+14
-32
lines changed

4 files changed

+14
-32
lines changed

src/app/(project-workspace)/projects/[id]/components/chat/chat-sidebar.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ export default function ChatSidebar({
6565

6666
// Loading states
6767
isCreating,
68-
isDeleting,
6968
} = useChatSidebar({
7069
projectId,
7170
onChatSessionChange,
@@ -170,7 +169,6 @@ export default function ChatSidebar({
170169
open={!!deletingSession}
171170
onOpenChange={open => !open && setDeletingSession(null)}
172171
onConfirm={confirmDeleteSession}
173-
isDeleting={isDeleting}
174172
/>
175173
</div>
176174
);

src/app/(project-workspace)/projects/[id]/components/chat/delete-chat-session-dialog.tsx

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client';
22

3-
import { AlertTriangle, Loader2, Trash2 } from 'lucide-react';
3+
import { AlertTriangle, Trash2 } from 'lucide-react';
44

55
import { Button } from '@/components/ui/button';
66
import {
@@ -17,30 +17,24 @@ interface DeleteChatSessionDialogProps {
1717
open: boolean;
1818
onOpenChange: (open: boolean) => void;
1919
onConfirm: (session: ChatSession) => void | Promise<void>;
20-
isDeleting: boolean;
2120
}
2221

2322
export function DeleteChatSessionDialog({
2423
session,
2524
open,
2625
onOpenChange,
2726
onConfirm,
28-
isDeleting,
2927
}: DeleteChatSessionDialogProps) {
30-
const handleDelete = async () => {
28+
const handleDelete = () => {
3129
if (!session) return;
32-
await onConfirm(session);
30+
// Close modal immediately for optimistic UI
31+
onOpenChange(false);
32+
// Fire and forget - don't await the response
33+
onConfirm(session);
3334
};
3435

3536
return (
36-
<Dialog
37-
open={open}
38-
onOpenChange={value => {
39-
// Prevent closing while deletion is in progress
40-
if (isDeleting) return;
41-
onOpenChange(value);
42-
}}
43-
>
37+
<Dialog open={open} onOpenChange={onOpenChange}>
4438
<DialogContent className="sm:max-w-[425px] border border-border bg-card">
4539
<DialogHeader>
4640
<div className="flex items-center gap-2">
@@ -68,18 +62,11 @@ export function DeleteChatSessionDialog({
6862
</div>
6963

7064
<DialogFooter className="mt-6">
71-
<Button variant="outline" onClick={() => onOpenChange(false)} disabled={isDeleting}>
65+
<Button variant="outline" onClick={() => onOpenChange(false)}>
7266
Cancel
7367
</Button>
74-
<Button variant="destructive" onClick={handleDelete} disabled={isDeleting}>
75-
{isDeleting ? (
76-
<>
77-
<Loader2 className="h-4 w-4 animate-spin mr-2" />
78-
<span>Deleting...</span>
79-
</>
80-
) : (
81-
'Delete Session'
82-
)}
68+
<Button variant="destructive" onClick={handleDelete}>
69+
Delete Session
8370
</Button>
8471
</DialogFooter>
8572
</DialogContent>

src/hooks/use-chat-sidebar.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,10 @@ export function useChatSidebar({
110110
setDeletingSession(session);
111111
}, []);
112112

113-
// Confirm and execute session deletion
113+
// Confirm and execute session deletion (fire and forget - dialog closes immediately)
114114
const confirmDeleteSession = useCallback(
115-
async (session: ChatSession) => {
116-
await deleteChatSession.mutateAsync(session.id);
117-
setDeletingSession(null);
115+
(session: ChatSession) => {
116+
deleteChatSession.mutate(session.id);
118117
},
119118
[deleteChatSession]
120119
);
@@ -172,6 +171,5 @@ export function useChatSidebar({
172171
// Loading states
173172
isCreating: createChatSession.isPending,
174173
isUpdating: updateChatSession.isPending,
175-
isDeleting: deleteChatSession.isPending,
176174
};
177175
}

src/lib/types/chat-sessions.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export interface UseChatSidebarReturn {
9090
handleCreateChat: () => Promise<void>;
9191
handleUpdateSession: (session: ChatSession, updates: Partial<ChatSession>) => Promise<void>;
9292
handleDeleteSession: (session: ChatSession) => void;
93-
confirmDeleteSession: (session: ChatSession) => Promise<void>;
93+
confirmDeleteSession: (session: ChatSession) => void;
9494
handleDuplicateSession: (session: ChatSession) => Promise<void>;
9595
handleViewGitHubBranch: (session: ChatSession) => void;
9696

@@ -100,5 +100,4 @@ export interface UseChatSidebarReturn {
100100
// Loading states
101101
isCreating: boolean;
102102
isUpdating: boolean;
103-
isDeleting: boolean;
104103
}

0 commit comments

Comments
 (0)