import AppHeader from "@/components/AppHeader"; import HeaderRightProjectDetail from "@/components/project/headerProjectDetail"; import SectionFile from "@/components/project/sectionFile"; import SectionLink from "@/components/project/sectionLink"; import SectionMember from "@/components/project/sectionMember"; import SectionReportProject from "@/components/project/sectionReportProject"; import SectionTanggalTugasProject from "@/components/project/sectionTanggalTugas"; import SectionCancel from "@/components/sectionCancel"; import SectionProgress from "@/components/sectionProgress"; import Styles from "@/constants/Styles"; import { apiGetProjectOne } from "@/lib/api"; import { useAuthSession } from "@/providers/AuthProvider"; import { router, Stack, useLocalSearchParams } from "expo-router"; import React, { useEffect, useState } from "react"; import { RefreshControl, SafeAreaView, ScrollView, View } from "react-native"; import { useSelector } from "react-redux"; type Props = { id: string, idVillage: string, idGroup: string, title: string, status: number, desc: string, reason: string, isActive: string, createdBy: string, createdAt: string, updatedAt: string, } export default function DetailProject() { const { token, decryptToken } = useAuthSession() const { id } = useLocalSearchParams<{ id: string }>(); const [data, setData] = useState() const [progress, setProgress] = useState(0) const [loading, setLoading] = useState(true) const update = useSelector((state: any) => state.projectUpdate) const [isMember, setIsMember] = useState(false) const entityUser = useSelector((state: any) => state.user) const [refreshing, setRefreshing] = useState(false) async function handleLoad(cat: 'data' | 'progress') { try { if (cat == 'data') setLoading(true) const hasil = await decryptToken(String(token?.current)) const response = await apiGetProjectOne({ user: hasil, cat: cat, id: id }) if (cat == 'data') { setData(response.data) } else { setProgress(response.data.progress) } } catch (error) { console.error(error) } finally { setLoading(false) } } async function checkMember() { try { const hasil = await decryptToken(String(token?.current)) const response = await apiGetProjectOne({ user: hasil, cat: 'member', id: id }) const cekMember = response.data.some((i: any) => i.idUser == hasil) setIsMember(cekMember) } catch (error) { console.error(error) } } useEffect(() => { handleLoad('data') }, [update.data]) useEffect(() => { handleLoad('progress') }, [update.progress]) useEffect(() => { checkMember() }, []) const handleRefresh = async () => { setRefreshing(true) await handleLoad('data') await handleLoad('progress') await new Promise(resolve => setTimeout(resolve, 2000)); setRefreshing(false) }; return ( { router.back() }} />, headerTitle: loading ? 'Loading... ' : data?.title, headerTitleAlign: 'center', // headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMember ? null : , header: () => ( router.back()} right={ (entityUser.role == "user" || entityUser.role == "coadmin") && !isMember ? null : } /> ) }} /> } > { data?.reason != null && data?.reason != "" && } ) }