diff --git a/src/contexts/AuthContext.tsx b/src/contexts/AuthContext.tsx index 5247fd6..3c50cf2 100644 --- a/src/contexts/AuthContext.tsx +++ b/src/contexts/AuthContext.tsx @@ -3,7 +3,7 @@ import { createContext, useEffect, useState } from 'react'; import { UserDTO } from '@dtos/UserDTO'; import { api } from '@services/api'; import { storageUserGet, storageUserRemove, storageUserSave } from '@storage/storageUser'; -import { storageAuthTokenSave } from '@storage/storageAuthToken'; +import { storageAuthTokenGet, storageAuthTokenSave } from '@storage/storageAuthToken'; type AuthContextData = { user: UserDTO; @@ -22,17 +22,17 @@ export function AuthContextProvider({ children }: AuthContextProviderProps) { const [user, setUser] = useState({} as UserDTO); const [isLoadingUserStorageData, setIsLoadingUserStorageData] = useState(true); - async function storeUserAndToken(userData: UserDTO, token: string) { + async function updateUserAndTokenData(userData: UserDTO, token: string) { + api.defaults.headers.common['Authorization'] = `Bearer ${token}`; + setUser(userData); + } + + async function saveUserAndTokenStorageData(userData: UserDTO, token: string) { try { setIsLoadingUserStorageData(true); - - api.defaults.headers.common['Authorization'] = `Bearer ${token}`; - - setUser(userData); await storageUserSave(userData); await storageAuthTokenSave(token); } catch (error) { - console.error(error); throw error; } finally { setIsLoadingUserStorageData(false); @@ -44,7 +44,8 @@ export function AuthContextProvider({ children }: AuthContextProviderProps) { const { data } = await api.post('/sessions', { email, password }); if (data.user && data.token) { - storeUserAndToken(data.user, data.token); + saveUserAndTokenStorageData(data.user, data.token); + updateUserAndTokenData(data.user, data.token); } } catch (error) { console.error(error); @@ -67,9 +68,13 @@ export function AuthContextProvider({ children }: AuthContextProviderProps) { async function loadUserData() { try { + setIsLoadingUserStorageData(true); + const loggedUser = await storageUserGet(); - if (loggedUser) { - setUser(loggedUser); + const token = await storageAuthTokenGet(); + + if (loggedUser && token) { + updateUserAndTokenData(loggedUser, token); } } catch (error) { throw error; diff --git a/src/storage/storageAuthToken.ts b/src/storage/storageAuthToken.ts index df01c6a..9bf1345 100644 --- a/src/storage/storageAuthToken.ts +++ b/src/storage/storageAuthToken.ts @@ -5,3 +5,7 @@ import { TOKEN_STORAGE } from './storageConfig'; export async function storageAuthTokenSave(token: string) { await AsyncStorage.setItem(TOKEN_STORAGE, token); } + +export async function storageAuthTokenGet() { + return await AsyncStorage.getItem(TOKEN_STORAGE); +}