feat: entitlement actions and enterprise dash data updates
This commit is contained in:
@@ -10,6 +10,8 @@ export const RequestStates = StrictDict({
|
||||
export const RequestKeys = StrictDict({
|
||||
initialize: 'initialize',
|
||||
refreshList: 'refreshList',
|
||||
enrollEntitlementSession: 'enrollEntitlementSession',
|
||||
leaveEntitlementSession: 'leaveEntitlementSession',
|
||||
});
|
||||
|
||||
export const ErrorCodes = StrictDict({
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user