import AppHeader from "@/components/AppHeader"; import ImageUser from "@/components/imageNew"; import ItemDetailMember from "@/components/itemDetailMember"; import LabelStatus from "@/components/labelStatus"; import HeaderRightMemberDetail from "@/components/member/headerMemberDetail"; import Skeleton from "@/components/skeleton"; import Text from "@/components/Text"; import { assetUserImage } from "@/constants/AssetsError"; import { ConstEnv } from "@/constants/ConstEnv"; import { valueRoleUser } from "@/constants/RoleUser"; import Styles from "@/constants/Styles"; import { apiGetProfile } from "@/lib/api"; import { router, Stack, useLocalSearchParams } from "expo-router"; import React, { useEffect, useState } from "react"; import { Pressable, RefreshControl, SafeAreaView, ScrollView, View } from "react-native"; import ImageViewing from 'react-native-image-viewing'; import Toast from "react-native-toast-message"; import { useSelector } from "react-redux"; type Props = { id: string, name: string, nik: string, email: string, phone: string, gender: string, position: string, group: string, img: string, isActive: boolean, role: string } export default function MemberDetail() { const { id } = useLocalSearchParams<{ id: string }>(); const [data, setData] = useState() const [errorImg, setErrorImg] = useState(false) const entityUser = useSelector((state: any) => state.user) const [isEdit, setEdit] = useState(true) const arrSkeleton = Array.from({ length: 5 }, (_, index) => index) const [loading, setLoading] = useState(true) const [refreshing, setRefreshing] = useState(false) const [preview, setPreview] = useState(false) async function handleLoad(loading: boolean) { try { setLoading(loading) const response = await apiGetProfile({ id: id }) if (response.success) { setData(response.data) setEdit(valueRoleUser.filter((v) => v.login == entityUser.role)[0]?.data.some((i: any) => i.id == response.data.idUserRole)) } else { Toast.show({ type: 'small', text1: response.message }) } } catch (error) { console.error(error) Toast.show({ type: 'small', text1: 'Gagal mengambil data' }) } finally { setLoading(false) } } useEffect(() => { handleLoad(true) }, []); const handleRefresh = async () => { setRefreshing(true) handleLoad(false) await new Promise(resolve => setTimeout(resolve, 2000)); setRefreshing(false) }; return ( { router.back() }} />, headerTitle: 'Anggota', headerTitleAlign: 'center', // headerRight: () => (entityUser.role != "user") && isEdit ? : <>, header: () => ( router.back()} right={ (entityUser.role != "user") && isEdit ? : <> } /> ) }} /> } > { loading ? <> : <> setPreview(true)}> {data?.name} {data?.role} } Informasi { loading ? arrSkeleton.map((item, index) => { return ( ) }) : <> } setPreview(false)} doubleTapToZoomEnabled /> ) }