features_auth_RefreshAuthState.jsx

import { useDispatch, useSelector } from 'react-redux'
import { logingPending, logingSuccess, selectCurrentToken } from './authSlice'
import { userFirstName, userPending } from '../profile/userSlice'

/**
 * Component that refresh the state.auth.token depending on the localstorage token status.\
 * No props
 *
 * @namespace
 * @component
 * @author  Pierre-Yves Léglise <pleglise@pm.me>
 * @example
 *  RefreshAuthState()
 * @returns {Boolean} Authorization status
 *
 */
export const RefreshAuthState = () => {
  const dispatch = useDispatch()
  const localToken = localStorage.getItem('token')
  const localStorageFirstName = localStorage.getItem('firstName')
  const token = useSelector(selectCurrentToken)
  // keeps you logged in while refreshing
  if (localToken && !token) {
    dispatch(logingPending())
    dispatch(logingSuccess(localToken))
    if (localStorageFirstName) {
      dispatch(userPending())
      dispatch(userFirstName(localStorageFirstName))
    }
  }
}