diff --git a/components/dialogues/EditSite.tsx b/components/dialogues/EditSite.tsx index ee4c773..da0af85 100644 --- a/components/dialogues/EditSite.tsx +++ b/components/dialogues/EditSite.tsx @@ -24,15 +24,20 @@ export default function EditSite({ site, onSiteEdited }: EditSiteProps) { setDescription(site.description || "") }, [site]) - const handleEditSite = () => { - editSite({ id: site.id, name, description, networks: site.networks }) - - setTimeout(() => { - if (onSiteEdited) { - console.log("onSiteEdited") - onSiteEdited() + const handleEditSite = async () => { + try { + const result = await editSite({ id: site.id, name, description, networks: site.networks }) + if (result) { + setError(result) + return } - }, 500) + if (onSiteEdited) { + onSiteEdited() + setSuccess("Site edited successfully") + } + } catch (err) { + setError("Failed to edit site") + } } return ( diff --git a/hooks/useSite.ts b/hooks/useSite.ts index 41e4717..1b36ba5 100644 --- a/hooks/useSite.ts +++ b/hooks/useSite.ts @@ -24,14 +24,21 @@ const useSite = () => { loadSite(); }, [loadSite]); - const editSite = (site: Site) => { + const editSite = (site: Site): string | void => { + if (!site.id) { + return 'Site ID is required'; + } + + if(site.name.length < 3) { + return 'Site name must be at least 3 characters long'; + } axios.post('/api/sites/edit', site) .then(() => { - console.log("Site edited successfully"); + return; }) .catch(err => { - console.error(err); - }) + return err.response?.data?.error || 'An error occurred'; + }); }; const deleteSite = (siteId: string) => {