From bf35cd4592d4afee9e1671437d79d198c29a7e7b Mon Sep 17 00:00:00 2001 From: lukman Date: Tue, 27 Aug 2024 17:32:53 +0800 Subject: [PATCH] feat : update global --- src/module/discussion/lib/val_discussion.ts | 3 +++ src/module/discussion/ui/detail_discussion.tsx | 5 ++++- src/module/discussion/ui/drawer_detail_discussion.tsx | 6 ++++++ src/module/position/ui/drawer_detail_position.tsx | 7 ++++++- src/module/position/ui/drawer_list_position.tsx | 4 ++-- 5 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 src/module/discussion/lib/val_discussion.ts diff --git a/src/module/discussion/lib/val_discussion.ts b/src/module/discussion/lib/val_discussion.ts new file mode 100644 index 0000000..6e7f3d4 --- /dev/null +++ b/src/module/discussion/lib/val_discussion.ts @@ -0,0 +1,3 @@ +import { hookstate } from "@hookstate/core"; + +export const globalRefreshDiscussion = hookstate(false); \ No newline at end of file diff --git a/src/module/discussion/ui/detail_discussion.tsx b/src/module/discussion/ui/detail_discussion.tsx index 8ae14b6..1364b06 100644 --- a/src/module/discussion/ui/detail_discussion.tsx +++ b/src/module/discussion/ui/detail_discussion.tsx @@ -12,6 +12,8 @@ import moment from "moment"; import "moment/locale/id"; import { useParams, useRouter } from "next/navigation"; import toast from "react-hot-toast"; +import { useHookstate } from "@hookstate/core"; +import { globalRefreshDiscussion } from "../lib/val_discussion"; export default function DetailDiscussion({ id, idDivision }: { id: string, idDivision: string }) { const [isData, setData] = useState() @@ -19,6 +21,7 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv const param = useParams<{ id: string, detail: string }>() const [isLoad, setIsLoad] = useState(true) const router = useRouter() + const refresh = useHookstate(globalRefreshDiscussion) const getData = async () => { try { @@ -35,7 +38,7 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv useShallowEffect(() => { getData() - }, []) + }, [refresh.get()]) const sendComent = async () => { try { diff --git a/src/module/discussion/ui/drawer_detail_discussion.tsx b/src/module/discussion/ui/drawer_detail_discussion.tsx index 87ebbb4..9d84aa6 100644 --- a/src/module/discussion/ui/drawer_detail_discussion.tsx +++ b/src/module/discussion/ui/drawer_detail_discussion.tsx @@ -8,12 +8,15 @@ import { FaCheck, FaPencil } from "react-icons/fa6"; import { MdClose } from "react-icons/md"; import { funDeleteDiscussion, funEditStatusDiscussion } from "../lib/api_discussion"; import { useParams, useRouter } from "next/navigation"; +import { useHookstate } from "@hookstate/core"; +import { globalRefreshDiscussion } from "../lib/val_discussion"; export default function DrawerDetailDiscussion({ onSuccess, id, status, idDivision }: { onSuccess: (val: boolean) => void, id: string, status: number, idDivision: string }) { const [isValModal, setValModal] = useState(false) const [isValModalStatus, setValModalStatus] = useState(false) const router = useRouter() const param = useParams<{ id: string, detail: string }>() + const refresh = useHookstate(globalRefreshDiscussion) async function fetchStatusDiscussion(val: boolean) { @@ -23,6 +26,8 @@ export default function DrawerDetailDiscussion({ onSuccess, id, status, idDivisi if (response.success) { toast.success(response.message) + refresh.set(!refresh.get()) + onSuccess(false) setValModalStatus(false) } else { toast.error(response.message) @@ -45,6 +50,7 @@ export default function DrawerDetailDiscussion({ onSuccess, id, status, idDivisi if (response.success) { toast.success(response.message) setValModal(false) + onSuccess(false) router.push(`/division/${param.id}/discussion`) } else { toast.error(response.message) diff --git a/src/module/position/ui/drawer_detail_position.tsx b/src/module/position/ui/drawer_detail_position.tsx index 9740d30..61cfac9 100644 --- a/src/module/position/ui/drawer_detail_position.tsx +++ b/src/module/position/ui/drawer_detail_position.tsx @@ -8,12 +8,15 @@ import toast from "react-hot-toast" import { FaPencil, FaToggleOff } from "react-icons/fa6" import { funEditPosition, funEditStatusPosition, funGetOnePosition } from "../lib/api_position" import { IDataPosition } from "../lib/type_position" +import { useHookstate } from "@hookstate/core" +import { globalRefreshPosition } from "../lib/val_posisition" export default function DrawerDetailPosition({ onUpdated, id, isActive }: { onUpdated: (val: boolean) => void, id: string, isActive: boolean; }) { const [openDrawerGroup, setOpenDrawerGroup] = useState(false) const [isModal, setModal] = useState(false) + const refresh = useHookstate(globalRefreshPosition) const [data, setData] = useState({ id: id, name: "", @@ -68,6 +71,7 @@ export default function DrawerDetailPosition({ onUpdated, id, isActive }: { if (res.success) { toast.success(res.message); + refresh.set(!refresh.get()) onUpdated(true); onCLose(); } else { @@ -84,7 +88,7 @@ export default function DrawerDetailPosition({ onUpdated, id, isActive }: { useShallowEffect(() => { getAllGroup() getOneData() - }, []) + }, [refresh.get()]) async function nonActive(val: boolean) { try { @@ -92,6 +96,7 @@ export default function DrawerDetailPosition({ onUpdated, id, isActive }: { const res = await funEditStatusPosition(id, { isActive: isActive }) if (res.success) { toast.success(res.message); + refresh.set(!refresh.get()) onUpdated(true); } else { onUpdated(false); diff --git a/src/module/position/ui/drawer_list_position.tsx b/src/module/position/ui/drawer_list_position.tsx index 7419322..0f890a6 100644 --- a/src/module/position/ui/drawer_list_position.tsx +++ b/src/module/position/ui/drawer_list_position.tsx @@ -43,7 +43,7 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo useShallowEffect(() => { getAllGroup() - }, []) + }, [refresh.get()]) async function onSubmit() { @@ -56,7 +56,7 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo if (res.success) { setOpenDrawerGroup(false) toast.success(res.message) - refresh.set(true) + refresh.set(!refresh.get()) onCreated(true) } else { toast.error(res.message)