import React, { useState, useRef, useEffect } from 'react'; import axios from 'axios'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { StyleSheet, Text, View, Image, TouchableOpacity, Animated, BackHandler, FlatList, Button, TextInput } from 'react-native'; import Container from '../components/Container'; const ScreenProfile = ({ navigation }) => { const [username, setUsername] = useState(null); const [password, setPassword] = useState(null); const [token, setToken] = useState(null); // Sebagai kunci profile const [profileId, setProfileId] = useState(null); const [profileName, setProfileName] = useState(null); const [profileSex, setProfileSex] = useState(null); const [profileDob, setProfileDob] = useState(null); const [profileAge, setProfileAge] = useState(null); const storeToken = async (auth_token) => { await AsyncStorage.setItem('auth_token', auth_token); }; const getToken = async () => { const savedToken = await AsyncStorage.getItem('auth_token'); if (savedToken !== null) { setToken(savedToken); } }; const removeToken = async () => { await AsyncStorage.removeItem('auth_token'); setToken(null); }; const HttpRequest = (url,body,conf,handler) => { axios.post(url,body,conf).then(response => { handler(response.data); }).catch(error => { console.error('Terjadi kesalahan:', error.stack); }); }; const handleLogin = (data) => { if (data.status === 'success') { storeToken(data.data.jwt); getToken(); navigation.goBack(); } }; const handleLogout = (data) => { if (data.status === 'success') { removeToken(); navigation.goBack(); } }; const submitLogin = () => { const url = 'https://asrul.costafuture.com/api/auth/login'; const body = { username:username, password:password }; const config = {}; HttpRequest(url, body, config, handleLogin); }; const submitLogout = () => { const url = 'https://asrul.costafuture.com/api/auth/logout'; const body = {}; const config = { headers: { Authorization: `Bearer ${token}` } }; HttpRequest(url, body, config, handleLogout); }; const handleProfileDetail = (data) => { if (data.status === 'success') { setProfileId(data.data.id); setProfileName(data.data.name); setProfileSex(data.data.sex); setProfileDob(data.data.dob); if (data.data.dob !== null) { const tanggalLahir = new Date(data.data.dob); const today = new Date(); const umur = today.getFullYear() - tanggalLahir.getFullYear(); const bulanSekarang = today.getMonth() - tanggalLahir.getMonth(); let umurTerupdate; if (bulanSekarang < 0 || (bulanSekarang === 0 && today.getDate() < tanggalLahir.getDate())) { umurTerupdate = umur - 1; } else { umurTerupdate = umur; } setProfileAge(umurTerupdate); } } } const reqProfileDetail = async () => { try { const url = 'https://asrul.costafuture.com/api/checkcare/profile/detail'; const body = {}; const auth_token = await AsyncStorage.getItem('auth_token'); const config = { headers: { Authorization: `Bearer ${auth_token}` } }; if (auth_token !== null) { HttpRequest(url, body, config, handleProfileDetail); } }catch(error){ console.log(error.stack); } }; const handleProfileEdit = (data) => { reqProfileDetail(); }; const reqProfileEdit = async () => { try { const url = 'https://asrul.costafuture.com/api/checkcare/profile/edit'; const body = { id:profileId, name:profileName, dob:profileDob, sex:profileSex }; const auth_token = await AsyncStorage.getItem('auth_token'); const config = { headers: { Authorization: `Bearer ${auth_token}` } }; if (auth_token !== null) { HttpRequest(url, body, config, handleProfileEdit); } }catch(error){ console.log(error.stack); } }; useEffect(() => { getToken(); reqProfileDetail(); }, []); return ( {token ? ( ID: {profileId} setProfileName(text)} value={profileName} /> {profileSex} {profileAge} Tahun {profileDob}