diff --git a/src-web/components/EnvironmentEditDialog.tsx b/src-web/components/EnvironmentEditDialog.tsx index 7618099b..c84a97d8 100644 --- a/src-web/components/EnvironmentEditDialog.tsx +++ b/src-web/components/EnvironmentEditDialog.tsx @@ -32,10 +32,13 @@ export const EnvironmentEditDialog = function ({ initialEnvironment }: Props) { const { baseEnvironment, subEnvironments, allEnvironments } = useEnvironments(); const [selectedEnvironmentId, setSelectedEnvironmentId] = useState( - initialEnvironment?.id ?? baseEnvironment?.id ?? null, + initialEnvironment?.id ?? null, ); - const selectedEnvironment = allEnvironments.find((e) => e.id === selectedEnvironmentId); + const selectedEnvironment = + selectedEnvironmentId != null + ? allEnvironments.find((e) => e.id === selectedEnvironmentId) + : baseEnvironment; const handleCreateEnvironment = async () => { if (baseEnvironment == null) return; @@ -55,7 +58,7 @@ export const EnvironmentEditDialog = function ({ initialEnvironment }: Props) {
setSelectedEnvironmentId(baseEnvironment?.id ?? null)} + onClick={() => setSelectedEnvironmentId(null)} environment={null} rightSlot={ setSelectedEnvironmentId(e.id)} + onDelete={() => { + if (e.id === selectedEnvironmentId) { + setSelectedEnvironmentId(null); + } + }} > {e.name} @@ -90,11 +98,7 @@ export const EnvironmentEditDialog = function ({ initialEnvironment }: Props) { )} secondSlot={() => - selectedEnvironmentId == null ? ( -
- No selected environment -
- ) : selectedEnvironment == null ? ( + selectedEnvironment == null ? (
Failed to find selected environment {selectedEnvironmentId} @@ -198,6 +202,7 @@ function SidebarButton({ className, active, onClick, + onDelete, rightSlot, environment, }: { @@ -205,6 +210,7 @@ function SidebarButton({ children: ReactNode; active: boolean; onClick: () => void; + onDelete?: () => void; rightSlot?: ReactNode; environment: Environment | null; }) { @@ -275,7 +281,11 @@ function SidebarButton({ color: 'danger', label: 'Delete', leftSlot: , - onSelect: () => deleteEnvironment.mutate(), + onSelect: () => { + deleteEnvironment.mutate(undefined, { + onSuccess: onDelete, + }); + }, }, ]} />