diff --git a/src/course-unit/CourseUnit.test.jsx b/src/course-unit/CourseUnit.test.jsx
index d6b00a385d..4eddd1e91d 100644
--- a/src/course-unit/CourseUnit.test.jsx
+++ b/src/course-unit/CourseUnit.test.jsx
@@ -1020,7 +1020,7 @@ describe('', () => {
axiosMock
.onPost(getXBlockBaseApiUrl(courseUnitIndexMock.id), {
publish: null,
- metadata: { visible_to_staff_only: true, group_access: { 50: [2] } },
+ metadata: { visible_to_staff_only: true, group_access: { 50: [2] }, discussion_enabled: true },
})
.reply(200, { dummy: 'value' });
axiosMock
diff --git a/src/course-unit/data/api.js b/src/course-unit/data/api.js
index 155e9d9878..073cbf6d34 100644
--- a/src/course-unit/data/api.js
+++ b/src/course-unit/data/api.js
@@ -91,13 +91,14 @@ export async function createCourseXblock({
* @param {boolean} groupAccess - Access group key set.
* @returns {Promise} A promise that resolves with the response data.
*/
-export async function handleCourseUnitVisibilityAndData(unitId, type, isVisible, groupAccess) {
+export async function handleCourseUnitVisibilityAndData(unitId, type, isVisible, groupAccess, isDiscussionEnabled) {
const body = {
publish: groupAccess ? null : type,
...(type === PUBLISH_TYPES.republish ? {
metadata: {
visible_to_staff_only: isVisible ? true : null,
group_access: groupAccess || null,
+ discussion_enabled: isDiscussionEnabled,
},
} : {}),
};
diff --git a/src/course-unit/data/thunk.js b/src/course-unit/data/thunk.js
index c2ac2be7c8..35baadbbec 100644
--- a/src/course-unit/data/thunk.js
+++ b/src/course-unit/data/thunk.js
@@ -119,15 +119,28 @@ export function editCourseItemQuery(itemId, displayName, sequenceId) {
};
}
-export function editCourseUnitVisibilityAndData(itemId, type, isVisible, groupAccess, isModalView, blockId = itemId) {
+export function editCourseUnitVisibilityAndData(
+ itemId,
+ type,
+ isVisible,
+ groupAccess,
+ isDiscussionEnabled,
+ blockId = itemId,
+) {
return async (dispatch) => {
dispatch(updateSavingStatus({ status: RequestStatus.PENDING }));
dispatch(updateQueryPendingStatus(true));
- const notification = getNotificationMessage(type, isVisible, isModalView);
+ const notification = getNotificationMessage(type, isVisible, true);
dispatch(showProcessingNotification(notification));
try {
- await handleCourseUnitVisibilityAndData(itemId, type, isVisible, groupAccess).then(async (result) => {
+ await handleCourseUnitVisibilityAndData(
+ itemId,
+ type,
+ isVisible,
+ groupAccess,
+ isDiscussionEnabled,
+ ).then(async (result) => {
if (result) {
const courseUnit = await getCourseUnitData(blockId);
dispatch(fetchCourseItemSuccess(courseUnit));
diff --git a/src/course-unit/hooks.jsx b/src/course-unit/hooks.jsx
index 66182ef1fd..4401d9952f 100644
--- a/src/course-unit/hooks.jsx
+++ b/src/course-unit/hooks.jsx
@@ -66,8 +66,15 @@ export const useCourseUnit = ({ courseId, blockId }) => {
dispatch(changeEditTitleFormOpen(!isTitleEditFormOpen));
};
- const handleConfigureSubmit = (id, isVisible, groupAccess, closeModalFn) => {
- dispatch(editCourseUnitVisibilityAndData(id, PUBLISH_TYPES.republish, isVisible, groupAccess, true, blockId));
+ const handleConfigureSubmit = (id, isVisible, groupAccess, isDiscussionEnabled, closeModalFn) => {
+ dispatch(editCourseUnitVisibilityAndData(
+ id,
+ PUBLISH_TYPES.republish,
+ isVisible,
+ groupAccess,
+ isDiscussionEnabled,
+ blockId,
+ ));
closeModalFn();
};
diff --git a/src/generic/configure-modal/ConfigureModal.test.jsx b/src/generic/configure-modal/ConfigureModal.test.jsx
index 3b98db389b..2c06e7852a 100644
--- a/src/generic/configure-modal/ConfigureModal.test.jsx
+++ b/src/generic/configure-modal/ConfigureModal.test.jsx
@@ -221,6 +221,10 @@ describe(' for Unit', () => {
expect(getByRole('button', { name: messages.cancelButton.defaultMessage })).toBeInTheDocument();
expect(getByRole('button', { name: messages.saveButton.defaultMessage })).toBeInTheDocument();
+
+ expect(queryByText(messages.discussionEnabledSectionTitle.defaultMessage)).toBeInTheDocument();
+ expect(queryByText(messages.discussionEnabledCheckbox.defaultMessage)).toBeInTheDocument();
+ expect(queryByText(messages.discussionEnabledDescription.defaultMessage)).toBeInTheDocument();
});
});
@@ -278,5 +282,9 @@ describe(' for XBlock', () => {
expect(getByRole('button', { name: messages.cancelButton.defaultMessage })).toBeInTheDocument();
expect(getByRole('button', { name: messages.saveButton.defaultMessage })).toBeInTheDocument();
+
+ expect(queryByText(messages.discussionEnabledSectionTitle.defaultMessage)).not.toBeInTheDocument();
+ expect(queryByText(messages.discussionEnabledCheckbox.defaultMessage)).not.toBeInTheDocument();
+ expect(queryByText(messages.discussionEnabledDescription.defaultMessage)).not.toBeInTheDocument();
});
});
diff --git a/src/generic/configure-modal/UnitTab.jsx b/src/generic/configure-modal/UnitTab.jsx
index c55d17a95b..01e18be075 100644
--- a/src/generic/configure-modal/UnitTab.jsx
+++ b/src/generic/configure-modal/UnitTab.jsx
@@ -130,12 +130,16 @@ const UnitTab = ({
)}
)}
-
-
-
-
-
-
+ {!isXBlockComponent && (
+ <>
+
+
+
+
+
+
+ >
+ )}
>
);
};