@@ -15,6 +15,9 @@ import TableActions from './TableActions';
1515import { getChangedRows } from './utils' ;
1616import CoursesChangesModal from './CoursesChangesModal' ;
1717import { updateUserRolesInCourses } from './data/api' ;
18+ import {
19+ ACTIVE_COURSE_STATUS , INSTRUCTOR_ROLE , NULL_ROLE , STAFF_ROLE ,
20+ } from './constants' ;
1821
1922export default function CoursesTable ( {
2023 username,
@@ -37,14 +40,14 @@ export default function CoursesTable({
3740
3841 let userCoursesData = userCourses ;
3942 const [ originalRowRoles ] = useState ( ( ) => userCoursesData . reduce ( ( acc , row ) => {
40- acc [ row . course_id ] = row . role == null ? 'null' : row . role ;
43+ acc [ row . course_id ] = row . role == null ? NULL_ROLE : row . role ;
4144 return acc ;
4245 } , { } ) ) ;
4346
4447 const [ originalCheckedRows ] = useState ( ( ) => {
4548 const initial = { } ;
4649 userCoursesData . forEach ( ( row ) => {
47- if ( row . role === 'staff' || row . role === 'instructor' ) {
50+ if ( row . role === STAFF_ROLE || row . role === INSTRUCTOR_ROLE ) {
4851 initial [ row . course_id ] = true ;
4952 }
5053 } ) ;
@@ -92,7 +95,7 @@ export default function CoursesTable({
9295 // As we are considering 'null' to appear as staff with disabled dropdown
9396 userCoursesData = userCoursesData . map ( ( course ) => ( {
9497 ...course ,
95- role : course . role === null ? 'null' : course . role ,
98+ role : course . role === null ? NULL_ROLE : course . role ,
9699 } ) ) ;
97100 const [ search , setSearch ] = useState ( '' ) ;
98101 const [ status , setStatus ] = useState ( '' ) ;
@@ -111,7 +114,7 @@ export default function CoursesTable({
111114 const sortedAndFilteredData = React . useMemo ( ( ) => {
112115 let data = userCoursesData . map ( ( row ) => ( {
113116 ...row ,
114- role : rowRoles [ row . course_id ] !== undefined ? rowRoles [ row . course_id ] : 'null' ,
117+ role : rowRoles [ row . course_id ] !== undefined ? rowRoles [ row . course_id ] : NULL_ROLE ,
115118 } ) ) ;
116119
117120 // Manual Filtering for all columns in single search box
@@ -155,7 +158,7 @@ export default function CoursesTable({
155158 const [ checkedRows , setCheckedRows ] = useState ( ( ) => {
156159 const initial = { } ;
157160 userCoursesData . forEach ( ( row ) => {
158- if ( row . role === 'staff' || row . role === 'instructor' ) {
161+ if ( row . role === STAFF_ROLE || row . role === INSTRUCTOR_ROLE ) {
159162 initial [ row . course_id ] = true ;
160163 }
161164 } ) ;
@@ -230,9 +233,9 @@ export default function CoursesTable({
230233 const formatStatus = ( { value } ) => (
231234 < Badge
232235 className = "course-team-management-course-status-badge"
233- variant = { value === 'active' ? 'success' : 'light' }
236+ variant = { value === ACTIVE_COURSE_STATUS ? 'success' : 'light' }
234237 >
235- { value === 'active'
238+ { value === ACTIVE_COURSE_STATUS
236239 ? intl . formatMessage ( messages . activeCoursesFilterLabel )
237240 : intl . formatMessage ( messages . archivedCoursesFilterLabel ) }
238241 </ Badge >
@@ -252,9 +255,9 @@ export default function CoursesTable({
252255 const courseId = row . original . course_id ;
253256 const value = rowRoles [ courseId ] ;
254257 // If role is 'null', default to staff for display only
255- const displayValue = value === 'null' ? 'staff' : value ;
256- let title = 'Staff' ;
257- if ( displayValue === 'instructor' ) { title = 'Admin' ; }
258+ const displayValue = value === NULL_ROLE ? STAFF_ROLE : value ;
259+ let title = intl . formatMessage ( messages . statusStaffFilterLabelChoice ) ;
260+ if ( displayValue === INSTRUCTOR_ROLE ) { title = intl . formatMessage ( messages . statusAdminFilterLabelChoice ) ; }
258261 // Enable dropdown if checkbox is checked, otherwise disable
259262 const isChecked = ! ! checkedRows [ courseId ] ;
260263 const isDisabled = ! isChecked ;
@@ -274,17 +277,17 @@ export default function CoursesTable({
274277 < Dropdown . Menu placement = "top" >
275278 < Dropdown . Item
276279 data-testid = { `role-dropdown-item-staff-${ courseId } ` }
277- eventKey = "staff"
278- active = { displayValue === 'staff' }
279- onClick = { ( ) => setRowRoles ( ( prev ) => ( { ...prev , [ courseId ] : 'staff' } ) ) }
280+ eventKey = { STAFF_ROLE }
281+ active = { displayValue === STAFF_ROLE }
282+ onClick = { ( ) => setRowRoles ( ( prev ) => ( { ...prev , [ courseId ] : STAFF_ROLE } ) ) }
280283 >
281284 { intl . formatMessage ( messages . statusStaffFilterLabelChoice ) }
282285 </ Dropdown . Item >
283286 < Dropdown . Item
284287 data-testid = { `role-dropdown-item-instructor-${ courseId } ` }
285- eventKey = "instructor"
286- active = { displayValue === 'instructor' }
287- onClick = { ( ) => setRowRoles ( ( prev ) => ( { ...prev , [ courseId ] : 'instructor' } ) ) }
288+ eventKey = { INSTRUCTOR_ROLE }
289+ active = { displayValue === INSTRUCTOR_ROLE }
290+ onClick = { ( ) => setRowRoles ( ( prev ) => ( { ...prev , [ courseId ] : INSTRUCTOR_ROLE } ) ) }
288291 >
289292 { intl . formatMessage ( messages . statusAdminFilterLabelChoice ) }
290293 </ Dropdown . Item >
0 commit comments