From d79bbce1eccf29d1eb9ee23f4ed00ebbd4872094 Mon Sep 17 00:00:00 2001 From: Caleb Bourg Date: Sat, 5 Apr 2025 09:10:57 -0400 Subject: [PATCH 1/2] refresh coaching session list after delete --- src/components/ui/coaching-session.tsx | 4 +++- .../ui/dashboard/coaching-session-list.tsx | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/components/ui/coaching-session.tsx b/src/components/ui/coaching-session.tsx index 802e3791..09717a9b 100644 --- a/src/components/ui/coaching-session.tsx +++ b/src/components/ui/coaching-session.tsx @@ -20,11 +20,13 @@ import { CoachingSession as CoachingSessionType } from "@/types/coaching-session interface CoachingSessionProps { coachingSession: CoachingSessionType; onUpdate: () => void; + onDelete: () => void; } const CoachingSession: React.FC = ({ coachingSession, onUpdate, + onDelete, }) => { const { setCurrentCoachingSessionId } = useCoachingSessionStateStore( (state) => state @@ -60,7 +62,7 @@ const CoachingSession: React.FC = ({ Update Session - + Delete Session diff --git a/src/components/ui/dashboard/coaching-session-list.tsx b/src/components/ui/dashboard/coaching-session-list.tsx index e33f30c6..5aca6dec 100644 --- a/src/components/ui/dashboard/coaching-session-list.tsx +++ b/src/components/ui/dashboard/coaching-session-list.tsx @@ -6,9 +6,11 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { ArrowUpDown } from "lucide-react"; import { useCoachingRelationshipStateStore } from "@/lib/providers/coaching-relationship-state-store-provider"; import { useCoachingSessionList } from "@/lib/api/coaching-sessions"; +import { useCoachingSessionMutation } from "@/lib/api/coaching-sessions"; import { CoachingSession as CoachingSessionComponent } from "@/components/ui/coaching-session"; import { DateTime } from "ts-luxon"; import type { CoachingSession } from "@/types/coaching-session"; +import { Id } from "@/types/general"; interface CoachingSessionListProps { onUpdateSession: (session: CoachingSession) => void; @@ -27,8 +29,24 @@ export default function CoachingSessionList({ onUpdateSession }: CoachingSession coachingSessions, isLoading: isLoadingCoachingSessions, isError: isErrorCoachingSessions, + refresh: refreshCoachingSessions, } = useCoachingSessionList(currentCoachingRelationshipId, fromDate, toDate); + const { delete: deleteCoachingSession } = useCoachingSessionMutation(); + + const handleDeleteCoachingSession = async (id: Id) => { + if (!confirm("Are you sure you want to delete this session?")) { + return; + } + + try { + await deleteCoachingSession(id).then(() => refreshCoachingSessions()); + } catch (error) { + console.error("Error deleting coaching session:", error); + // TODO: Show an error toast here once we start using toasts for showing operation results. + } + }; + const [sortByDate, setSortByDate] = useState(true); const sortedSessions = coachingSessions @@ -84,6 +102,7 @@ export default function CoachingSessionList({ onUpdateSession }: CoachingSession key={coachingSession.id} coachingSession={coachingSession} onUpdate={() => onUpdateSession(coachingSession)} + onDelete={() => handleDeleteCoachingSession(coachingSession.id)} /> ))} From dbc696678c8a8e6877934d0e382d18b4b9af6ab4 Mon Sep 17 00:00:00 2001 From: Caleb Bourg Date: Sat, 5 Apr 2025 09:20:34 -0400 Subject: [PATCH 2/2] only coaches can delete coaching sessions --- src/components/ui/coaching-session.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/ui/coaching-session.tsx b/src/components/ui/coaching-session.tsx index 09717a9b..2b59b756 100644 --- a/src/components/ui/coaching-session.tsx +++ b/src/components/ui/coaching-session.tsx @@ -16,6 +16,7 @@ import { } from "@/components/ui/dropdown-menu"; import { MoreHorizontal } from "lucide-react"; import { CoachingSession as CoachingSessionType } from "@/types/coaching-session"; +import { useAuthStore } from "@/lib/providers/auth-store-provider"; interface CoachingSessionProps { coachingSession: CoachingSessionType; @@ -31,6 +32,7 @@ const CoachingSession: React.FC = ({ const { setCurrentCoachingSessionId } = useCoachingSessionStateStore( (state) => state ); + const { isCoach } = useAuthStore((state) => state); return ( @@ -62,9 +64,11 @@ const CoachingSession: React.FC = ({ Update Session - - Delete Session - + {isCoach && ( + + Delete Session + + )}