diff --git a/web/src/components/Sidebar.tsx b/web/src/components/Sidebar.tsx index ac9caba..f39f9c3 100644 --- a/web/src/components/Sidebar.tsx +++ b/web/src/components/Sidebar.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { useQuery } from '@tanstack/react-query'; +import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { feedsApi } from '../api/feeds'; import { AddFeedModal } from './AddFeedModal'; @@ -10,11 +10,30 @@ interface SidebarProps { export function Sidebar({ onSelectFeed, selectedFeedId }: SidebarProps) { const [isAddModalOpen, setIsAddModalOpen] = useState(false); + const queryClient = useQueryClient(); + const { data: feeds } = useQuery({ queryKey: ['feeds'], queryFn: () => feedsApi.list(), }); + const deleteFeedMutation = useMutation({ + mutationFn: (id: string) => feedsApi.delete(id), + onSuccess: (_, deletedId) => { + queryClient.invalidateQueries({ queryKey: ['feeds'] }); + if (selectedFeedId === deletedId) { + onSelectFeed(null); + } + }, + }); + + const handleDelete = (e: React.MouseEvent, id: string) => { + e.stopPropagation(); + if (window.confirm('Voulez-vous vraiment supprimer ce flux ?')) { + deleteFeedMutation.mutate(id); + } + }; + return ( <>