Skip to content

Commit 04e3ada

Browse files
committed
refactor: improve response of unit settings
1 parent d7982de commit 04e3ada

2 files changed

Lines changed: 22 additions & 8 deletions

File tree

src/course-unit/unit-sidebar/unit-info/GenericUnitInfoSettings.tsx

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { useMemo } from 'react';
99
import configureMessages from '@src/generic/configure-modal/messages';
1010
import messages from './messages';
1111
import { useConfigureUnit } from '@src/course-outline/data/apiHooks';
12+
import { useStateWithCallback } from '@src/hooks';
1213

1314
interface UnitInfoSettingsProps {
1415
id: string;
@@ -60,6 +61,18 @@ export const GenericUnitInfoSettings = (props: UnitInfoSettingsProps) => {
6061
});
6162
};
6263

64+
const [localState, setLocalState] = useStateWithCallback<{
65+
isVisible?: boolean;
66+
isDiscussionEnabled?: boolean;
67+
}>({
68+
isVisible: visibleToStaffOnly,
69+
isDiscussionEnabled: discussionEnabled,
70+
}, (val) => {
71+
if (val) {
72+
handleUpdate(!!val.isVisible, null, val.isDiscussionEnabled);
73+
}
74+
});
75+
6376
const handleSaveGroups = async (data: {
6477
selectedPartitionIndex: number;
6578
selectedGroups: any[];
@@ -100,14 +113,14 @@ export const GenericUnitInfoSettings = (props: UnitInfoSettingsProps) => {
100113
>
101114
<ButtonGroup toggle>
102115
<Button
103-
variant={visibleToStaffOnly ? 'outline-primary' : 'primary'}
104-
onClick={() => handleUpdate(false, null, discussionEnabled)}
116+
variant={localState?.isVisible ? 'outline-primary' : 'primary'}
117+
onClick={() => setLocalState((prev) => ({ ...prev, isVisible: false}))}
105118
>
106119
<FormattedMessage {...messages.sidebarInfoVisibilityStudentLabel} />
107120
</Button>
108121
<Button
109-
variant={visibleToStaffOnly ? 'primary' : 'outline-primary'}
110-
onClick={() => handleUpdate(true, null, discussionEnabled)}
122+
variant={localState?.isVisible ? 'primary' : 'outline-primary'}
123+
onClick={() => setLocalState((prev) => ({ ...prev, isVisible: true}))}
111124
>
112125
<FormattedMessage {...messages.sidebarInfoVisibilityStaffLabel} />
113126
</Button>
@@ -143,8 +156,11 @@ export const GenericUnitInfoSettings = (props: UnitInfoSettingsProps) => {
143156
title={intl.formatMessage(configureMessages.discussionEnabledSectionTitle)}
144157
>
145158
<DiscussionEditComponent
146-
discussionEnabled={!!discussionEnabled}
147-
handleDiscussionChange={(e) => handleUpdate(visibleToStaffOnly, null, e.target.checked)}
159+
discussionEnabled={!!localState?.isDiscussionEnabled}
160+
handleDiscussionChange={(e) => setLocalState((prev) => ({
161+
...prev,
162+
isDiscussionEnabled: e.target.checked,
163+
}))}
148164
/>
149165
</SidebarSection>
150166
</SidebarContent>

src/generic/configure-modal/AdvancedTab.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,6 @@ const AdvancedTab: React.FC<AdvancedTabProps> = ({
303303
setFieldValue('isTimeLimited', true);
304304
setFieldValue('isOnboardingExam', false);
305305
} else if (value === 'proctoredExam') {
306-
// __AUTO_GENERATED_PRINTF_START__
307-
console.log("AdvancedTab#handleChange#if#if#if#if 1"); // __AUTO_GENERATED_PRINTF_END__
308306
setFieldValue('isProctoredExam', true);
309307
setFieldValue('isTimeLimited', true);
310308
setFieldValue('isOnboardingExam', false);

0 commit comments

Comments
 (0)