import { IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonChip, IonContent, IonFab, IonFabButton, IonGrid, IonHeader, IonIcon, IonItem, IonLabel, IonList, IonListHeader, IonPage, IonTitle, IonToast, IonToolbar, } from "@ionic/react"; import { useHistory } from "react-router-dom"; import React, { useState, useEffect, useReducer } from "react"; import { IonRow, IonCol } from "@ionic/react"; import { createOutline } from "ionicons/icons"; import * as sessionRoutes from '../services/api/session'; import * as usersRoutes from '../services/api/users'; import './Perfil.css' import LocalStorage from "../LocalStorage"; import { refreshSession } from "../services/refreshSession"; const Perfil: React.FC = () => { 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(); useEffect(() => { 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 loadUserData = async () => { let userId = '' // verify if user is authenticated const refreshedSession = await refreshSession() if (refreshedSession.error) { redirectUserToLogin() return } await usersRoutes.getById(userId).then(response => { if (response.status === 'error') { setMessageToast(response.message.data) setShowToast(true); return } const userData = response.data setInputValues({ 'name': userData.name, 'lastname': userData.lastname, 'email': userData.email, 'birth_date': userData.birth_date, 'bio': userData.bio }); }).catch(() => { redirectUserToLogin() }) } const userToken = LocalStorage.getToken() if (!userToken) { redirectUserToLogin() } // const refreshResponse = refreshSession() loadUserData() }, [history]); return ( Seu perfil Seu perfil avatar {inputValues.name} {inputValues.lastname} Biografia {inputValues.bio ? inputValues.bio : 'Sem biografia.'} Status do perfil Passageiro Dashboard Confirmar perfil Cadastrar Van Pagamentos Avaliações history.push({ pathname: '/perfil/editar', state: { userData: inputValues } })}> setShowToast(false)} message={messageToast} duration={2500} /> ); }; export default Perfil;