diff --git a/app/(dashboard)/proxy-hosts/ProxyHostsClient.tsx b/app/(dashboard)/proxy-hosts/ProxyHostsClient.tsx index 38bc7411..ec6c9366 100644 --- a/app/(dashboard)/proxy-hosts/ProxyHostsClient.tsx +++ b/app/(dashboard)/proxy-hosts/ProxyHostsClient.tsx @@ -1,6 +1,7 @@ "use client"; -import { useMemo, useState } from "react"; +import { useMemo, useState, useEffect } from "react"; +import { useRouter } from "next/navigation"; import { Alert, Box, @@ -236,8 +237,16 @@ function CreateHostDialog({ certificates: Certificate[]; accessLists: AccessList[]; }) { + const router = useRouter(); const [state, formAction] = useFormState(createProxyHostAction, INITIAL_ACTION_STATE); + useEffect(() => { + if (state.status === "success") { + router.refresh(); + setTimeout(onClose, 1000); + } + }, [state.status, router, onClose]); + return ( {state.status !== "idle" && state.message && ( - state.status === "success" && onClose()}> + {state.message} )} @@ -355,8 +364,16 @@ function EditHostDialog({ certificates: Certificate[]; accessLists: AccessList[]; }) { + const router = useRouter(); const [state, formAction] = useFormState(updateProxyHostAction.bind(null, host.id), INITIAL_ACTION_STATE); + useEffect(() => { + if (state.status === "success") { + router.refresh(); + setTimeout(onClose, 1000); + } + }, [state.status, router, onClose]); + return ( {state.status !== "idle" && state.message && ( - state.status === "success" && onClose()}> + {state.message} )} @@ -468,8 +485,16 @@ function DeleteHostDialog({ host: ProxyHost; onClose: () => void; }) { + const router = useRouter(); const [state, formAction] = useFormState(deleteProxyHostAction.bind(null, host.id), INITIAL_ACTION_STATE); + useEffect(() => { + if (state.status === "success") { + router.refresh(); + setTimeout(onClose, 1000); + } + }, [state.status, router, onClose]); + return ( {state.status !== "idle" && state.message && ( - state.status === "success" && onClose()}> + {state.message} )} diff --git a/app/(dashboard)/redirects/RedirectsClient.tsx b/app/(dashboard)/redirects/RedirectsClient.tsx index 3434e0c6..4faa3f70 100644 --- a/app/(dashboard)/redirects/RedirectsClient.tsx +++ b/app/(dashboard)/redirects/RedirectsClient.tsx @@ -1,6 +1,7 @@ "use client"; -import { useState } from "react"; +import { useEffect, useState } from "react"; +import { useRouter } from "next/navigation"; import { Alert, Box, @@ -207,6 +208,14 @@ export default function RedirectsClient({ redirects }: Props) { function CreateRedirectDialog({ open, onClose }: { open: boolean; onClose: () => void }) { const [state, formAction] = useFormState(createRedirectAction, INITIAL_ACTION_STATE); + const router = useRouter(); + + useEffect(() => { + if (state.status === "success") { + router.refresh(); + setTimeout(onClose, 1000); + } + }, [state.status, router, onClose]); return ( {state.status !== "idle" && state.message && ( - state.status === "success" && onClose()}> + {state.message} )} @@ -291,6 +300,14 @@ function EditRedirectDialog({ onClose: () => void; }) { const [state, formAction] = useFormState(updateRedirectAction.bind(null, redirect.id), INITIAL_ACTION_STATE); + const router = useRouter(); + + useEffect(() => { + if (state.status === "success") { + router.refresh(); + setTimeout(onClose, 1000); + } + }, [state.status, router, onClose]); return ( {state.status !== "idle" && state.message && ( - state.status === "success" && onClose()}> + {state.message} )} @@ -373,6 +390,14 @@ function DeleteRedirectDialog({ onClose: () => void; }) { const [state, formAction] = useFormState(deleteRedirectAction.bind(null, redirect.id), INITIAL_ACTION_STATE); + const router = useRouter(); + + useEffect(() => { + if (state.status === "success") { + router.refresh(); + setTimeout(onClose, 1000); + } + }, [state.status, router, onClose]); return ( {state.status !== "idle" && state.message && ( - state.status === "success" && onClose()}> + {state.message} )}