import React, { useState, useEffect } from 'react'
import {
UserFormDetails as UserProfileController,
useLanguage,
useSession,
ToastType,
useToast
} from 'ordering-components/native'
import Spinner from 'react-native-loading-spinner-overlay'
import { launchImageLibrary } from 'react-native-image-picker'
import { StyleSheet, View } from 'react-native'
import { AccountParams } from '../../types'
import NavBar from '../NavBar'
import {
OIcon,
OIconButton,
OText,
OButton,
} from '../shared'
import { useTheme } from 'styled-components/native'
import { UserFormDetailsUI } from '../UserFormDetails'
import {
CenterView,
UserData,
Names,
EditButton
} from './styles'
const AccountUI = (props: AccountParams) => {
const {
navigation,
isEdit,
formState,
validationFields,
toggleIsEdit,
cleanFormState,
handleButtonUpdateClick
} = props
const [, t] = useLanguage()
const theme = useTheme()
const [{ user }] = useSession()
const [, { showToast }] = useToast()
const [phoneInputData, setPhoneInputData] = useState({
error: '',
phone: {
country_phone_code: null,
cellphone: null
}
})
const [phoneUpdate, setPhoneUpdate] = useState(false)
const styles = StyleSheet.create({
editButton: {
borderRadius: 25,
borderColor: theme.colors.primary,
backgroundColor: theme.colors.white,
borderWidth: 1,
color: theme.colors.primary,
marginVertical: 8,
},
});
const goToBack = () => navigation?.canGoBack() && navigation.goBack()
const handleImagePicker = () => {
launchImageLibrary({ mediaType: 'photo', maxHeight: 200, maxWidth: 200, includeBase64: true }, (response: any) => {
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.errorMessage) {
console.log('ImagePicker Error: ', response.errorMessage);
showToast(ToastType.Error, response.errorMessage);
} else {
if (response?.assets) {
const url = `data:${response.assets[0].type};base64,${response.assets[0].base64}`
handleButtonUpdateClick(null, true, url);
} else {
showToast(ToastType.Error, t('IMAGE_NOT_FOUND', 'Image not found'));
}
}
});
}
const handleCancelEdit = () => {
cleanFormState({ changes: {} });
toggleIsEdit();
setPhoneInputData({
error: '',
phone: {
country_phone_code: null,
cellphone: null
}
})
}
useEffect(() => {
if (formState.result.result && !formState.loading) {
if (formState.result?.error) {
showToast(ToastType.Error, formState.result.result);
} else {
showToast(ToastType.Success, t('UPDATE_SUCCESSFULLY', 'Update successfully'));
}
}
}, [formState.result])
useEffect(() => {
if (user?.cellphone && !user?.country_phone_code) {
setPhoneUpdate(true)
} else {
setPhoneUpdate(false)
}
}, [user?.country_phone_code])
return (
<>
handleImagePicker()}
/>
{!isEdit ? (
{user?.name}
{user?.lastname}
{(!!user?.middle_name || !!user?.second_lastname) && (
{user?.middle_name}
{user?.second_lastname}
)}
{user?.email}
{!!user?.cellphone && {user?.cellphone}}
{!!phoneUpdate && (
{t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number')}
)}
) : (
)}
{!validationFields.loading && !isEdit && (
)}
>
)
}
export const Account = (props: any) => {
const accoutProps = {
...props,
UIComponent: AccountUI
}
return
}