From 517ed533278f44b430e16b620815128273e301f6 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 20 Jun 2018 16:49:23 +0200 Subject: [PATCH] MOBILE-2431 sync: Decrease sync cron times to 5 minutes --- src/addon/mod/assign/providers/assign-sync.ts | 1 - .../mod/assign/providers/sync-cron-handler.ts | 2 +- .../mod/choice/providers/sync-cron-handler.ts | 2 +- src/addon/mod/choice/providers/sync.ts | 20 ++++++++++++++++++- .../mod/data/providers/sync-cron-handler.ts | 2 +- .../feedback/providers/sync-cron-handler.ts | 2 +- .../mod/forum/providers/sync-cron-handler.ts | 2 +- src/addon/mod/forum/providers/sync.ts | 1 - .../glossary/providers/sync-cron-handler.ts | 2 +- src/addon/mod/glossary/providers/sync.ts | 1 - src/addon/mod/lesson/providers/lesson-sync.ts | 1 - .../mod/lesson/providers/sync-cron-handler.ts | 2 +- .../offlineattempts/providers/handler.ts | 4 ++-- src/addon/mod/quiz/providers/quiz-sync.ts | 1 - .../mod/quiz/providers/sync-cron-handler.ts | 2 +- src/addon/mod/scorm/providers/scorm-sync.ts | 1 - .../mod/scorm/providers/sync-cron-handler.ts | 2 +- .../mod/survey/providers/sync-cron-handler.ts | 2 +- .../mod/wiki/providers/sync-cron-handler.ts | 2 +- src/addon/mod/wiki/providers/wiki-sync.ts | 1 - .../workshop/providers/sync-cron-handler.ts | 2 +- src/addon/mod/workshop/providers/sync.ts | 1 - .../notes/providers/sync-cron-handler.ts | 2 +- 23 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/addon/mod/assign/providers/assign-sync.ts b/src/addon/mod/assign/providers/assign-sync.ts index a2576b465..ae518eb4b 100644 --- a/src/addon/mod/assign/providers/assign-sync.ts +++ b/src/addon/mod/assign/providers/assign-sync.ts @@ -52,7 +52,6 @@ export interface AddonModAssignSyncResult { export class AddonModAssignSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_assign_autom_synced'; - static SYNC_TIME = 300000; protected componentTranslate: string; diff --git a/src/addon/mod/assign/providers/sync-cron-handler.ts b/src/addon/mod/assign/providers/sync-cron-handler.ts index 9cc969259..fe68ccddd 100644 --- a/src/addon/mod/assign/providers/sync-cron-handler.ts +++ b/src/addon/mod/assign/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModAssignSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return this.assignSync.syncInterval; } } diff --git a/src/addon/mod/choice/providers/sync-cron-handler.ts b/src/addon/mod/choice/providers/sync-cron-handler.ts index c123021f8..af6cb8e81 100644 --- a/src/addon/mod/choice/providers/sync-cron-handler.ts +++ b/src/addon/mod/choice/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModChoiceSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return this.choiceSync.syncInterval; } } diff --git a/src/addon/mod/choice/providers/sync.ts b/src/addon/mod/choice/providers/sync.ts index fb86705b3..03d72e5cd 100644 --- a/src/addon/mod/choice/providers/sync.ts +++ b/src/addon/mod/choice/providers/sync.ts @@ -77,7 +77,7 @@ export class AddonModChoiceSyncProvider extends CoreSyncBaseProvider { // Sync all responses. responses.forEach((response) => { - promises.push(this.syncChoice(response.choiceid, response.userid, siteId).then((result) => { + promises.push(this.syncChoiceIfNeeded(response.choiceid, response.userid, siteId).then((result) => { if (result && result.updated) { // Sync successful, send event. this.eventsProvider.trigger(AddonModChoiceSyncProvider.AUTO_SYNCED, { @@ -91,6 +91,24 @@ export class AddonModChoiceSyncProvider extends CoreSyncBaseProvider { }); } + /** + * Sync an choice only if a certain time has passed since the last time. + * + * @param {number} choiceId Choice ID to be synced. + * @param {number} userId User the answers belong to. + * @param {string} [siteId] Site ID. If not defined, current site. + * @return {Promise} Promise resolved when the choice is synced or it doesn't need to be synced. + */ + syncChoiceIfNeeded(choiceId: number, userId: number, siteId?: string): Promise { + const syncId = this.getSyncId(choiceId, userId); + + return this.isSyncNeeded(syncId, siteId).then((needed) => { + if (needed) { + return this.syncChoice(choiceId, userId, siteId); + } + }); + } + /** * Synchronize a choice. * diff --git a/src/addon/mod/data/providers/sync-cron-handler.ts b/src/addon/mod/data/providers/sync-cron-handler.ts index 2560e571b..31a3db30a 100644 --- a/src/addon/mod/data/providers/sync-cron-handler.ts +++ b/src/addon/mod/data/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModDataSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return this.dataSync.syncInterval; } } diff --git a/src/addon/mod/feedback/providers/sync-cron-handler.ts b/src/addon/mod/feedback/providers/sync-cron-handler.ts index e1c93fc95..6ace28013 100644 --- a/src/addon/mod/feedback/providers/sync-cron-handler.ts +++ b/src/addon/mod/feedback/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModFeedbackSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return this.feedbackSync.syncInterval; } } diff --git a/src/addon/mod/forum/providers/sync-cron-handler.ts b/src/addon/mod/forum/providers/sync-cron-handler.ts index 3ce2fcbc5..860368b25 100644 --- a/src/addon/mod/forum/providers/sync-cron-handler.ts +++ b/src/addon/mod/forum/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModForumSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return AddonModForumSyncProvider.SYNC_TIME; + return this.forumSync.syncInterval; } } diff --git a/src/addon/mod/forum/providers/sync.ts b/src/addon/mod/forum/providers/sync.ts index 0a201a5f1..64b95f369 100644 --- a/src/addon/mod/forum/providers/sync.ts +++ b/src/addon/mod/forum/providers/sync.ts @@ -36,7 +36,6 @@ export class AddonModForumSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_forum_autom_synced'; static MANUAL_SYNCED = 'addon_mod_forum_manual_synced'; - static SYNC_TIME = 600000; protected componentTranslate: string; diff --git a/src/addon/mod/glossary/providers/sync-cron-handler.ts b/src/addon/mod/glossary/providers/sync-cron-handler.ts index fdc3d5921..77ea930d8 100644 --- a/src/addon/mod/glossary/providers/sync-cron-handler.ts +++ b/src/addon/mod/glossary/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModGlossarySyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return AddonModGlossarySyncProvider.SYNC_TIME; + return this.glossarySync.syncInterval; } } diff --git a/src/addon/mod/glossary/providers/sync.ts b/src/addon/mod/glossary/providers/sync.ts index aa82f859a..c78e8920e 100644 --- a/src/addon/mod/glossary/providers/sync.ts +++ b/src/addon/mod/glossary/providers/sync.ts @@ -35,7 +35,6 @@ import { AddonModGlossaryOfflineProvider } from './offline'; export class AddonModGlossarySyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_glossary_autom_synced'; - static SYNC_TIME = 600000; // 10 minutes. protected componentTranslate: string; diff --git a/src/addon/mod/lesson/providers/lesson-sync.ts b/src/addon/mod/lesson/providers/lesson-sync.ts index 87ddd520b..acefccfe8 100644 --- a/src/addon/mod/lesson/providers/lesson-sync.ts +++ b/src/addon/mod/lesson/providers/lesson-sync.ts @@ -53,7 +53,6 @@ export interface AddonModLessonSyncResult { export class AddonModLessonSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_lesson_autom_synced'; - static SYNC_TIME = 300000; protected componentTranslate: string; diff --git a/src/addon/mod/lesson/providers/sync-cron-handler.ts b/src/addon/mod/lesson/providers/sync-cron-handler.ts index a88968db2..0ede470f1 100644 --- a/src/addon/mod/lesson/providers/sync-cron-handler.ts +++ b/src/addon/mod/lesson/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModLessonSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; + return this.lessonSync.syncInterval; } } diff --git a/src/addon/mod/quiz/accessrules/offlineattempts/providers/handler.ts b/src/addon/mod/quiz/accessrules/offlineattempts/providers/handler.ts index 3d5b38a24..5b7988b06 100644 --- a/src/addon/mod/quiz/accessrules/offlineattempts/providers/handler.ts +++ b/src/addon/mod/quiz/accessrules/offlineattempts/providers/handler.ts @@ -26,7 +26,7 @@ export class AddonModQuizAccessOfflineAttemptsHandler implements AddonModQuizAcc name = 'AddonModQuizAccessOfflineAttempts'; ruleName = 'quizaccess_offlineattempts'; - constructor() { + constructor(protected quizSync: AddonModQuizSyncProvider) { // Nothing to do. } @@ -86,6 +86,6 @@ export class AddonModQuizAccessOfflineAttemptsHandler implements AddonModQuizAcc } // Show warning if last sync was a while ago. - return Date.now() - AddonModQuizSyncProvider.SYNC_TIME > quiz.syncTime; + return Date.now() - this.quizSync.syncInterval > quiz.syncTime; } } diff --git a/src/addon/mod/quiz/providers/quiz-sync.ts b/src/addon/mod/quiz/providers/quiz-sync.ts index 901850d1c..67aca51a6 100644 --- a/src/addon/mod/quiz/providers/quiz-sync.ts +++ b/src/addon/mod/quiz/providers/quiz-sync.ts @@ -52,7 +52,6 @@ export interface AddonModQuizSyncResult { export class AddonModQuizSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_quiz_autom_synced'; - static SYNC_TIME = 300000; protected componentTranslate: string; diff --git a/src/addon/mod/quiz/providers/sync-cron-handler.ts b/src/addon/mod/quiz/providers/sync-cron-handler.ts index d25c2d30b..2866f3a08 100644 --- a/src/addon/mod/quiz/providers/sync-cron-handler.ts +++ b/src/addon/mod/quiz/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModQuizSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return AddonModQuizSyncProvider.SYNC_TIME; + return this.quizSync.syncInterval; } } diff --git a/src/addon/mod/scorm/providers/scorm-sync.ts b/src/addon/mod/scorm/providers/scorm-sync.ts index 832508473..ae6281365 100644 --- a/src/addon/mod/scorm/providers/scorm-sync.ts +++ b/src/addon/mod/scorm/providers/scorm-sync.ts @@ -57,7 +57,6 @@ export interface AddonModScormSyncResult { export class AddonModScormSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_scorm_autom_synced'; - static SYNC_TIME = 600000; protected componentTranslate: string; diff --git a/src/addon/mod/scorm/providers/sync-cron-handler.ts b/src/addon/mod/scorm/providers/sync-cron-handler.ts index 0d3acecd5..797eeb4bb 100644 --- a/src/addon/mod/scorm/providers/sync-cron-handler.ts +++ b/src/addon/mod/scorm/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModScormSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return AddonModScormSyncProvider.SYNC_TIME; + return this.scormSync.syncInterval; } } diff --git a/src/addon/mod/survey/providers/sync-cron-handler.ts b/src/addon/mod/survey/providers/sync-cron-handler.ts index d26a67561..1949d9e14 100644 --- a/src/addon/mod/survey/providers/sync-cron-handler.ts +++ b/src/addon/mod/survey/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModSurveySyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return this.surveySync.syncInterval; } } diff --git a/src/addon/mod/wiki/providers/sync-cron-handler.ts b/src/addon/mod/wiki/providers/sync-cron-handler.ts index ed5fa443f..ce1fa6980 100644 --- a/src/addon/mod/wiki/providers/sync-cron-handler.ts +++ b/src/addon/mod/wiki/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModWikiSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return this.wikiSync.syncInterval; } } diff --git a/src/addon/mod/wiki/providers/wiki-sync.ts b/src/addon/mod/wiki/providers/wiki-sync.ts index 186c75ac5..e402174ae 100644 --- a/src/addon/mod/wiki/providers/wiki-sync.ts +++ b/src/addon/mod/wiki/providers/wiki-sync.ts @@ -96,7 +96,6 @@ export class AddonModWikiSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_wiki_autom_synced'; static MANUAL_SYNCED = 'addon_mod_wiki_manual_synced'; - static SYNC_TIME = 300000; protected componentTranslate: string; diff --git a/src/addon/mod/workshop/providers/sync-cron-handler.ts b/src/addon/mod/workshop/providers/sync-cron-handler.ts index 86bf07017..05f6a011f 100644 --- a/src/addon/mod/workshop/providers/sync-cron-handler.ts +++ b/src/addon/mod/workshop/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonModWorkshopSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return AddonModWorkshopSyncProvider.SYNC_TIME; + return this.workshopSync.syncInterval; } } diff --git a/src/addon/mod/workshop/providers/sync.ts b/src/addon/mod/workshop/providers/sync.ts index 8c1e6fb15..2b3990e70 100644 --- a/src/addon/mod/workshop/providers/sync.ts +++ b/src/addon/mod/workshop/providers/sync.ts @@ -35,7 +35,6 @@ export class AddonModWorkshopSyncProvider extends CoreSyncBaseProvider { static AUTO_SYNCED = 'addon_mod_workshop_autom_synced'; static MANUAL_SYNCED = 'addon_mod_workshop_manual_synced'; - static SYNC_TIME = 300000; protected componentTranslate: string; diff --git a/src/addon/notes/providers/sync-cron-handler.ts b/src/addon/notes/providers/sync-cron-handler.ts index b0e1e5da1..25d5d2c24 100644 --- a/src/addon/notes/providers/sync-cron-handler.ts +++ b/src/addon/notes/providers/sync-cron-handler.ts @@ -42,6 +42,6 @@ export class AddonNotesSyncCronHandler implements CoreCronHandler { * @return {number} Time between consecutive executions (in ms). */ getInterval(): number { - return 600000; // 10 minutes. + return 300000; // 5 minutes. } }