feat(dashboard): add last updated at course sort option (#823)

Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: Rotimi Best <[email protected]>
This commit is contained in:
Rotimi Best
2026-08-04 18:20:25 +01:00
committed by GitHub
co-authored by Cursor Agent Rotimi Best
parent 753f9b3d7b
commit 9b9dccc07a
13 changed files with 26 additions and 0 deletions
@@ -19,6 +19,7 @@ export const EXERCISE_TEMPLATE_TAGS = {
/** Named sort keys for course lists (URL `sort`, localStorage, filter UI). */
export const CourseSortBy = {
DateCreated: 'date_created',
LastUpdatedAt: 'last_updated_at',
Published: 'published',
Lessons: 'lessons'
} as const;
@@ -68,6 +69,7 @@ export function parseCourseSortOrder(value: string | null | undefined): CourseSo
export const COURSE_SORT_OPTIONS = [
{ value: CourseSortBy.DateCreated, label: 'courses.course_filter.date_created' },
{ value: CourseSortBy.LastUpdatedAt, label: 'courses.course_filter.last_updated_at' },
{ value: CourseSortBy.Published, label: 'courses.course_filter.published' },
{ value: CourseSortBy.Lessons, label: 'courses.course_filter.lessons' }
] as const;
@@ -39,6 +39,13 @@
return coursesFiltered.sort(
(a, b) => new Date(a.createdAt ?? '').getTime() - new Date(b.createdAt ?? '').getTime()
);
} else if (sortKey === CourseSortBy.LastUpdatedAt) {
return coursesFiltered.sort((a, b) => {
const aUpdatedAt = new Date(a.updatedAt ?? a.createdAt ?? '').getTime();
const bUpdatedAt = new Date(b.updatedAt ?? b.createdAt ?? '').getTime();
return bUpdatedAt - aUpdatedAt;
});
} else if (sortKey === CourseSortBy.Published) {
return coursesFiltered.sort((a, b) => Number(b.isPublished) - Number(a.isPublished));
} else if (sortKey === CourseSortBy.Lessons) {