diff --git a/app/api/sites/delete/route.ts b/app/api/sites/delete/route.ts index 44adf72..30c2029 100644 --- a/app/api/sites/delete/route.ts +++ b/app/api/sites/delete/route.ts @@ -3,7 +3,7 @@ import prisma from "@/app/prisma"; import { z } from "zod/v4"; const schema = z.object({ - siteId: z.string(), + siteId: z.number(), }); export async function DELETE(request: NextRequest) { @@ -12,7 +12,7 @@ export async function DELETE(request: NextRequest) { try { const site = await prisma.site.delete({ - where: { id: Number(siteId.siteId) }, + where: { id: siteId.siteId }, }); return NextResponse.json(site); diff --git a/app/api/sites/networks/delete/route.ts b/app/api/sites/networks/delete/route.ts index 55e9586..cf3dfed 100644 --- a/app/api/sites/networks/delete/route.ts +++ b/app/api/sites/networks/delete/route.ts @@ -3,7 +3,7 @@ import prisma from "@/app/prisma"; import { z } from "zod/v4"; const schema = z.object({ - networkId: z.string(), + networkId: z.number(), }); export async function DELETE(request: NextRequest) { @@ -13,7 +13,7 @@ export async function DELETE(request: NextRequest) { try { await prisma.network.delete({ where: { - id: Number(network.networkId), + id: network.networkId, }, }); diff --git a/app/api/sites/networks/edit/route.ts b/app/api/sites/networks/edit/route.ts index 872e96b..bb88a54 100644 --- a/app/api/sites/networks/edit/route.ts +++ b/app/api/sites/networks/edit/route.ts @@ -16,7 +16,7 @@ export async function POST(request: NextRequest) { try { const network = await prisma.network.update({ where: { - id: Number(body.id), + id: body.id, }, data: { name: body.name, diff --git a/app/dashboard/sites/[siteId]/SitePage.tsx b/app/dashboard/sites/[siteId]/SitePage.tsx index ef61476..e9fe2fa 100644 --- a/app/dashboard/sites/[siteId]/SitePage.tsx +++ b/app/dashboard/sites/[siteId]/SitePage.tsx @@ -1,7 +1,7 @@ "use client" import Sidebar from "@/components/Sidebar" import useSite from "@/hooks/useSites" -import { useEffect, useState } from "react" +import { useEffect, useState, useRef } from "react" import { Network } from "@/app/types" import Loading from "@/components/Loading" import { EditModeToggle } from "@/components/EditModeToggle" @@ -15,15 +15,16 @@ import DeleteSite from "@/components/dialogues/DeleteSite" interface SitesPageProps { username: string name: string - siteId: string + siteId: number } export default function SitesPage({ username, name, siteId }: SitesPageProps) { const { site, loadSite, updateSite, setSiteId, loading } = useSite() const [isEditMode, setIsEditMode] = useState(false) + const editSiteRef = useRef<{ resetForm: () => void }>(null) const [selectedNetwork, setSelectedNetwork] = useState(null) - const [selectedNetworkId, setSelectedNetworkId] = useState('') + const [selectedNetworkId, setSelectedNetworkId] = useState(null) useEffect(() => { if (siteId) { @@ -31,6 +32,11 @@ export default function SitesPage({ username, name, siteId }: SitesPageProps) { } }, [siteId, setSiteId]) + const handleEditClick = () => { + editSiteRef.current?.resetForm() + ;(document.getElementById('edit_site') as HTMLDialogElement)?.showModal() + } + return (
@@ -49,7 +55,7 @@ export default function SitesPage({ username, name, siteId }: SitesPageProps) { <> @@ -167,7 +173,7 @@ export default function SitesPage({ username, name, siteId }: SitesPageProps) { )} - + {selectedNetwork && ( ; } else { - return ; + return ; } } \ No newline at end of file diff --git a/components/dialogues/AddSite.tsx b/components/dialogues/AddSite.tsx index f7411ea..0397273 100644 --- a/components/dialogues/AddSite.tsx +++ b/components/dialogues/AddSite.tsx @@ -19,7 +19,7 @@ export default function AddSite({ onSiteAdded }: AddSiteProps) { const { addSite } = useSite(); const addSiteHandler = async () => { - const response = addSite({ id: "", name, description, networks: [] }); + const response = addSite({ id: 0, name, description, networks: [] }); if (typeof response === "string") { setError(response) return diff --git a/components/dialogues/DeleteNetwork.tsx b/components/dialogues/DeleteNetwork.tsx index c95ef3c..a77a51c 100644 --- a/components/dialogues/DeleteNetwork.tsx +++ b/components/dialogues/DeleteNetwork.tsx @@ -6,7 +6,7 @@ import ErrorToast from "@/components/Error"; import SuccessToast from "@/components/Success"; interface DeleteNetworkProps { - networkId: string; + networkId: number; onNetworkDeleted?: () => void; } diff --git a/components/dialogues/DeleteSite.tsx b/components/dialogues/DeleteSite.tsx index 5dc2515..df0038d 100644 --- a/components/dialogues/DeleteSite.tsx +++ b/components/dialogues/DeleteSite.tsx @@ -5,7 +5,7 @@ import { Trash2, AlertTriangle } from "lucide-react"; import useSite from "@/hooks/useSites"; interface DeleteSiteProps { - siteId: string; + siteId: number; } export default function DeleteSite({ siteId }: DeleteSiteProps) { @@ -42,7 +42,7 @@ export default function DeleteSite({ siteId }: DeleteSiteProps) {
-
+ +
) -} \ No newline at end of file +}) + +EditSite.displayName = 'EditSite' + +export default EditSite \ No newline at end of file diff --git a/hooks/useNetworks.ts b/hooks/useNetworks.ts index 441a0c0..4d98d2f 100644 --- a/hooks/useNetworks.ts +++ b/hooks/useNetworks.ts @@ -33,7 +33,7 @@ const useNetworks = () => { }); }; - const deleteNetwork = (networkId: string): Promise | string => { + const deleteNetwork = (networkId: number): Promise | string => { if (!networkId) { return 'Network ID is required'; } diff --git a/hooks/useSites.ts b/hooks/useSites.ts index 85b0e72..0e5cae2 100644 --- a/hooks/useSites.ts +++ b/hooks/useSites.ts @@ -10,7 +10,7 @@ const useSite = () => { description: "", networks: [] }); - const [siteId, setSiteId] = useState(""); + const [siteId, setSiteId] = useState(0); const [loading, setLoading] = useState(false); const [currentPage, setCurrentPage] = useState(1); const [itemPerPage, setItemPerPage] = useState(() => { @@ -22,10 +22,11 @@ const useSite = () => { const [sites, setSites] = useState([]); const loadSite = useCallback(() => { + console.log(siteId) if (!siteId) return; setLoading(true); axios.get('/api/sites/get', { - params: { siteId } + params: { siteId: siteId } }).then((response) => { setSite(response.data.site); setLoading(false); @@ -35,7 +36,7 @@ const useSite = () => { const updateSite = useCallback(() => { if (!siteId) return; axios.get('/api/sites/get', { - params: { siteId } + params: { siteId: siteId } }).then((response) => { setSite(response.data.site); }); @@ -77,12 +78,12 @@ const useSite = () => { }); }; - const deleteSite = (siteId: string) => { + const deleteSite = (siteId: number) => { axios.delete('/api/sites/delete', { - params: { siteId } + params: { siteId: siteId } }) .then(() => { - setSiteId(''); + setSiteId(0); }) .catch(err => { console.error(err);