From 927defaeeff8bbdd8946f398268131edf1db8d8a Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 17 Nov 2025 12:24:00 -0600 Subject: [PATCH] Add confirmation dialog for team deletion --- src/renderer/src/routes/TeamsScreen.tsx | 31 +++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/routes/TeamsScreen.tsx b/src/renderer/src/routes/TeamsScreen.tsx index 955055d..1fd3e55 100644 --- a/src/renderer/src/routes/TeamsScreen.tsx +++ b/src/renderer/src/routes/TeamsScreen.tsx @@ -28,6 +28,7 @@ import { TeamProvider } from '../context/TeamContext'; import { TeamContext } from '../context/TeamContext'; import { validateEmail } from '../utils/validateEmail'; import { axiosPost } from '../utils/axios'; +import Confirm from '../components/AlertDialog'; interface IPersonalSectionProps { onOpenSettings: () => void; @@ -373,6 +374,7 @@ const SettingsProvider: React.FC<{ children: React.ReactNode }> = ({ const { teamUpdate, teamDelete, personalTeam, isDeleting } = ctx.state; const [open, setOpen] = React.useState(false); const [teamId, setTeamId] = React.useState(); + const [pendingDelete, setPendingDelete] = React.useState(); const selectedTeam = React.useMemo(() => { if (!teamId) return undefined; @@ -396,14 +398,26 @@ const SettingsProvider: React.FC<{ children: React.ReactNode }> = ({ setTeamId(personalTeam); setOpen(true); }; - const handleClose = () => setOpen(false); + const handleClose = () => { + setPendingDelete(undefined); + setOpen(false); + }; const handleCommit = (value: ITeamDialog) => { teamUpdate(value.team as any); handleClose(); }; - const handleDelete = (org: any) => { - teamDelete(org); - handleClose(); + const handleDeleteRequest = (org: any) => { + setPendingDelete(org); + }; + const handleDeleteConfirmed = async () => { + if (pendingDelete) { + await teamDelete(pendingDelete); + setPendingDelete(undefined); + handleClose(); + } + }; + const handleDeleteRefused = () => { + setPendingDelete(undefined); }; const isPersonal = teamId === personalTeam; @@ -419,7 +433,14 @@ const SettingsProvider: React.FC<{ children: React.ReactNode }> = ({ onCommit={(v) => handleCommit(v)} values={{ team: selectedTeam } as any} disabled={isDeleting} - {...(!isPersonal && { onDelete: (org: any) => handleDelete(org) })} + {...(!isPersonal ? { onDelete: handleDeleteRequest } : {})} + /> + )} + {pendingDelete && ( + )} {children}