UNPKG

@shopgate/pwa-tracking

Version:

Tracking library for the Shopgate Connect PWA.

33 lines (32 loc) 983 B
import { createSelector } from 'reselect'; import { DEFAULT_LOGIN_STRATEGY, isUserLoggedIn, getUserData, makeGetLoginStrategy } from '@shopgate/engage/user'; /** * Creates a selector that retrieves user tracking data from the store. * @returns {Function} */ export function makeGetUser() { const getLoginStrategy = makeGetLoginStrategy(); return createSelector(isUserLoggedIn, getUserData, getLoginStrategy, (isLoggedIn, userData, loginStrategy) => { if (!isLoggedIn || !userData) { return null; } const { isFetching, loginType, ...trackedData } = userData || {}; if (Object.keys(trackedData).length === 0) { return null; } let type = null; if (loginStrategy !== DEFAULT_LOGIN_STRATEGY) { type = loginStrategy; } else if (['userGuest', 'userAccount'].includes(loginType)) { type = loginType === 'userGuest' ? 'guest' : 'standard'; } return { ...trackedData, type }; }); }