Merge pull request #4142 from albertgasset/MOBILE-4580

MOBILE-4580 courses: Use new WS parameter to fetch course by section id
main
Dani Palou 2024-08-14 08:15:54 +02:00 committed by GitHub
commit 5bb121ce04
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 5 deletions

View File

@ -413,6 +413,7 @@ export class CoreCoursesProvider {
* shortname: course short name. * shortname: course short name.
* idnumber: course id number. * idnumber: course id number.
* category: category id the course belongs to. * category: category id the course belongs to.
* sectionid: section id that belongs to a course, since 4.5.
* @param value The value to match. * @param value The value to match.
* @param siteId Site ID. If not defined, use current site. * @param siteId Site ID. If not defined, use current site.
* @returns Promise resolved with the first course. * @returns Promise resolved with the first course.
@ -436,6 +437,7 @@ export class CoreCoursesProvider {
* shortname: course short name. * shortname: course short name.
* idnumber: course id number. * idnumber: course id number.
* category: category id the course belongs to. * category: category id the course belongs to.
* sectionid: section id that belongs to a course, since 4.5.
* @param value The value to match. * @param value The value to match.
* @param siteId Site ID. If not defined, use current site. * @param siteId Site ID. If not defined, use current site.
* @returns Promise resolved with the courses. * @returns Promise resolved with the courses.
@ -457,6 +459,7 @@ export class CoreCoursesProvider {
* shortname: course short name. * shortname: course short name.
* idnumber: course id number. * idnumber: course id number.
* category: category id the course belongs to. * category: category id the course belongs to.
* sectionid: section id that belongs to a course, since 4.5.
* @param value The value to match. * @param value The value to match.
* @param options Other options. * @param options Other options.
* @returns Observable that returns the courses. * @returns Observable that returns the courses.

View File

@ -15,7 +15,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { makeSingleton } from '@singletons'; import { makeSingleton } from '@singletons';
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate'; import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
import { CoreCourses, CoreEnrolledCourseData } from '@features/courses/services/courses'; import { CoreCourseBasicData, CoreCourses } from '@features/courses/services/courses';
import { CoreSites, CoreSitesReadingStrategy } from '@services/sites'; import { CoreSites, CoreSitesReadingStrategy } from '@services/sites';
import { CoreCourse } from '@features/course/services/course'; import { CoreCourse } from '@features/course/services/course';
import { CoreCoursesLinksHandlerBase } from '@features/courses/services/handlers/base-link-handler'; import { CoreCoursesLinksHandlerBase } from '@features/courses/services/handlers/base-link-handler';
@ -66,14 +66,24 @@ export class CoreCoursesSectionLinkHandlerService extends CoreCoursesLinksHandle
* @param siteId Site id. * @param siteId Site id.
* @returns Course. * @returns Course.
*/ */
private async getSectionCourse(sectionId: number | false, siteId: string | false): Promise<CoreEnrolledCourseData | null> { private async getSectionCourse(sectionId: number | false, siteId: string | false): Promise<CoreCourseBasicData | null> {
if (!siteId || !sectionId) { if (!siteId || !sectionId) {
return null; return null;
} }
// Ideally, we would use a webservice to get this information; but such webservice doesn't exists. const site = await CoreSites.getSite(siteId);
// Given that getting all the courses from a user could be very network intensive, all the requests
// in this method will only use cache. if (site.isVersionGreaterEqualThan('4.5')) {
try {
return CoreCourses.getCourseByField('sectionid', sectionId, siteId);
} catch {
// Fallback to searching courses stored in cache.
}
}
// In 4.4 and previous versions, the web service does not allow fetching a course by section id.
// Given that getting all the courses from a user could be very network intensive, the following
// requests will only use cache.
const courses = await CoreUtils.ignoreErrors( const courses = await CoreUtils.ignoreErrors(
CoreCourses.getUserCourses(true, siteId, CoreSitesReadingStrategy.ONLY_CACHE), CoreCourses.getUserCourses(true, siteId, CoreSitesReadingStrategy.ONLY_CACHE),