'use client' import { useHookstate } from '@hookstate/core'; import { ActionIcon, Box, Grid, Group, Progress, Skeleton, Text } from '@mantine/core'; import { useParams } from 'next/navigation'; import React, { useState } from 'react'; import { HiMiniPresentationChartBar } from 'react-icons/hi2'; import { globalRefreshProject } from '../lib/val_project'; import toast from 'react-hot-toast'; import { funGetOneProjectById } from '../lib/api_project'; import { useShallowEffect } from '@mantine/hooks'; import { TEMA } from '@/module/_global'; import { IoIosWarning } from 'react-icons/io'; export default function ProgressDetailProject() { const [valProgress, setValProgress] = useState(0) const [valLastUpdate, setValLastUpdate] = useState('') const param = useParams<{ id: string }>() const refresh = useHookstate(globalRefreshProject) const [loading, setLoading] = useState(true) const tema = useHookstate(TEMA) const [reason, setReason] = useState("") async function getOneData() { try { setLoading(true) const res = await funGetOneProjectById(param.id, 'progress'); if (res.success) { setValProgress(res.data.progress); setValLastUpdate(res.data.lastUpdate); } else { toast.error(res.message); } setLoading(false) } catch (error) { console.error(error); toast.error("Gagal mendapatkan progress Kegiatan, coba lagi nanti"); } finally { setLoading(false) } } async function getOneDataCancel() { try { const res = await funGetOneProjectById(param.id, 'data'); console.log(res.data) if (res.success) { setReason(res.data.reason); } else { toast.error(res.message); } } catch (error) { console.error(error); toast.error("Gagal mendapatkan data Kegiatan, coba lagi nanti"); } } useShallowEffect(() => { getOneDataCancel(); }, [param.id]) function onRefresh() { if (refresh.get()) { getOneData() refresh.set(false) } } useShallowEffect(() => { onRefresh() }, [refresh.get()]) useShallowEffect(() => { getOneData(); }, [param.id]) return ( <> {reason !== null ? ( Kegiatan dibatalkan {reason} ) : null } {loading ? : Kemajuan Kegiatan {valProgress}% } ); }