diff --git a/src/data/constants/requests.js b/src/data/constants/requests.js index d7e4076..fc9d6d1 100644 --- a/src/data/constants/requests.js +++ b/src/data/constants/requests.js @@ -10,6 +10,8 @@ export const RequestStates = StrictDict({ export const RequestKeys = StrictDict({ initialize: 'initialize', refreshList: 'refreshList', + enrollEntitlementSession: 'enrollEntitlementSession', + leaveEntitlementSession: 'leaveEntitlementSession', }); export const ErrorCodes = StrictDict({ diff --git a/src/data/redux/app/reducer.js b/src/data/redux/app/reducer.js index 636e700..2e73e6b 100644 --- a/src/data/redux/app/reducer.js +++ b/src/data/redux/app/reducer.js @@ -33,7 +33,7 @@ const app = createSlice({ loadGlobalData: (state, { payload }) => ({ ...state, emailConfirmation: payload.emailConfirmation, - enterpriseDashboards: payload.enterpriseDashboards, + enterpriseDashboard: payload.enterpriseDashboard, platformSettings: payload.platformSettings, suggestedCourses: payload.suggestedCourses, }), diff --git a/src/data/redux/app/selectors.js b/src/data/redux/app/selectors.js index 7e12eb4..8ad4127 100644 --- a/src/data/redux/app/selectors.js +++ b/src/data/redux/app/selectors.js @@ -15,7 +15,7 @@ export const simpleSelectors = { platformSettings: mkSimpleSelector(app => app.platformSettings), suggestedCourses: mkSimpleSelector(app => app.suggestedCourses), emailConfirmation: mkSimpleSelector(app => app.emailConfirmation), - enterpriseDashboards: mkSimpleSelector(app => app.enterpriseDashboards), + enterpriseDashboard: mkSimpleSelector(app => app.enterpriseDashboard), selectSessionModal: mkSimpleSelector(app => app.selectSessionModal), }; @@ -25,8 +25,8 @@ export const numCourses = createSelector( ); export const hasCourses = createSelector([module.numCourses], (num) => num > 0); export const hasAvailableDashboards = createSelector( - [module.simpleSelectors.enterpriseDashboards], - (data) => !!data.availableDashboards, + [module.simpleSelectors.enterpriseDashboard], + (data) => data !== null, ); export const showSelectSessionModal = createSelector( [module.simpleSelectors.selectSessionModal], diff --git a/src/data/redux/hooks.js b/src/data/redux/hooks.js index e8b6329..7172d80 100644 --- a/src/data/redux/hooks.js +++ b/src/data/redux/hooks.js @@ -6,7 +6,7 @@ import appSelectors from './app/selectors'; const { courseCard } = appSelectors; export const useEmailConfirmationData = () => useSelector(appSelectors.emailConfirmation); -export const useEnterpriseDashboardData = () => useSelector(appSelectors.enterpriseDashboards); +export const useEnterpriseDashboardData = () => useSelector(appSelectors.enterpriseDashboard); export const usePlatformSettingsData = () => useSelector(appSelectors.platformSettings); // suggested courses is max at 3 at the moment. export const useSuggestedCoursesData = () => useSelector(appSelectors.suggestedCourses).slice(0, 3); diff --git a/src/data/redux/thunkActions/app.js b/src/data/redux/thunkActions/app.js index 89c6281..550d12a 100644 --- a/src/data/redux/thunkActions/app.js +++ b/src/data/redux/thunkActions/app.js @@ -1,5 +1,6 @@ import { StrictDict } from 'utils'; import { actions, selectors } from 'data/redux'; +import { post } from 'data/services/lms/utils'; import requests from './requests'; @@ -15,9 +16,8 @@ import requests from './requests'; export const initialize = () => (dispatch) => ( dispatch(requests.initializeList({ onSuccess: (({ courses, ...globalData }) => { - console.log({ courses }); - dispatch(actions.app.loadCourses({ courses })); dispatch(actions.app.loadGlobalData(globalData)); + dispatch(actions.app.loadCourses({ courses })); }), })) ); @@ -25,19 +25,26 @@ export const initialize = () => (dispatch) => ( export const refreshList = () => (dispatch) => ( dispatch(requests.initializeList({ onSuccess: (({ courses, ...globalData }) => { - dispatch(actions.app.loadCourses({ courses })); dispatch(actions.app.loadGlobalData(globalData)); + dispatch(actions.app.loadCourses({ courses })); }), })) ); // TODO: connect hook to actual api later -export const sendConfirmEmail = () => () => console.log('send confirm email'); +export const sendConfirmEmail = () => (dispatch, getState) => post( + selectors.app.emailConfirmation(getState()).sendEmailUrl, +); export const updateEntitlementSession = (cardId, selection) => (dispatch, getState) => { const entitlement = selectors.app.courseCard.entitlement(getState(), cardId); const { uuid } = entitlement; - console.log({ cardId, selection, entitlement, uuid }); + console.log({ + cardId, + selection, + entitlement, + uuid, + }); }; export default StrictDict({ diff --git a/src/data/redux/thunkActions/requests.js b/src/data/redux/thunkActions/requests.js index f345dd4..4a10f09 100644 --- a/src/data/redux/thunkActions/requests.js +++ b/src/data/redux/thunkActions/requests.js @@ -42,12 +42,35 @@ export const initializeList = ({ onSuccess, onFailure }) => (dispatch) => { })); }; -export const enrollEntitlementession = ({ onSuccess, onFailure, courseId }) => (dispatch, getState) => { +export const updateEntitlementEnrollment = ({ + uuid, + courseId, + onSuccess, + onFailure, +}) => (dispatch) => { + dispatch(networkRequest({ + requestKey: RequestKeys.enrollEntitlementSession, + onFailure, + onSuccess, + promise: api.updateEntitlementEnrollment({ uuid, courseId }), + })); }; -export const leaveEntitlementession = ({ onSuccess, onFailure, courseId }) => (dispatch, getState) => { +export const leaveEntitlementSession = ({ + uuid, + onSuccess, + onFailure, +}) => (dispatch) => { + dispatch(networkRequest({ + requestKey: RequestKeys.leaveEntitlementSession, + onFailure, + onSuccess, + promise: api.leaveEntitlementEnrollment({ uuid }), + })); }; export default StrictDict({ initializeList, + updateEntitlementEnrollment, + leaveEntitlementSession, });