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
/>
)
}