UNPKG

@shopgate/pwa-common

Version:

Common library for the Shopgate Connect PWA.

31 lines (28 loc) 1.04 kB
import { PipelineRequest, EACCESS } from '@shopgate/pwa-core'; import { requestUser, receiveUser, errorUser, toggleLoggedIn } from "../../action-creators/user"; import { SHOPGATE_USER_GET_USER } from "../../constants/Pipelines"; import { mutable } from "../../helpers/redux"; import { isUserLoggedIn } from "../../selectors/user"; /** * Get the current user * @return {Function} A redux thunk. */ function fetchUser() { return (dispatch, getState) => { dispatch(requestUser()); const request = new PipelineRequest(SHOPGATE_USER_GET_USER).setTrusted().setErrorBlacklist([EACCESS]).dispatch(); request.then(user => { dispatch(receiveUser(user)); // If the user's login state was incorrectly set false then set to true. if (!isUserLoggedIn(getState())) { dispatch(toggleLoggedIn(true)); } }).catch(error => { dispatch(toggleLoggedIn(false)); dispatch(errorUser(error)); }); return request; }; } /** @mixes {MutableFunction} */ export default mutable(fetchUser);