Skip to content

Commit 7d8dabe

Browse files
fix: removed program tab in the header
1 parent bc68a8c commit 7d8dabe

File tree

7 files changed

+56
-13
lines changed

7 files changed

+56
-13
lines changed

src/containers/LearnerDashboardHeader/CollapsedHeader/CollapseMenuBody.jsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { AppContext } from '@edx/frontend-platform/react';
77
import { Button, Badge } from '@openedx/paragon';
88

99
import urls from 'data/services/lms/urls';
10-
import { reduxHooks } from 'hooks';
10+
import { reduxHooks, apiHooks } from 'hooks';
1111

1212
import { findCoursesNavDropdownClicked } from '../hooks';
1313
import messages from '../messages';
@@ -16,6 +16,8 @@ export const CollapseMenuBody = ({ isOpen }) => {
1616
const { formatMessage } = useIntl();
1717
const { authenticatedUser } = React.useContext(AppContext);
1818

19+
const { enabled: programsEnabled } = apiHooks.useProgramsConfig();
20+
1921
const dashboard = reduxHooks.useEnterpriseDashboardData();
2022
const { courseSearchUrl } = reduxHooks.usePlatformSettingsData();
2123

@@ -32,9 +34,11 @@ export const CollapseMenuBody = ({ isOpen }) => {
3234
<Button as="a" href="/" variant="inverse-primary">
3335
{formatMessage(messages.course)}
3436
</Button>
35-
<Button as="a" href={urls.programsUrl()} variant="inverse-primary">
36-
{formatMessage(messages.program)}
37-
</Button>
37+
{programsEnabled && (
38+
<Button as="a" href={urls.programsUrl()} variant="inverse-primary">
39+
{formatMessage(messages.program)}
40+
</Button>
41+
)}
3842
<Button
3943
as="a"
4044
href={urls.baseAppUrl(courseSearchUrl)}

src/containers/LearnerDashboardHeader/CollapsedHeader/CollapseMenuBody.test.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ jest.mock('hooks', () => ({
2020
courseSearchUrl: '/courseSearchUrl',
2121
}),
2222
},
23+
apiHooks: {
24+
useProgramsConfig: () => ({
25+
enabled: true,
26+
}),
27+
},
2328
}));
2429

2530
jest.mock('../hooks', () => ({

src/containers/LearnerDashboardHeader/ExpandedHeader/index.jsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useIntl } from '@edx/frontend-platform/i18n';
55
import { Button } from '@openedx/paragon';
66

77
import urls from 'data/services/lms/urls';
8-
import { reduxHooks } from 'hooks';
8+
import { reduxHooks, apiHooks } from 'hooks';
99

1010
import AuthenticatedUserDropdown from './AuthenticatedUserDropdown';
1111
import { useIsCollapsed, findCoursesNavClicked } from '../hooks';
@@ -17,6 +17,8 @@ export const ExpandedHeader = () => {
1717
const { courseSearchUrl } = reduxHooks.usePlatformSettingsData();
1818
const isCollapsed = useIsCollapsed();
1919

20+
const { enabled: programsEnabled } = apiHooks.useProgramsConfig();
21+
2022
const exploreCoursesClick = findCoursesNavClicked(
2123
urls.baseAppUrl(courseSearchUrl),
2224
);
@@ -38,14 +40,16 @@ export const ExpandedHeader = () => {
3840
>
3941
{formatMessage(messages.course)}
4042
</Button>
41-
<Button
42-
as="a"
43-
href={urls.programsUrl()}
44-
variant="inverse-primary"
45-
className="p-4"
46-
>
47-
{formatMessage(messages.program)}
48-
</Button>
43+
{programsEnabled && (
44+
<Button
45+
as="a"
46+
href={urls.programsUrl()}
47+
variant="inverse-primary"
48+
className="p-4"
49+
>
50+
{formatMessage(messages.program)}
51+
</Button>
52+
)}
4953
<Button
5054
as="a"
5155
href={urls.baseAppUrl(courseSearchUrl)}

src/containers/LearnerDashboardHeader/ExpandedHeader/index.test.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ jest.mock('hooks', () => ({
1515
courseSearchUrl: '/courseSearchUrl',
1616
}),
1717
},
18+
apiHooks: {
19+
useProgramsConfig: () => ({
20+
enabled: true,
21+
}),
22+
},
1823
}));
1924

2025
jest.mock('../hooks', () => ({

src/data/services/lms/api.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ export const initializeList = ({ user } = {}) => get(
2020
stringifyUrl(urls.getInitApiUrl(), { [apiKeys.user]: user }),
2121
);
2222

23+
export const getProgramsConfig = () => get(urls.programsConfigUrl());
24+
2325
export const updateEntitlementEnrollment = ({ uuid, courseId }) => post(
2426
urls.entitlementEnrollment(uuid),
2527
{ [apiKeys.courseRunId]: courseId },
@@ -75,6 +77,7 @@ export default {
7577
initializeList,
7678
unenrollFromCourse,
7779
updateEmailSettings,
80+
getProgramsConfig,
7881
updateEntitlementEnrollment,
7982
deleteEntitlementEnrollment,
8083
logEvent,

src/data/services/lms/urls.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const baseAppUrl = (url) => updateUrl(getBaseUrl(), url);
2222
export const learningMfeUrl = (url) => updateUrl(getConfig().LEARNING_BASE_URL, url);
2323

2424
// static view url
25+
const programsConfigUrl = () => baseAppUrl('/config/programs');
2526
const programsUrl = () => baseAppUrl('/dashboard/programs');
2627

2728
export const creditPurchaseUrl = (courseId) => `${getEcommerceUrl()}/credit/checkout/${courseId}/`;
@@ -38,5 +39,6 @@ export default StrictDict({
3839
getInitApiUrl,
3940
learningMfeUrl,
4041
programsUrl,
42+
programsConfigUrl,
4143
updateEmailSettings,
4244
});

src/hooks/api.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from 'react';
22

33
import { AppContext } from '@edx/frontend-platform/react';
4+
import { logError } from '@edx/frontend-platform/logging';
45

56
import { RequestKeys } from 'data/constants/requests';
67
import { post } from 'data/services/lms/utils';
@@ -31,6 +32,25 @@ export const useInitializeApp = () => {
3132
});
3233
};
3334

35+
export const useProgramsConfig = () => {
36+
const [config, setConfig] = React.useState({});
37+
38+
const fetchProgramsConfig = React.useCallback(async () => {
39+
try {
40+
const { data } = await api.getProgramsConfig();
41+
setConfig(data);
42+
} catch (error) {
43+
logError(`Error accessing programs configuration: ${error.message}`);
44+
}
45+
}, []);
46+
47+
React.useEffect(() => {
48+
fetchProgramsConfig();
49+
}, [fetchProgramsConfig]);
50+
51+
return config;
52+
};
53+
3454
export const useNewEntitlementEnrollment = (cardId) => {
3555
const { uuid } = reduxHooks.useCardEntitlementData(cardId);
3656
const onSuccess = module.useInitializeApp();

0 commit comments

Comments
 (0)