Skip to content

Commit 37ae94c

Browse files
committed
fix: remove deprecated settings waffle flags
1 parent 0c59b78 commit 37ae94c

10 files changed

Lines changed: 47 additions & 89 deletions

File tree

src/course-checklist/ChecklistSection/ChecklistItemBody.jsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,21 @@ import { ActionRow, Button, Icon } from '@openedx/paragon';
55
import { CheckCircle, RadioButtonUnchecked } from '@openedx/paragon/icons';
66
import { getConfig } from '@edx/frontend-platform';
77

8-
import { useWaffleFlags } from '../../data/apiHooks';
8+
import { useWaffleFlags } from '@src/data/apiHooks';
9+
910
import messages from './messages';
1011

1112
const getUpdateLinks = (courseId, waffleFlags) => {
1213
const baseUrl = getConfig().STUDIO_BASE_URL;
13-
const isLegacyGradingUrl = !waffleFlags.useNewGradingPage;
1414
const isLegacyCertificateUrl = !waffleFlags.useNewCertificatesPage;
15-
const isLegacyCourseDatesUrl = !waffleFlags.useNewScheduleDetailsPage;
1615
const isLegacyOutlineUrl = !waffleFlags.useNewCourseOutlinePage;
1716

1817
return {
1918
welcomeMessage: `/course/${courseId}/course_info`,
20-
gradingPolicy: isLegacyGradingUrl
21-
? `${baseUrl}/settings/grading/${courseId}` : `/course/${courseId}/settings/grading`,
19+
gradingPolicy: `/course/${courseId}/settings/grading`,
2220
certificate: isLegacyCertificateUrl
2321
? `${baseUrl}/certificates/${courseId}` : `/course/${courseId}/certificates`,
24-
courseDates: isLegacyCourseDatesUrl
25-
? `${baseUrl}/settings/details/${courseId}#schedule` : `/course/${courseId}/settings/details/#schedule`,
22+
courseDates: `/course/${courseId}/settings/details/#schedule`,
2623
proctoringEmail: `${baseUrl}/pages-and-resources/proctoring/settings`,
2724
outline: isLegacyOutlineUrl ? `${baseUrl}/course/${courseId}` : `/course/${courseId}`,
2825
};

src/course-checklist/ChecklistSection/ChecklistSection.test.jsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import { camelCaseObject } from '@edx/frontend-platform';
22

33
import {
44
initializeMocks, render, screen, within,
5-
} from '../../testUtils';
6-
import { getApiWaffleFlagsUrl } from '../../data/api';
5+
} from '@src/testUtils';
6+
import { getApiWaffleFlagsUrl } from '@src/data/api';
7+
78
import { generateCourseLaunchData } from '../factories/mockApiResponses';
89
import { checklistItems } from './utils/courseChecklistData';
910
import messages from './messages';
@@ -36,9 +37,7 @@ describe('ChecklistSection', () => {
3637
axiosMock
3738
.onGet(getApiWaffleFlagsUrl(courseId))
3839
.reply(200, {
39-
useNewGradingPage: true,
4040
useNewCertificatesPage: true,
41-
useNewScheduleDetailsPage: true,
4241
useNewCourseOutlinePage: true,
4342
});
4443
});

src/course-outline/status-bar/LegacyStatusBar.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import {
55
Button, Hyperlink, Form, Stack, useToggle,
66
} from '@openedx/paragon';
77
import { Link } from 'react-router-dom';
8+
import { type ReactNode } from 'react';
89

9-
import { ReactNode } from 'react';
1010
import { CourseOutlineStatusBar } from '@src/course-outline/data/types';
1111
import { ContentTagsDrawerSheet } from '@src/content-tags-drawer';
1212
import TagCount from '@src/generic/tag-count';
1313
import { useHelpUrls } from '@src/help-urls/hooks';
14-
import { useWaffleFlags } from '@src/data/apiHooks';
1514
import { VIDEO_SHARING_OPTIONS } from '@src/course-outline/constants';
1615
import { useContentTagsCount } from '@src/generic/data/apiHooks';
1716
import { getVideoSharingOptionText } from '@src/course-outline/utils';
17+
1818
import messages from './messages';
1919

