import { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { ArrowLeft, Plus, Edit, Trash2, Check, X } from 'lucide-react'; import { adminModuleApi } from '../AdminModuleApi'; import type { ModuleEnvironment, Module } from '../AdminModuleTypes'; import EnvironmentForm from './EnvironmentForm'; import { CustomConfirmationModal } from '../../../../components/custom'; const ModuleEnvironments = () => { const { moduleId } = useParams<{ moduleId: string }>(); const navigate = useNavigate(); const [module, setModule] = useState(null); const [environments, setEnvironments] = useState([]); const [loading, setLoading] = useState(true); const [showForm, setShowForm] = useState(false); const [selectedEnv, setSelectedEnv] = useState(null); const [envToDelete, setEnvToDelete] = useState(null); const fetchData = async () => { if (!moduleId) return; try { const [moduleData, envsData] = await Promise.all([ adminModuleApi.getModule(moduleId), adminModuleApi.listEnvironments(moduleId) ]); setModule(moduleData); setEnvironments(envsData); } catch (error) { console.error('Failed to fetch data', error); } finally { setLoading(false); } }; useEffect(() => { fetchData(); }, [moduleId]); const handleSetDefault = async (envId: string) => { if (!moduleId) return; try { await adminModuleApi.setDefaultEnvironment(moduleId, envId); fetchData(); } catch (error) { console.error('Failed to set default', error); } }; const handleDelete = async (env: ModuleEnvironment) => { setEnvToDelete(env); }; const confirmDelete = async () => { if (!moduleId || !envToDelete) return; try { await adminModuleApi.deleteEnvironment(moduleId, envToDelete.id); setEnvToDelete(null); fetchData(); } catch (error: any) { console.error('Failed to delete environment', error); } }; if (loading) { return
Loading...
; } return (

{module?.module_name} - Environments

Configure environment-specific settings

{environments.map((env) => (

{env.slug}

{env.is_default && ( Default )} {env.is_active ? ( ) : ( )}
Frontend:

{env.frontend_base_url}

Backend:

{env.backend_base_url}

Trust:

{env.trust_type}

SSO Path:

{env.sso_entry_path}

{!env.is_default && ( )}
))}
{environments.length === 0 && (

No environments configured

)} setEnvToDelete(null)} onConfirm={confirmDelete} title="Delete Environment" description={`Are you sure you want to delete ${envToDelete?.slug} environment?`} variant="danger" /> {showForm && moduleId && ( { setShowForm(false); setSelectedEnv(null); if (saved) fetchData(); }} /> )}
); }; export default ModuleEnvironments;