chore: simplify course fetching
This commit is contained in:
@@ -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<GroupStore>({
|
||||
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)) {
|
||||
|
||||
@@ -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);
|
||||
$: {
|
||||
|
||||
@@ -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
|
||||
)
|
||||
`;
|
||||
|
||||
|
||||
@@ -19,7 +19,8 @@ export interface GroupPerson {
|
||||
email: string | null;
|
||||
group_id: string;
|
||||
id: string;
|
||||
profile: Profile;
|
||||
memberId: string;
|
||||
profile: Partial<Profile>;
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user