2020
interface StatusBarItemProps {
@@ -47,7 +47,6 @@ export const LegacyStatusBar = ({
4747
handleVideoSharingOptionChange,
4848
}: LegacyStatusBarProps) => {
4949
const intl = useIntl();
50-
const waffleFlags = useWaffleFlags(courseId);
5150

5251
const {
5352
courseReleaseDate,
@@ -67,7 +66,6 @@ export const LegacyStatusBar = ({
6766

6867
const courseReleaseDateObj = moment.utc(courseReleaseDate, 'MMM DD, YYYY [at] HH:mm UTC', true);
6968
const checkListTitle = `${completedCourseLaunchChecks + completedCourseBestPracticesChecks}/${totalCourseLaunchChecks + totalCourseBestPracticesChecks}`;
70-
const scheduleDestination = () => new URL(`settings/details/${courseId}#schedule`, getConfig().STUDIO_BASE_URL).href;
7169

7270
const {
7371
contentHighlights: contentHighlightsUrl,
@@ -88,7 +86,7 @@ export const LegacyStatusBar = ({
8886
<StatusBarItem title={intl.formatMessage(messages.startDateTitle)}>
8987
<Link
9088
className="small"
91-
to={waffleFlags.useNewScheduleDetailsPage ? `/course/${courseId}/settings/details/#schedule` : scheduleDestination()}
89+
to={`/course/${courseId}/settings/details/#schedule`}
9290
>
9391
{courseReleaseDateObj.isValid() ? (
9492
<FormattedDate

src/course-outline/status-bar/StatusBar.tsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import moment, { Moment } from 'moment/moment';
22
import { FormattedDate, FormattedMessage } from '@edx/frontend-platform/i18n';
3-
import { getConfig } from '@edx/frontend-platform/config';
43
import { Badge, Icon, Stack } from '@openedx/paragon';
54
import { Link } from 'react-router-dom';
6-
7-
import type { ChecklistType, CourseOutlineStatusBar } from '@src/course-outline/data/types';
85
import {
96
Cached, ChecklistRtl, Description, Event,
107
} from '@openedx/paragon/icons';
11-
import { useWaffleFlags } from '@src/data/apiHooks';
8+
9+
import type { ChecklistType, CourseOutlineStatusBar } from '@src/course-outline/data/types';
1210
import { useEntityLinksSummaryByDownstreamContext } from '@src/course-libraries/data/apiHooks';
1311
import { useCourseDetails } from '@src/course-outline/data/apiHooks';
12+
1413
import messages from './messages';
1514
import { NotificationStatusIcon } from './NotificationStatusIcon';
1615

@@ -179,8 +178,6 @@ export const StatusBar = ({
179178
isLoading,
180179
courseId,
181180
}: StatusBarProps) => {
182-
const waffleFlags = useWaffleFlags(courseId);
183-
184181
const {
185182
endDate,
186183
courseReleaseDate,
@@ -189,7 +186,6 @@ export const StatusBar = ({
189186

190187
const courseReleaseDateObj = moment.utc(courseReleaseDate, 'MMM DD, YYYY [at] HH:mm UTC', true);
191188
const endDateObj = moment.utc(endDate);
192-
const scheduleDestination = () => new URL(`settings/details/${courseId}#schedule`, getConfig().STUDIO_BASE_URL).href;
193189

194190
if (isLoading) {
195191
return null;
@@ -203,7 +199,7 @@ export const StatusBar = ({
203199
startDate={courseReleaseDateObj}
204200
endDate={endDateObj}
205201
startDateRaw={courseReleaseDate}
206-
datesLink={waffleFlags.useNewScheduleDetailsPage ? `/course/${courseId}/settings/details/#schedule` : scheduleDestination()}
202+
datesLink={`/course/${courseId}/settings/details/#schedule`}
207203
/>
208204
<Checklists courseId={courseId} checklist={checklist} />
209205
<LibraryUpdates courseId={courseId} />

src/custom-pages/CustomPages.test.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,7 @@ describe('CustomPages', () => {
6262
axiosMock
6363
.onGet(getApiWaffleFlagsUrl(courseId))
6464
.reply(200, {
65-
useNewGradingPage: true,
6665
useNewCertificatesPage: true,
67-
useNewScheduleDetailsPage: true,
6866
useNewCourseOutlinePage: true,
6967
});
7068
});

src/data/api.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,15 @@ export const waffleFlagDefaults = {
7676
enableCourseOptimizerCheckPrevRunLinks: false,
7777
useNewHomePage: true,
7878
useNewCustomPages: true,
79-
useNewScheduleDetailsPage: true,
80-
useNewAdvancedSettingsPage: true,
81-
useNewGradingPage: true,
8279
useNewUpdatesPage: true,
8380
useNewImportPage: false,
8481
useNewExportPage: true,
8582
useNewFilesUploadsPage: true,
8683
useNewVideoUploadsPage: true,
8784
useNewCourseOutlinePage: true,
8885
useNewUnitPage: false,
89-
useNewCourseTeamPage: true,
9086
useNewCertificatesPage: true,
9187
useNewTextbooksPage: true,
92-
useNewGroupConfigurationsPage: true,
9388
useReactMarkdownEditor: true,
9489
useVideoGalleryFlow: false,
9590
enableAuthzCourseAuthoring: false,

src/generic/help-sidebar/HelpSidebar.test.jsx renamed to src/generic/help-sidebar/HelpSidebar.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
// @ts-check
2-
31
import { waitFor } from '@testing-library/react';
2+
43
import { mockWaffleFlags } from '@src/data/apiHooks.mock';
54
import { useUserPermissions } from '@src/authz/data/apiHooks';
6-
import { initializeMocks, render } from '../../testUtils';
5+
import { initializeMocks, render } from '@src/testUtils';
6+
77
import messages from './messages';
88
import { HelpSidebar } from '.';
99

Lines changed: 22 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import PropTypes from 'prop-types';
1+
import { type ReactNode } from 'react';
22
import { useLocation } from 'react-router-dom';
33
import classNames from 'classnames';
44
import { useIntl } from '@edx/frontend-platform/i18n';
5-
import { getConfig } from '@edx/frontend-platform';
65

76
import { useUserPermissions } from '@src/authz/data/apiHooks';
87
import { COURSE_PERMISSIONS } from '@src/authz/constants';
@@ -11,13 +10,21 @@ import { otherLinkURLParams } from './constants';
1110
import messages from './messages';
1211
import HelpSidebarLink from './HelpSidebarLink';
1312

13+
interface HelpSidebarProps {
14+
courseId: string;
15+
showOtherSettings?: boolean;
16+
proctoredExamSettingsUrl?: string;
17+
children: ReactNode;
18+
className?: string;
19+
}
20+
1421
const HelpSidebar = ({
1522
courseId,
16-
showOtherSettings,
17-
proctoredExamSettingsUrl,
23+
showOtherSettings = false,
24+
proctoredExamSettingsUrl = '',
1825
children,
1926
className,
20-
}) => {
27+
}: HelpSidebarProps) => {
2128
const intl = useIntl();
2229
const { pathname } = useLocation();
2330
const {
@@ -30,16 +37,6 @@ const HelpSidebar = ({
3037
const waffleFlags = useWaffleFlags(courseId);
3138

3239
const showOtherLink = (params) => !pathname.includes(params);
33-
const generateLegacyURL = (urlParameter) => {
34-
const referObj = new URL(`${urlParameter}/${courseId}`, getConfig().STUDIO_BASE_URL);
35-
return referObj.href;
36-
};
37-
38-
const scheduleAndDetailsDestination = generateLegacyURL(scheduleAndDetails);
39-
const gradingDestination = generateLegacyURL(grading);
40-
const courseTeamDestination = generateLegacyURL(courseTeam);
41-
const advancedSettingsDestination = generateLegacyURL(advancedSettings);
42-
const groupConfigurationsDestination = generateLegacyURL(groupConfigurations);
4340

4441
/*
4542
AuthZ for Course Authoring
@@ -78,46 +75,41 @@ const HelpSidebar = ({
7875
<ul className="p-0 mb-0">
7976
{showOtherLink(scheduleAndDetails) && (
8077
<HelpSidebarLink
81-
pathToPage={waffleFlags.useNewScheduleDetailsPage
82-
? `/course/${courseId}/${scheduleAndDetails}` : scheduleAndDetailsDestination}
78+
pathToPage={`/course/${courseId}/${scheduleAndDetails}`}
8379
title={intl.formatMessage(
8480
messages.sidebarLinkToScheduleAndDetails,
8581
)}
86-
isNewPage={waffleFlags.useNewScheduleDetailsPage}
82+
isNewPage
8783
/>
8884
)}
8985
{showOtherLink(grading) && (
9086
<HelpSidebarLink
91-
pathToPage={waffleFlags.useNewGradingPage
92-
? `/course/${courseId}/${grading}` : gradingDestination}
87+
pathToPage={`/course/${courseId}/${grading}`}
9388
title={intl.formatMessage(messages.sidebarLinkToGrading)}
94-
isNewPage={waffleFlags.useNewGradingPage}
89+
isNewPage
9590
/>
9691
)}
9792
{showOtherLink(courseTeam) && (
9893
<HelpSidebarLink
99-
pathToPage={waffleFlags.useNewCourseTeamPage
100-
? `/course/${courseId}/${courseTeam}` : courseTeamDestination}
94+
pathToPage={`/course/${courseId}/${courseTeam}`}
10195
title={intl.formatMessage(messages.sidebarLinkToCourseTeam)}
102-
isNewPage={waffleFlags.useNewCourseTeamPage}
96+
isNewPage
10397
/>
10498
)}
10599
{showOtherLink(groupConfigurations) && (
106100
<HelpSidebarLink
107-
pathToPage={waffleFlags.useNewGroupConfigurationsPage
108-
? `/course/${courseId}/${groupConfigurations}` : groupConfigurationsDestination}
101+
pathToPage={`/course/${courseId}/${groupConfigurations}`}
109102
title={intl.formatMessage(
110103
messages.sidebarLinkToGroupConfigurations,
111104
)}
112-
isNewPage={waffleFlags.useNewGroupConfigurationsPage}
105+
isNewPage
113106
/>
114107
)}
115108
{showOtherLink(advancedSettings) && canManageAdvancedSettings && (
116109
<HelpSidebarLink
117-
pathToPage={waffleFlags.useNewAdvancedSettingsPage
118-
? `/course/${courseId}/${advancedSettings}` : advancedSettingsDestination}
110+
pathToPage={`/course/${courseId}/${advancedSettings}`}
119111
title={intl.formatMessage(messages.sidebarLinkToAdvancedSettings)}
120-
isNewPage={waffleFlags.useNewAdvancedSettingsPage}
112+
isNewPage
121113
/>
122114
)}
123115
{proctoredExamSettingsUrl && (
@@ -137,19 +129,4 @@ const HelpSidebar = ({
137129
);
138130
};
139131

140-
HelpSidebar.defaultProps = {
141-
proctoredExamSettingsUrl: '',
142-
className: undefined,
143-
courseId: undefined,
144-
showOtherSettings: false,
145-
};
146-
147-
HelpSidebar.propTypes = {
148-
courseId: PropTypes.string,
149-
showOtherSettings: PropTypes.bool,
150-
proctoredExamSettingsUrl: PropTypes.string,
151-
children: PropTypes.node.isRequired,
152-
className: PropTypes.string,
153-
};
154-
155132
export default HelpSidebar;

src/header/hooks.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ export const useContentMenuItems = (courseId: string) => {
5757

5858
export const useSettingMenuItems = (courseId: string) => {
5959
const intl = useIntl();
60-
const studioBaseUrl = getConfig().STUDIO_BASE_URL;
6160
const { canAccessAdvancedSettings: legacyCanAccessAdvancedSettings } = useSelector(getStudioHomeData);
6261
const waffleFlags = useWaffleFlags(courseId);
6362

@@ -84,24 +83,24 @@ export const useSettingMenuItems = (courseId: string) => {
8483

8584
const items = [
8685
{
87-
href: waffleFlags.useNewScheduleDetailsPage ? `/course/${courseId}/settings/details` : `${studioBaseUrl}/settings/details/${courseId}`,
86+
href: `/course/${courseId}/settings/details`,
8887
title: intl.formatMessage(messages['header.links.scheduleAndDetails']),
8988
},
9089
{
91-
href: waffleFlags.useNewGradingPage ? `/course/${courseId}/settings/grading` : `${studioBaseUrl}/settings/grading/${courseId}`,
90+
href: `/course/${courseId}/settings/grading`,
9291
title: intl.formatMessage(messages['header.links.grading']),
9392
},
9493
{
95-
href: waffleFlags.useNewCourseTeamPage ? `/course/${courseId}/course_team` : `${studioBaseUrl}/course_team/${courseId}`,
94+
href: `/course/${courseId}/course_team`,
9695
title: intl.formatMessage(messages['header.links.courseTeam']),
9796
},
9897
{
99-
href: waffleFlags.useNewGroupConfigurationsPage ? `/course/${courseId}/group_configurations` : `${studioBaseUrl}/group_configurations/${courseId}`,
98+
href: `/course/${courseId}/group_configurations`,
10099
title: intl.formatMessage(messages['header.links.groupConfigurations']),
101100
},
102101
...(canAccessAdvancedSettings
103102
? [{
104-
href: waffleFlags.useNewAdvancedSettingsPage ? `/course/${courseId}/settings/advanced` : `${studioBaseUrl}/settings/advanced/${courseId}`,
103+
href: `/course/${courseId}/settings/advanced`,
105104
title: intl.formatMessage(messages['header.links.advancedSettings']),
106105
}] : []
107106
),

src/pages-and-resources/pages/PageCard.test.jsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { getConfig } from '@edx/frontend-platform';
22

3+
import { getApiWaffleFlagsUrl } from '@src/data/api';
34
import {
45
initializeMocks,
56
screen,
67
render,
78
waitFor,
8-
} from '../../testUtils';
9+
} from '@src/testUtils';
10+
911
import PageGrid from './PageGrid';
10-
import { getApiWaffleFlagsUrl } from '../../data/api';
1112

1213
import PagesAndResourcesProvider from '../PagesAndResourcesProvider';
1314

@@ -49,9 +50,7 @@ describe('LiveSettings', () => {
4950
axiosMock
5051
.onGet(getApiWaffleFlagsUrl(courseId))
5152
.reply(200, {
52-
useNewGradingPage: true,
5353
useNewCertificatesPage: true,
54-
useNewScheduleDetailsPage: true,
5554
useNewCourseOutlinePage: true,
5655
});
5756
});

0 commit comments

Comments
 (0)