Skip to content

Commit aa37548

Browse files
committed
refactor: container delete messaging
1 parent b9c1e23 commit aa37548

File tree

2 files changed

+47
-24
lines changed

2 files changed

+47
-24
lines changed

src/library-authoring/components/ContainerDeleter.tsx

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,62 +44,75 @@ const ContainerDeleter = ({
4444

4545
const messageMap = useMemo(() => {
4646
const containerType = containerData?.blockType;
47+
let parentCount = 0;
48+
let parentMessage: React.ReactNode;
4749
switch (containerType) {
4850
case ContainerType.Section:
4951
return {
5052
title: intl.formatMessage(messages.deleteSectionWarningTitle),
51-
parentCount: 0,
52-
parentNames: '',
53-
parentMessage: {},
53+
parentMessage: '',
5454
// Update below fields when sections are linked to courses
5555
courseCount: downstreamCount,
5656
courseMessage: messages.deleteSectionCourseMessaage,
5757
};
5858
case ContainerType.Subsection:
59+
parentCount = containerData?.sections?.displayName?.length || 0;
60+
if (parentCount === 1) {
61+
parentMessage = intl.formatMessage(
62+
messages.deleteSubsectionParentMessage,
63+
{ parentName: <b>{containerData?.sections?.displayName?.[0]}</b> },
64+
);
65+
} else if (parentCount > 1) {
66+
parentMessage = intl.formatMessage(messages.deleteSubsectionMultipleParentMessage, {
67+
parentCount: <b>{parentCount}</b>,
68+
});
69+
}
5970
return {
6071
title: intl.formatMessage(messages.deleteSubsectionWarningTitle),
61-
parentCount: containerData?.sections?.displayName?.length || 0,
62-
parentNames: containerData?.sections?.displayName?.join(', '),
63-
parentMessage: messages.deleteSubsectionParentMessage,
72+
parentMessage,
6473
// Update below fields when subsections are linked to courses
6574
courseCount: downstreamCount,
6675
courseMessage: messages.deleteSubsectionCourseMessaage,
6776
};
6877
default:
78+
parentCount = containerData?.subsections?.displayName?.length || 0;
79+
if (parentCount === 1) {
80+
parentMessage = intl.formatMessage(
81+
messages.deleteUnitParentMessage,
82+
{ parentName: <b>{containerData?.subsections?.displayName?.[0]}</b> },
83+
);
84+
} else if (parentCount > 1) {
85+
parentMessage = intl.formatMessage(messages.deleteUnitMultipleParentMessage, {
86+
parentCount: <b>{parentCount}</b>,
87+
});
88+
}
6989
return {
7090
title: intl.formatMessage(messages.deleteUnitWarningTitle),
71-
parentCount: containerData?.subsections?.displayName?.length || 0,
72-
parentNames: containerData?.subsections?.displayName?.join(', '),
73-
parentMessage: messages.deleteUnitParentMessage,
91+
parentMessage,
7492
// Update below fields when unit are linked to courses
7593
courseCount: downstreamCount,
7694
courseMessage: messages.deleteUnitCourseMessage,
7795
};
7896
}
79-
}, [containerId, displayName, containerData]);
97+
}, [containerData, downstreamCount, messages, intl]);
8098

8199
const deleteText = intl.formatMessage(messages.deleteUnitConfirm, {
82100
unitName: <b>{displayName}</b>,
83101
message: (
84102
<div className="text-danger-900">
85-
{messageMap.parentCount > 0 && (
103+
{messageMap.parentMessage && (
86104
<div className="d-flex align-items-center mt-2">
87105
<Icon className="mr-2" src={Error} />
88-
<span>
89-
{intl.formatMessage(messageMap.parentMessage, {
90-
parentNames: <b>{messageMap.parentNames}</b>,
91-
parentCount: messageMap.parentCount,
92-
})}
93-
</span>
106+
<span>{messageMap.parentMessage}</span>
94107
</div>
95108
)}
96109
{(messageMap.courseCount || 0) > 0 && (
97110
<div className="d-flex align-items-center mt-2">
98111
<Icon className="mr-2" src={School} />
99112
<span>
100113
{intl.formatMessage(messageMap.courseMessage, {
101-
courseCount: <b>{messageMap.courseCount}</b>,
102-
parentCount: messageMap.parentCount,
114+
courseCount: messageMap.courseCount,
115+
courseCountText: <b>{messageMap.courseCount}</b>,
103116
})}
104117
</span>
105118
</div>

src/library-authoring/components/messages.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -218,27 +218,37 @@ const messages = defineMessages({
218218
},
219219
deleteUnitParentMessage: {
220220
id: 'course-authoring.library-authoring.unit.delete-parent-message',
221-
defaultMessage: 'By deleting this unit, you will also be deleting it from {parentNames} in this library.',
221+
defaultMessage: 'By deleting this unit, you will also be deleting it from {parentName} in this library.',
222222
description: 'Parent usage details shown before deleting a unit',
223223
},
224224
deleteSubsectionParentMessage: {
225225
id: 'course-authoring.library-authoring.subsection.delete-parent-message',
226-
defaultMessage: 'By deleting this subsection, you will also be deleting it from {parentNames} in this library.',
226+
defaultMessage: 'By deleting this subsection, you will also be deleting it from {parentName} in this library.',
227227
description: 'Parent usage details shown before deleting a subsection',
228228
},
229+
deleteUnitMultipleParentMessage: {
230+
id: 'course-authoring.library-authoring.unit.delete-multiple-parent-message',
231+
defaultMessage: 'By deleting this unit, you will also be deleting it from {parentCount, plural, one {1 Subsection} other {{parentCount} Subsections}} in this library.',
232+
description: 'Parent usage details shown before deleting a unit part of multiple subsections',
233+
},
234+
deleteSubsectionMultipleParentMessage: {
235+
id: 'course-authoring.library-authoring.subsection.delete-multiple-parent-message',
236+
defaultMessage: 'By deleting this subsection, you will also be deleting it from {parentCount, plural, one {1 Section} other {{parentCount} Sections}} in this library.',
237+
description: 'Parent usage details shown before deleting a subsection part of multiple sections',
238+
},
229239
deleteUnitCourseMessage: {
230240
id: 'course-authoring.library-authoring.unit.delete-course-usage-message',
231-
defaultMessage: 'This unit is used {courseCount} times in courses, and will stop receiving updates there.',
241+
defaultMessage: 'This unit is used {courseCount, plural, one {{courseCountText} time} other {{courseCountText} times}} in courses, and will stop receiving updates there.',
232242
description: 'Course usage details shown before deleting a unit',
233243
},
234244
deleteSubsectionCourseMessaage: {
235245
id: 'course-authoring.library-authoring.subsection.delete-parent-message',
236-
defaultMessage: 'This subsection is used {courseCount} times in courses, and will stop receiving updates there.',
246+
defaultMessage: 'This subsection is used {courseCount, plural, one {1 time} other {{courseCount} times}} in courses, and will stop receiving updates there.',
237247
description: 'Course usage details shown before deleting a subsection',
238248
},
239249
deleteSectionCourseMessaage: {
240250
id: 'course-authoring.library-authoring.section.delete-parent-message',
241-
defaultMessage: 'This section is used {courseCount} times in courses, and will stop receiving updates there.',
251+
defaultMessage: 'This section is used {courseCount, plural, one {1 time} other {{courseCount} times}} in courses, and will stop receiving updates there.',
242252
description: 'Course usage details shown before deleting a section',
243253
},
244254
deleteUnitSuccess: {

0 commit comments

Comments
 (0)