MOBILE-2873 sync: Sync fixes
parent
2469d903a7
commit
d767b7514e
|
@ -109,8 +109,8 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider {
|
|||
/**
|
||||
* Try to synchronize all the assignments in a certain site or in all sites.
|
||||
*
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @param {string} [siteId] Site ID to sync. If not defined, sync all sites.
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||
*/
|
||||
syncAllAssignments(siteId?: string, force?: boolean): Promise<any> {
|
||||
|
@ -120,8 +120,8 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider {
|
|||
/**
|
||||
* Sync all assignments on a site.
|
||||
*
|
||||
* @param {boolean} [force] Wether to force sync not depending on last execution.
|
||||
* @param {string} [siteId] Site ID to sync. If not defined, sync all sites.
|
||||
* @param {boolean} [force] Wether to force sync not depending on last execution.
|
||||
* @param {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||
*/
|
||||
protected syncAllAssignmentsFunc(siteId?: string, force?: boolean): Promise<any> {
|
||||
|
|
|
@ -461,10 +461,11 @@ export class AddonModAssignPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
return this.syncProvider.syncAssign(module.instance, siteId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -141,10 +141,11 @@ export class AddonModChoicePrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
if (!this.syncProvider) {
|
||||
this.syncProvider = this.injector.get(AddonModChoiceSyncProvider);
|
||||
}
|
||||
|
|
|
@ -67,8 +67,8 @@ export class AddonModChoiceSyncProvider extends CoreCourseActivitySyncBaseProvid
|
|||
/**
|
||||
* Try to synchronize all the choices in a certain site or in all sites.
|
||||
*
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @param {string} [siteId] Site ID to sync. If not defined, sync all sites.
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||
*/
|
||||
syncAllChoices(siteId?: string, force?: boolean): Promise<any> {
|
||||
|
@ -132,8 +132,9 @@ export class AddonModChoiceSyncProvider extends CoreCourseActivitySyncBaseProvid
|
|||
* @return {Promise<any>} Promise resolved if sync is successful, rejected otherwise.
|
||||
*/
|
||||
syncChoice(choiceId: number, userId?: number, siteId?: string): Promise<any> {
|
||||
siteId = siteId || this.sitesProvider.getCurrentSiteId();
|
||||
userId = userId || this.sitesProvider.getCurrentSiteUserId();
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
userId = userId || site.getUserId();
|
||||
siteId = site.getId();
|
||||
|
||||
const syncId = this.getSyncId(choiceId, userId);
|
||||
if (this.isSyncing(syncId, siteId)) {
|
||||
|
@ -221,5 +222,6 @@ export class AddonModChoiceSyncProvider extends CoreCourseActivitySyncBaseProvid
|
|||
});
|
||||
|
||||
return this.addOngoingSync(syncId, syncPromise, siteId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -521,7 +521,7 @@ export class AddonModDataIndexComponent extends CoreCourseModuleMainActivityComp
|
|||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
protected sync(): Promise<any> {
|
||||
return this.prefetchHandler.sync(this.module);
|
||||
return this.prefetchHandler.sync(this.module, this.courseId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -307,10 +307,11 @@ export class AddonModDataPrefetchHandler extends CoreCourseActivityPrefetchHandl
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
const promises = [
|
||||
this.syncProvider.syncDatabase(module.instance, siteId),
|
||||
this.syncProvider.syncRatings(module.id, true, siteId)
|
||||
|
|
|
@ -66,8 +66,8 @@ export class AddonModDataSyncProvider extends CoreSyncBaseProvider {
|
|||
/**
|
||||
* Try to synchronize all the databases in a certain site or in all sites.
|
||||
*
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @param {string} [siteId] Site ID to sync. If not defined, sync all sites.
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||
*/
|
||||
syncAllDatabases(siteId?: string, force?: boolean): Promise<any> {
|
||||
|
|
|
@ -248,10 +248,11 @@ export class AddonModFeedbackPrefetchHandler extends CoreCourseActivityPrefetchH
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
if (!this.syncProvider) {
|
||||
this.syncProvider = this.injector.get(AddonModFeedbackSyncProvider);
|
||||
}
|
||||
|
|
|
@ -71,8 +71,8 @@ export class AddonModFeedbackSyncProvider extends CoreCourseActivitySyncBaseProv
|
|||
/**
|
||||
* Try to synchronize all the feedbacks in a certain site or in all sites.
|
||||
*
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @param {string} [siteId] Site ID to sync. If not defined, sync all sites.
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||
*/
|
||||
syncAllFeedbacks(siteId?: string, force?: boolean): Promise<any> {
|
||||
|
|
|
@ -376,7 +376,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
|
|||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
protected sync(): Promise<boolean> {
|
||||
return this.prefetchHandler.sync(this.module);
|
||||
return this.prefetchHandler.sync(this.module, this.courseId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -271,10 +271,11 @@ export class AddonModForumPrefetchHandler extends CoreCourseActivityPrefetchHand
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
const promises = [];
|
||||
|
||||
promises.push(this.syncProvider.syncForumDiscussions(module.instance, undefined, siteId));
|
||||
|
|
|
@ -220,7 +220,7 @@ export class AddonModGlossaryIndexComponent extends CoreCourseModuleMainActivity
|
|||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
protected sync(): Promise<boolean> {
|
||||
return this.prefetchHandler.sync(this.module);
|
||||
return this.prefetchHandler.sync(this.module, this.courseId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -194,10 +194,11 @@ export class AddonModGlossaryPrefetchHandler extends CoreCourseActivityPrefetchH
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
const promises = [
|
||||
this.syncProvider.syncGlossaryEntries(module.instance, undefined, siteId),
|
||||
this.syncProvider.syncRatings(module.id, undefined, siteId)
|
||||
|
|
|
@ -437,10 +437,11 @@ export class AddonModLessonPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
if (!this.syncProvider) {
|
||||
this.syncProvider = this.injector.get(AddonModLessonSyncProvider);
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ export class AddonModQuizHelperProvider {
|
|||
getAndCheckPreflightData(quiz: any, accessInfo: any, preflightData: any, attempt: any, offline?: boolean, prefetch?: boolean,
|
||||
title?: string, siteId?: string, retrying?: boolean): Promise<any> {
|
||||
|
||||
const rules = accessInfo.activerulenames;
|
||||
const rules = accessInfo && accessInfo.activerulenames;
|
||||
let isPreflightCheckRequired = false;
|
||||
|
||||
// Check if the user needs to input preflight data.
|
||||
|
|
|
@ -567,6 +567,8 @@ export class AddonModQuizPrefetchHandler extends CoreCourseActivityPrefetchHandl
|
|||
this.syncProvider = this.injector.get(AddonModQuizSyncProvider);
|
||||
}
|
||||
|
||||
return this.syncProvider.syncQuiz(module.instance, false, siteId);
|
||||
return this.quizProvider.getQuiz(module.course, module.id).then((quiz) => {
|
||||
return this.syncProvider.syncQuiz(quiz, false, siteId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -431,10 +431,11 @@ export class AddonModScormPrefetchHandler extends CoreCourseActivityPrefetchHand
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
if (!this.syncProvider) {
|
||||
this.syncProvider = this.injector.get(AddonModScormSyncProvider);
|
||||
}
|
||||
|
|
|
@ -443,8 +443,8 @@ export class AddonModScormSyncProvider extends CoreCourseActivitySyncBaseProvide
|
|||
/**
|
||||
* Try to synchronize all the SCORMs in a certain site or in all sites.
|
||||
*
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @param {string} [siteId] Site ID to sync. If not defined, sync all sites.
|
||||
* @param {boolean} force Wether to force sync not depending on last execution.
|
||||
* @return {Promise<any>} Promise resolved if sync is successful, rejected if sync fails.
|
||||
*/
|
||||
syncAllScorms(siteId?: string, force?: boolean): Promise<any> {
|
||||
|
|
|
@ -134,10 +134,11 @@ export class AddonModSurveyPrefetchHandler extends CoreCourseActivityPrefetchHan
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
if (!this.syncProvider) {
|
||||
this.syncProvider = this.injector.get(AddonModSurveySyncProvider);
|
||||
}
|
||||
|
|
|
@ -135,8 +135,9 @@ export class AddonModSurveySyncProvider extends CoreCourseActivitySyncBaseProvid
|
|||
* @return {Promise<any>} Promise resolved if sync is successful, rejected otherwise.
|
||||
*/
|
||||
syncSurvey(surveyId: number, userId?: number, siteId?: string): Promise<any> {
|
||||
siteId = siteId || this.sitesProvider.getCurrentSiteId();
|
||||
userId = userId || this.sitesProvider.getCurrentSiteUserId();
|
||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||
userId = userId || site.getUserId();
|
||||
siteId = site.getId();
|
||||
|
||||
const syncId = this.getSyncId(surveyId, userId);
|
||||
if (this.isSyncing(syncId, siteId)) {
|
||||
|
@ -216,6 +217,7 @@ export class AddonModSurveySyncProvider extends CoreCourseActivitySyncBaseProvid
|
|||
});
|
||||
|
||||
return this.addOngoingSync(syncId, syncPromise, siteId);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -217,10 +217,11 @@ export class AddonModWikiPrefetchHandler extends CoreCourseActivityPrefetchHandl
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
return this.syncProvider.syncWiki(module.instance, module.course, module.id, siteId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -372,10 +372,11 @@ export class AddonModWorkshopPrefetchHandler extends CoreCourseActivityPrefetchH
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync(module: any, siteId?: string): Promise<any> {
|
||||
sync(module: any, courseId: number, siteId?: any): Promise<any> {
|
||||
return this.syncProvider.syncWorkshop(module.instance, siteId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1319,7 +1319,7 @@ export class CoreCourseHelperProvider {
|
|||
section.isDownloading = true;
|
||||
|
||||
// Sync the modules first.
|
||||
promises.push(this.prefetchDelegate.syncModules(section.modules).then(() => {
|
||||
promises.push(this.prefetchDelegate.syncModules(section.modules, courseId).then(() => {
|
||||
// Validate the section needs to be downloaded and calculate amount of modules that need to be downloaded.
|
||||
return this.prefetchDelegate.getModulesStatus(section.modules, courseId, section.id).then((result) => {
|
||||
if (result.status == CoreConstants.DOWNLOADED || result.status == CoreConstants.NOT_DOWNLOADABLE) {
|
||||
|
|
|
@ -211,10 +211,11 @@ export interface CoreCourseModulePrefetchHandler extends CoreDelegateHandler {
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module.
|
||||
* @param {number} courseId Course ID the module belongs to
|
||||
* @param {string} [siteId] Site ID. If not defined, current site.
|
||||
* @return {Promise<any>} Promise resolved when done.
|
||||
*/
|
||||
sync?(module: any, siteId?: any): Promise<any>;
|
||||
sync?(module: any, courseId: number, siteId?: any): Promise<any>;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1148,7 +1149,7 @@ export class CoreCourseModulePrefetchDelegate extends CoreDelegate {
|
|||
|
||||
// Check if the module has a prefetch handler.
|
||||
if (handler) {
|
||||
return this.syncModule(module).then(() => {
|
||||
return this.syncModule(module, courseId).then(() => {
|
||||
return handler.prefetch(module, courseId, single);
|
||||
});
|
||||
}
|
||||
|
@ -1160,11 +1161,12 @@ export class CoreCourseModulePrefetchDelegate extends CoreDelegate {
|
|||
* Sync a group of modules.
|
||||
*
|
||||
* @param {any[]} modules Array of modules to sync.
|
||||
* @param {number} courseId Course ID the module belongs to.
|
||||
* @return {Promise<any>} Promise resolved when finished.
|
||||
*/
|
||||
syncModules(modules: any[]): Promise<any> {
|
||||
syncModules(modules: any[], courseId: number): Promise<any> {
|
||||
return Promise.all(modules.map((module) => {
|
||||
return this.syncModule(module);
|
||||
return this.syncModule(module, courseId);
|
||||
}));
|
||||
}
|
||||
|
||||
|
@ -1172,12 +1174,13 @@ export class CoreCourseModulePrefetchDelegate extends CoreDelegate {
|
|||
* Sync a module.
|
||||
*
|
||||
* @param {any} module Module to sync.
|
||||
* @param {number} courseId Course ID the module belongs to.
|
||||
* @return {Promise<any>} Promise resolved when finished.
|
||||
*/
|
||||
syncModule(module: any): Promise<any> {
|
||||
syncModule(module: any, courseId: number): Promise<any> {
|
||||
const handler = this.getPrefetchHandlerFor(module);
|
||||
|
||||
const promise = handler && handler.sync ? handler.sync(module) : Promise.resolve();
|
||||
const promise = handler && handler.sync ? handler.sync(module, courseId) : Promise.resolve();
|
||||
|
||||
return promise.catch(() => {
|
||||
// Ignore errors.
|
||||
|
|
Loading…
Reference in New Issue