57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
import { useKeyedState, StrictDict } from '@edx/react-unit-test-utils';
|
|
|
|
import track from 'tracking';
|
|
import { reduxHooks } from 'hooks';
|
|
|
|
export const stateKeys = StrictDict({
|
|
isUnenrollConfirmVisible: 'isUnenrollConfirmVisible',
|
|
isEmailSettingsVisible: 'isEmailSettingsVisible',
|
|
});
|
|
|
|
export const useUnenrollData = () => {
|
|
const [isVisible, setIsVisible] = useKeyedState(stateKeys.isUnenrollConfirmVisible, false);
|
|
return {
|
|
show: () => setIsVisible(true),
|
|
hide: () => setIsVisible(false),
|
|
isVisible,
|
|
};
|
|
};
|
|
|
|
export const useEmailSettings = () => {
|
|
const [isVisible, setIsVisible] = useKeyedState(stateKeys.isEmailSettingsVisible, false);
|
|
return {
|
|
show: () => setIsVisible(true),
|
|
hide: () => setIsVisible(false),
|
|
isVisible,
|
|
};
|
|
};
|
|
|
|
export const useHandleToggleDropdown = (cardId) => {
|
|
const trackCourseEvent = reduxHooks.useTrackCourseEvent(
|
|
track.course.courseOptionsDropdownClicked,
|
|
cardId,
|
|
);
|
|
return (isOpen) => {
|
|
if (isOpen) { trackCourseEvent(); }
|
|
};
|
|
};
|
|
|
|
export const useOptionVisibility = (cardId) => {
|
|
const { isEnrolled, isEmailEnabled } = reduxHooks.useCardEnrollmentData(cardId);
|
|
const { twitter, facebook } = reduxHooks.useCardSocialSettingsData(cardId);
|
|
const { isEarned } = reduxHooks.useCardCertificateData(cardId);
|
|
|
|
const shouldShowUnenrollItem = isEnrolled && !isEarned;
|
|
const shouldShowDropdown = (
|
|
shouldShowUnenrollItem
|
|
|| isEmailEnabled
|
|
|| facebook.isEnabled
|
|
|| twitter.isEnabled
|
|
);
|
|
|
|
return {
|
|
shouldShowUnenrollItem,
|
|
shouldShowDropdown,
|
|
};
|
|
};
|