import { View, Text, ScrollView, Pressable } from 'react-native'; import React, { useContext, useEffect, useState } from 'react'; import { SafeAreaView } from 'react-native-safe-area-context'; import { router } from 'expo-router'; import { CrossLogoSvg } from '../global/SVG'; import { AuthContext } from '../../context/AuthProvider'; import NormalButton from '../global/normal_button'; import * as SecureStore from 'expo-secure-store'; import { authenticationService } from '../../service/authService'; import DropdownSelect from '../global/dropdown_select'; import { useTranslation } from '../../util/hooks/useTranslation'; const ChangeGenderPageComponent = () => { const { user, setUser } = useContext(AuthContext); const [token, setToken] = useState(null); const [gender, setGender] = useState(null); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const { t } = useTranslation(); const dropdownOption = [ { label: t('accountSettings.change_gender.male'), value: 'man' }, { label: t('accountSettings.change_gender.female'), value: 'woman' } ]; useEffect(() => { const getToken = async () => { const storedToken = await SecureStore.getItemAsync('accessToken'); setToken(storedToken); }; getToken(); }, []); const handleChangeGender = async () => { if (!gender) { setError(t('accountSettings.change_gender.select_gender_error')); return; } if (!token) { setError(t('accountSettings.change_gender.no_token_error')); return; } setError(null); setIsLoading(true); try { const success = await authenticationService.changeGender( gender, token ); if (success) { if (user) { setUser({ ...user, gender: gender }); } router.replace('accountMainPage'); } else { setError(t('accountSettings.change_gender.update_failed')); } } catch (error) { console.error('Error changing gender:', error); setError(t('accountSettings.change_gender.general_error')); } finally { setIsLoading(false); } }; return ( { if (router.canGoBack()) { router.back(); } else { router.replace('/accountMainPage'); } }} > {t('accountSettings.change_gender.change_gender_title')} {t('accountSettings.change_gender.select_new_gender')} { setGender(t); }} extendedStyle={{ width: '100%', padding: 10 }} /> {isLoading ? t('accountSettings.change_gender.changing') : t('common.confirm')} } onPress={handleChangeGender} disabled={isLoading} /> {error && ( {error} )} ); }; export default ChangeGenderPageComponent;