Files
frontend-app-learner-dashboard/src/containers/CourseCard/components/CourseCardMenu/hooks.js
Adolfo R. Brandes 89559a4987 refactor: migrate to frontend-base
BREAKING CHANGE: refactors the MFE for frontend-base.
2025-06-24 15:31:23 -03:00

59 lines
1.6 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,
};
};