Melhorias na Autenticação

Persistindo a autenticação do usuário

Instalação da lib redux-persist rodando o comando $ yarn add redux-persist

Arquivo src/store/persistReducers.js

import storage from 'redux-persist/lib/storage';
import { persistReducer } from 'redux-persist';
export default reducers => {
const persistedReducer = persistReducer(
{
key: 'gobarber', // A key se refere à aplicação
storage,
whitelist: ['auth', 'user'], // Os reducers a serem persistidos
},
reducers
);
return persistedReducer;
};

Alterações no arquivo src/store/index.js

import { persistStore } from 'redux-persist';
import createSagaMiddleware from 'redux-saga';
import createStore from './createStore';
import persistReducers from './persistReducers';
import rootReducer from './modules/rootReducer';
import rootSaga from './modules/rootSaga';
const sagaMonitor =
process.env.NODE_ENV === 'development'
? console.tron.createSagaMonitor()
: null;
const sagaMiddleware = createSagaMiddleware({ sagaMonitor });
const middlewares = [sagaMiddleware];
const store = createStore(persistReducers(rootReducer), middlewares);
const persistor = persistStore(store);
sagaMiddleware.run(rootSaga);
export { store, persistor };

Alteração no método de importação do arquivo Route.js

ANTES

import store from '~/store';

DEPOIS

import { store } from '~/store';

Arquivo src/App.js

Importação do PersistGate:

import { PersistGate } from 'redux-persist/integration/react';

Importação do persistor e importação do store sem a exportação default:

ANTES

import store from './store';

DEPOIS

import { store, persistor } from './store';

Inserção do PersistGate em coberto pelo Provider e cobrindo os demais componentes:

function App() {
return (
<Provider store={store}>
<PersistGate persistor={persistor}>
<Router history={history}>
<Routes />
<GlobalStyle />
</Router>
</PersistGate>
</Provider>
);
}