import { IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonChip, IonContent, IonHeader, IonIcon, IonItem, IonLabel, IonList, IonListHeader, IonPage, IonTitle, IonToast, IonToolbar, } from "@ionic/react"; import { useHistory } from "react-router-dom"; import React, { useState, useEffect, useReducer, useContext } from "react"; import { cardOutline, carOutline, createOutline, exitOutline, shieldCheckmarkOutline, starOutline } from "ionicons/icons"; import './Perfil.css' import LocalStorage from "../LocalStorage"; import sessionsService from '../services/functions/sessionsService' import usersService from '../services/functions/usersService' import { UserContext } from "../App"; const Perfil: React.FC = () => { const user = useContext(UserContext); const [showToast, setShowToast] = useState(false); const [messageToast, setMessageToast] = useState(''); const [inputValues, setInputValues] = useReducer( (state: any, newState: any) => ({ ...state, ...newState }), { name: '', lastname: '', email: '', birth_date: '', bio: '', } ); const history = useHistory(); const redirectUserToLogin = () => { // TODO, não impede o usuário de retornar a página de login history.push({ pathname: '/login' }); setMessageToast("Por favor, autentique-se!"); setShowToast(true); } const logoff = () => { LocalStorage.clearToken() user.setIsLoggedIn(false); history.push('/login') } useEffect(() => { const loadUserData = async () => { let userId = '' // verify if user is authenticated const refreshSessionRes = await sessionsService.refreshSession() if (refreshSessionRes.error) { redirectUserToLogin() return } if (refreshSessionRes.userId) { userId = refreshSessionRes.userId } // get user info by ID const getByIdRes = await usersService.getById(userId) if (getByIdRes.error) { setMessageToast(getByIdRes.error.errorMessage) setShowToast(true) return } if (getByIdRes.userData) { const userData = getByIdRes.userData if (isMounted) { setInputValues({ 'name': userData.name, 'lastname': userData.lastname, 'email': userData.email, 'birth_date': userData.birth_date, 'bio': userData.bio }); } } } let isMounted = true; const userToken = LocalStorage.getToken() if (!userToken) { redirectUserToLogin() } loadUserData() return () => { isMounted = false }; }, []); return ( Seu perfil Seu perfil {/* avatar */} avatar {inputValues.name} {inputValues.lastname}
Status: {/* TODO, deve vir do backend */} Passageiro
Biografia {inputValues.bio ? inputValues.bio : 'Sem biografia.' } {/* */} Configurações history.push({ pathname: '/perfil/editar', state: { userData: inputValues } })}> Editar perfil Completar perfil history.push({ pathname: '/cadastro-van'})}> Cadastrar Van Pagamentos Avaliações Sair da conta setShowToast(false)} message={messageToast} duration={2500} />
); }; export default Perfil;