fix: select session workflow (#59)

This commit is contained in:
Ben Warzeski
2022-11-01 14:14:07 -04:00
committed by GitHub
parent 0badf690a6
commit c8b729a65d
10 changed files with 106 additions and 87 deletions

View File

@@ -15,16 +15,19 @@ export const state = StrictDict({
});
export const useSelectSessionModalData = () => {
const dispatch = useDispatch();
const selectedCardId = appHooks.useSelectSessionModalData().cardId;
const {
availableSessions,
isFulfilled,
uuid,
} = appHooks.useCardEntitlementData(selectedCardId);
const { title: courseTitle } = appHooks.useCardCourseData(selectedCardId);
const { courseId } = appHooks.useCardCourseRunData(selectedCardId) || {};
const { isEnrolled } = appHooks.useCardEnrollmentData(selectedCardId);
const dispatch = useDispatch();
const { formatMessage } = useIntl();
const [selectedSession, setSelectedSession] = module.state.selectedSession(null);
const [selectedSession, setSelectedSession] = module.state.selectedSession(courseId || null);
let header;
let hint;
@@ -37,20 +40,24 @@ export const useSelectSessionModalData = () => {
});
hint = formatMessage(messages.selectSessionHint);
}
const updateCallback = appHooks.useUpdateSelectSessionModalCallback;
const updateCardIdCallback = appHooks.useUpdateSelectSessionModalCallback;
const closeSessionModal = updateCardIdCallback(null);
const handleSelection = ({ target: { value } }) => setSelectedSession(value);
const handleSubmit = () => {
if (selectedSession === LEAVE_OPTION) {
return dispatch(thunkActions.app.leaveEntitlementSession({ uuid }));
dispatch(thunkActions.app.leaveEntitlementSession(selectedCardId));
} else if (isEnrolled) {
dispatch(thunkActions.app.switchEntitlementEnrollment(selectedCardId, selectedSession));
} else {
dispatch(thunkActions.app.newEntitlementEnrollment(selectedCardId, selectedSession));
}
return dispatch(thunkActions.app.switchEntitlementEnrollment({ uuid, courseId: selectedSession }));
closeSessionModal();
};
return {
showModal: selectedCardId != null,
closeSessionModal: updateCallback(dispatch, null),
openSessionModal: (cardId) => updateCallback(dispatch, cardId),
closeSessionModal,
showLeaveOption: isFulfilled,
availableSessions,
hint,