MOBILE-3833 course: Decrease WS calls to get_courses_by_fields

main
Dani Palou 2022-03-24 11:12:21 +01:00
parent 147df9b58e
commit b86cf8d93c
3 changed files with 37 additions and 12 deletions

View File

@ -203,6 +203,15 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
await this.invalidateCourses(courseIds);
}
/**
* Invalidate list of courses.
*
* @return Promise resolved when done.
*/
protected invalidateCourseList(): Promise<void> {
return CoreCourses.invalidateUserCourses();
}
/**
* Helper function to invalidate only selected courses.
*
@ -213,7 +222,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
const promises: Promise<void>[] = [];
// Invalidate course completion data.
promises.push(CoreCourses.invalidateUserCourses().finally(() =>
promises.push(this.invalidateCourseList().finally(() =>
CoreUtils.allPromises(courseIds.map((courseId) =>
AddonCourseCompletion.invalidateCourseCompletion(courseId)))));
@ -397,7 +406,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
course.hidden = !!data.value;
}
await this.invalidateCourses([course.id]);
await this.invalidateCourseList();
await this.filterCourses();
}
@ -409,7 +418,7 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem
course.lastaccess = CoreTimeUtils.timestamp();
await this.invalidateCourses([course.id]);
await this.invalidateCourseList();
await this.filterCourses();
}
}

View File

@ -85,6 +85,17 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
await this.invalidateCourses(courseIds);
}
/**
* Invalidate list of courses.
*
* @return Promise resolved when done.
*/
protected async invalidateCourseList(): Promise<void> {
return this.site.isVersionGreaterEqualThan('3.8')
? CoreCourses.invalidateRecentCourses()
: CoreCourses.invalidateUserCourses();
}
/**
* Helper function to invalidate only selected courses.
*
@ -94,12 +105,8 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
protected async invalidateCourses(courseIds: number[]): Promise<void> {
const promises: Promise<void>[] = [];
const invalidateCoursePromise = this.site.isVersionGreaterEqualThan('3.8')
? CoreCourses.invalidateRecentCourses()
: CoreCourses.invalidateUserCourses();
// Invalidate course completion data.
promises.push(invalidateCoursePromise.finally(() =>
promises.push(this.invalidateCourseList().finally(() =>
CoreUtils.allPromises(courseIds.map((courseId) =>
AddonCourseCompletion.invalidateCourseCompletion(courseId)))));
@ -179,13 +186,13 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
this.courses.splice(courseIndex, 1);
this.courses.unshift(course);
await this.invalidateCourses([course.id]);
await this.invalidateCourseList();
}
if (data.action == CoreCoursesProvider.ACTION_STATE_CHANGED &&
data.state == CoreCoursesProvider.STATE_FAVOURITE && course) {
course.isfavourite = !!data.value;
await this.invalidateCourses([course.id]);
await this.invalidateCourseList();
}
}

View File

@ -81,6 +81,15 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
await this.invalidateCourses(courseIds);
}
/**
* Invalidate list of courses.
*
* @return Promise resolved when done.
*/
protected async invalidateCourseList(): Promise<void> {
return AddonBlockStarredCourses.invalidateStarredCourses();
}
/**
* Helper function to invalidate only selected courses.
*
@ -91,7 +100,7 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
const promises: Promise<void>[] = [];
// Invalidate course completion data.
promises.push(AddonBlockStarredCourses.invalidateStarredCourses().finally(() =>
promises.push(this.invalidateCourseList().finally(() =>
CoreUtils.allPromises(courseIds.map((courseId) =>
AddonCourseCompletion.invalidateCourseCompletion(courseId)))));
@ -172,7 +181,7 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
this.courses.unshift(course);
}
await this.invalidateCourses([course.id]);
await this.invalidateCourseList();
}
}