1- import { Clock , MessageSquare , Lock , Loader2 , Signal } from 'lucide-react' ;
1+ import { Clock , MessageSquare , Lock , Loader2 , Signal , Trash } from 'lucide-react' ;
22import { Button } from '@/components/ui/button' ;
33import { Tooltip , TooltipContent , TooltipTrigger } from '@/components/ui/tooltip' ;
44import { getRelativeTimeString } from '@/utils/time' ;
55import { useApi } from '@/contexts/ApiContext' ;
66import { demoConversations } from '@/democonversations' ;
77
88import type { MessageRole } from '@/types/conversation' ;
9- import type { FC } from 'react' ;
9+ import { useState , type FC } from 'react' ;
1010import { Computed , use$ } from '@legendapp/state/react' ;
1111import { type Observable } from '@legendapp/state' ;
1212import { conversations$ } from '@/stores/conversations' ;
13+ import { DeleteConversationConfirmationDialog } from './DeleteConversationConfirmationDialog' ;
1314
1415type MessageBreakdown = Partial < Record < MessageRole , number > > ;
1516
@@ -42,6 +43,8 @@ export const ConversationList: FC<Props> = ({
4243} ) => {
4344 const { isConnected$ } = useApi ( ) ;
4445 const isConnected = use$ ( isConnected$ ) ;
46+ const [ deleteDialogOpen , setDeleteDialogOpen ] = useState ( false ) ;
47+ const [ conversationToDelete , setConversationToDelete ] = useState < string | null > ( null ) ;
4548
4649 if ( ! conversations ) {
4750 return null ;
@@ -198,6 +201,23 @@ export const ConversationList: FC<Props> = ({
198201 < TooltipContent > This conversation is read-only</ TooltipContent >
199202 </ Tooltip >
200203 ) }
204+ < Tooltip >
205+ < TooltipTrigger asChild >
206+ < button
207+ type = "button"
208+ aria-label = "Delete conversation"
209+ className = "flex items-center"
210+ onClick = { ( e ) => {
211+ e . stopPropagation ( ) ;
212+ setConversationToDelete ( conv . name ) ;
213+ setDeleteDialogOpen ( true ) ;
214+ } }
215+ >
216+ < Trash className = "h-4 w-4" />
217+ </ button >
218+ </ TooltipTrigger >
219+ < TooltipContent > Delete conversation</ TooltipContent >
220+ </ Tooltip >
201221 </ div >
202222 </ div >
203223 </ div >
@@ -209,6 +229,14 @@ export const ConversationList: FC<Props> = ({
209229
210230 return (
211231 < div data-testid = "conversation-list" className = "h-full space-y-2 overflow-y-auto p-4" >
232+ < DeleteConversationConfirmationDialog
233+ conversationName = { conversationToDelete ?? '' }
234+ open = { deleteDialogOpen }
235+ onOpenChange = { setDeleteDialogOpen }
236+ onDelete = { ( ) => {
237+ setConversationToDelete ( null ) ;
238+ } }
239+ />
212240 { isLoading && (
213241 < div className = "flex items-center justify-center p-4 text-sm text-muted-foreground" >
214242 < Loader2 className = "mr-2 h-4 w-4 animate-spin" />
0 commit comments