import AppHeader from "@/components/AppHeader"; import { ButtonHeader } from "@/components/buttonHeader"; import Text from "@/components/Text"; import { assetUserImage } from "@/constants/AssetsError"; import { ConstEnv } from "@/constants/ConstEnv"; import Styles from "@/constants/Styles"; import { apiGetProfile } from "@/lib/api"; import { setEntities } from "@/lib/entitiesSlice"; import { useAuthSession } from "@/providers/AuthProvider"; import { useTheme } from "@/providers/ThemeProvider"; import { Feather, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons"; import { LinearGradient } from "expo-linear-gradient"; import { router, Stack } from "expo-router"; import { useState } from "react"; import { Image, Pressable, RefreshControl, SafeAreaView, ScrollView, View } from "react-native"; import ImageViewing from 'react-native-image-viewing'; import { useDispatch, useSelector } from 'react-redux'; export default function Profile() { const { colors } = useTheme(); const entities = useSelector((state: any) => state.entities) const [error, setError] = useState(false) const [preview, setPreview] = useState(false) const [refreshing, setRefreshing] = useState(false) const dispatch = useDispatch() const { token, decryptToken } = useAuthSession() async function handleUserLogin() { const hasil = await decryptToken(String(token?.current)) apiGetProfile({ id: hasil }) .then((data) => dispatch(setEntities(data.data))) .catch((error) => { console.error(error) }); } const handleRefresh = async () => { setRefreshing(true) handleUserLogin() await new Promise(resolve => setTimeout(resolve, 2000)); setRefreshing(false) }; const infoRows = [ { icon: , label: 'NIK', value: entities.nik }, { icon: , label: 'Lembaga Desa', value: entities.group }, { icon: , label: 'Jabatan', value: entities.position }, { icon: , label: 'No Telepon', value: `0${entities.phone}` }, { icon: , label: 'Email', value: entities.email }, { icon: , label: 'Jenis Kelamin', value: entities.gender == "F" ? 'Perempuan' : 'Laki-laki' }, ] return ( ( router.back()} right={ } onPress={() => router.push('/setting')} /> } /> ) }} /> } style={[Styles.h100, { backgroundColor: colors.background }]} > setPreview(true)}> setError(true)} style={[Styles.userProfileBig]} /> {entities.name} {entities.role} {entities.isApprover && ( APPROVER )} Informasi {infoRows.map((item, index, arr) => ( {item.icon} {item.label} {item.value ?? '-'} ))} setPreview(false)} doubleTapToZoomEnabled /> ) }