diff --git a/apps/dashboard/src/lib/components/Course/store.ts b/apps/dashboard/src/lib/components/Course/store.ts index 6b16933a..bb058511 100644 --- a/apps/dashboard/src/lib/components/Course/store.ts +++ b/apps/dashboard/src/lib/components/Course/store.ts @@ -68,12 +68,15 @@ export const mockGroupMember = { } }; -export const group = writable<{ +type GroupStore = { id: number | null; tutors: GroupPerson[]; students: GroupPerson[]; people: GroupPerson[]; -}>({ + members?: GroupPerson[]; +}; + +export const group = writable({ id: null, tutors: [], students: [], @@ -86,46 +89,36 @@ export async function setCourse(data: Course, setLesson = true) { if (data.group) { const groupData = Object.assign(data.group, { + id: null, tutors: [], students: [], people: [] - }); + }) as GroupStore; - // @ts-ignore if (Array.isArray(groupData.members)) { - // @ts-ignore for (const member of groupData.members) { if (member.role_id === ROLE.STUDENT) { - // @ts-ignore groupData.students.push(member); } else if (member.profile) { - // @ts-ignore groupData.tutors.push({ ...member.profile, memberId: member.id }); - - // tutorsById[member.profile.id] = member.profile; } } - // @ts-ignore groupData.people = groupData.members; } - // @ts-ignore delete groupData.members; - // @ts-ignore + group.set(groupData); } if (setLesson) { - // @ts-ignore const orderedLessons = (data.lessons || []) - // @ts-ignore - .sort((a, b) => new Date(a.created_at) - new Date(b.created_at)) - // @ts-ignore - .sort((a, b) => a.order - b.order); + .sort((a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime()) + .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)); // .map((lesson) => ({ // ...lesson, // profile: lesson.profile && tutorsById[lesson.profile.id], @@ -133,7 +126,6 @@ export async function setCourse(data: Course, setLesson = true) { lessons.set(orderedLessons); } - //@ts-ignore delete data.lessons; if (data.metadata && !Object.values(data.metadata)) { diff --git a/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte b/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte index cbf3d7d5..db3d3011 100644 --- a/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte +++ b/apps/dashboard/src/lib/components/CourseLandingPage/index.svelte @@ -90,7 +90,9 @@ $: video = get(courseData, 'metadata.videoUrl'); $: allowNewStudent = get(courseData, 'metadata.allowNewStudent'); $: bannerImage = get(courseData, 'logo'); - $: lessons = get(courseData, 'lessons', []); + $: lessons = get(courseData, 'lessons', []) + .sort((a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime()) + .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)); $: instructor = get(courseData, 'metadata.instructor') || {}; $: initPlyr(player, video); $: { diff --git a/apps/dashboard/src/lib/utils/services/courses/index.ts b/apps/dashboard/src/lib/utils/services/courses/index.ts index a5fc0aec..0da620d3 100644 --- a/apps/dashboard/src/lib/utils/services/courses/index.ts +++ b/apps/dashboard/src/lib/utils/services/courses/index.ts @@ -28,7 +28,7 @@ const SLUG_QUERY = ` is_certificate_downloadable, certificate_theme, lessons:lesson( - id, title, public, lesson_at, call_url, is_unlocked, order, created_at + id, title, order ) `; diff --git a/apps/dashboard/src/lib/utils/types/index.ts b/apps/dashboard/src/lib/utils/types/index.ts index cd6b6d0d..431c6f7e 100644 --- a/apps/dashboard/src/lib/utils/types/index.ts +++ b/apps/dashboard/src/lib/utils/types/index.ts @@ -19,7 +19,8 @@ export interface GroupPerson { email: string | null; group_id: string; id: string; - profile: Profile; + memberId: string; + profile: Partial; profile_id: string; role_id: Role['id']; fullname?: string; @@ -297,7 +298,7 @@ export interface Lesson { slide_url?: any; // type unknown; course_id: string /* foreign key to course.id */; id: string /* primary key */; - created_at?: string; + created_at: string; updated_at?: string; title: string; // type unknown; public?: boolean;