MOBILE-2873 sync: Fix course log syncing
parent
af7872f862
commit
a26fbeab92
|
@ -227,7 +227,7 @@ export class CoreCourseLogHelperProvider {
|
||||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||||
* @return {Promise<any>} Promise resolved when done.
|
* @return {Promise<any>} Promise resolved when done.
|
||||||
*/
|
*/
|
||||||
syncAll(siteId?: string): Promise<any> {
|
syncSite(siteId?: string): Promise<any> {
|
||||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||||
const siteId = site.getId();
|
const siteId = site.getId();
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { CoreCronHandler } from '@providers/cron';
|
import { CoreCronHandler } from '@providers/cron';
|
||||||
import { CoreCourseSyncProvider } from './sync';
|
import { CoreCourseSyncProvider } from './sync';
|
||||||
import { CoreCourseLogHelperProvider } from './log-helper';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Synchronization cron handler.
|
* Synchronization cron handler.
|
||||||
|
@ -24,7 +23,7 @@ import { CoreCourseLogHelperProvider } from './log-helper';
|
||||||
export class CoreCourseSyncCronHandler implements CoreCronHandler {
|
export class CoreCourseSyncCronHandler implements CoreCronHandler {
|
||||||
name = 'CoreCourseSyncCronHandler';
|
name = 'CoreCourseSyncCronHandler';
|
||||||
|
|
||||||
constructor(private courseSync: CoreCourseSyncProvider, private logHelper: CoreCourseLogHelperProvider) {}
|
constructor(private courseSync: CoreCourseSyncProvider) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the process.
|
* Execute the process.
|
||||||
|
@ -35,14 +34,7 @@ export class CoreCourseSyncCronHandler implements CoreCronHandler {
|
||||||
* @return {Promise<any>} Promise resolved when done, rejected if failure.
|
* @return {Promise<any>} Promise resolved when done, rejected if failure.
|
||||||
*/
|
*/
|
||||||
execute(siteId?: string, force?: boolean): Promise<any> {
|
execute(siteId?: string, force?: boolean): Promise<any> {
|
||||||
const promises = [];
|
return this.courseSync.syncAllCourses(siteId);
|
||||||
// Sync activity logs even if the activity does not have sync handler.
|
|
||||||
// This will sync all the activity logs even if there's nothing else to sync and also recources.
|
|
||||||
promises.push(this.logHelper.syncAll(siteId));
|
|
||||||
|
|
||||||
promises.push(this.courseSync.syncAllCourses(siteId));
|
|
||||||
|
|
||||||
return Promise.all(promises);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,18 +13,19 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { CoreLoggerProvider } from '@providers/logger';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreSyncBaseProvider } from '@classes/base-sync';
|
import { CoreSyncBaseProvider } from '@classes/base-sync';
|
||||||
|
import { CoreLoggerProvider } from '@providers/logger';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreAppProvider } from '@providers/app';
|
import { CoreAppProvider } from '@providers/app';
|
||||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
import { CoreUtilsProvider } from '@providers/utils/utils';
|
||||||
import { CoreTextUtilsProvider } from '@providers/utils/text';
|
import { CoreTextUtilsProvider } from '@providers/utils/text';
|
||||||
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
import { CoreTimeUtilsProvider } from '@providers/utils/time';
|
||||||
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
|
import { CoreSyncProvider } from '@providers/sync';
|
||||||
import { CoreCourseOfflineProvider } from './course-offline';
|
import { CoreCourseOfflineProvider } from './course-offline';
|
||||||
import { CoreCourseProvider } from './course';
|
import { CoreCourseProvider } from './course';
|
||||||
import { CoreEventsProvider } from '@providers/events';
|
import { CoreCourseLogHelperProvider } from './log-helper';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
|
||||||
import { CoreSyncProvider } from '@providers/sync';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service to sync course offline data. This only syncs the offline data of the course itself, not the offline data of
|
* Service to sync course offline data. This only syncs the offline data of the course itself, not the offline data of
|
||||||
|
@ -39,7 +40,7 @@ export class CoreCourseSyncProvider extends CoreSyncBaseProvider {
|
||||||
protected appProvider: CoreAppProvider, private courseOffline: CoreCourseOfflineProvider,
|
protected appProvider: CoreAppProvider, private courseOffline: CoreCourseOfflineProvider,
|
||||||
private eventsProvider: CoreEventsProvider, private courseProvider: CoreCourseProvider,
|
private eventsProvider: CoreEventsProvider, private courseProvider: CoreCourseProvider,
|
||||||
translate: TranslateService, private utils: CoreUtilsProvider, protected textUtils: CoreTextUtilsProvider,
|
translate: TranslateService, private utils: CoreUtilsProvider, protected textUtils: CoreTextUtilsProvider,
|
||||||
syncProvider: CoreSyncProvider, timeUtils: CoreTimeUtilsProvider) {
|
syncProvider: CoreSyncProvider, timeUtils: CoreTimeUtilsProvider, protected logHelper: CoreCourseLogHelperProvider) {
|
||||||
|
|
||||||
super('CoreCourseSyncProvider', loggerProvider, sitesProvider, appProvider, syncProvider, textUtils, translate, timeUtils);
|
super('CoreCourseSyncProvider', loggerProvider, sitesProvider, appProvider, syncProvider, textUtils, translate, timeUtils);
|
||||||
}
|
}
|
||||||
|
@ -61,9 +62,13 @@ export class CoreCourseSyncProvider extends CoreSyncBaseProvider {
|
||||||
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||||
*/
|
*/
|
||||||
protected syncAllCoursesFunc(siteId?: string): Promise<any> {
|
protected syncAllCoursesFunc(siteId?: string): Promise<any> {
|
||||||
return this.courseOffline.getAllManualCompletions(siteId).then((completions) => {
|
const p1 = [];
|
||||||
|
|
||||||
|
p1.push(this.logHelper.syncSite(siteId));
|
||||||
|
|
||||||
|
p1.push(this.courseOffline.getAllManualCompletions(siteId).then((completions) => {
|
||||||
// Sync all courses.
|
// Sync all courses.
|
||||||
const promises = completions.map((completion) => {
|
const p2 = completions.map((completion) => {
|
||||||
return this.syncCourseIfNeeded(completion.courseid, siteId).then((result) => {
|
return this.syncCourseIfNeeded(completion.courseid, siteId).then((result) => {
|
||||||
if (result && result.updated) {
|
if (result && result.updated) {
|
||||||
// Sync successful, send event.
|
// Sync successful, send event.
|
||||||
|
@ -75,8 +80,10 @@ export class CoreCourseSyncProvider extends CoreSyncBaseProvider {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return Promise.all(promises);
|
return Promise.all(p2);
|
||||||
});
|
}));
|
||||||
|
|
||||||
|
return Promise.all(p1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue