MOBILE-4653 sync: Decouple Sync services from related main service

main
Pau Ferrer Ocaña 2024-11-15 12:16:17 +01:00
parent 40b200d6da
commit 1eb548e47b
38 changed files with 224 additions and 100 deletions

View File

@ -39,7 +39,7 @@ import { CoreNetworkError } from '@classes/errors/network-error';
import { CoreGradesFormattedItem, CoreGradesHelper } from '@features/grades/services/grades-helper';
import { AddonModAssignSubmissionDelegate } from './submission-delegate';
import { AddonModAssignFeedbackDelegate } from './feedback-delegate';
import { ADDON_MOD_ASSIGN_AUTO_SYNCED, ADDON_MOD_ASSIGN_COMPONENT } from '../constants';
import { ADDON_MOD_ASSIGN_AUTO_SYNCED, ADDON_MOD_ASSIGN_COMPONENT, ADDON_MOD_ASSIGN_MANUAL_SYNCED } from '../constants';
/**
* Service to sync assigns.
@ -535,7 +535,7 @@ export type AddonModAssignSyncResult = CoreSyncResult & {
};
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_ASSIGN_AUTO_SYNCED event.
*/
export type AddonModAssignAutoSyncData = {
assignId: number;
@ -544,9 +544,23 @@ export type AddonModAssignAutoSyncData = {
};
/**
* Data passed to MANUAL_SYNCED event.
* Data passed to ADDON_MOD_ASSIGN_MANUAL_SYNCED event.
*/
export type AddonModAssignManualSyncData = AddonModAssignAutoSyncData & {
context: string;
submitId?: number;
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_ASSIGN_MANUAL_SYNCED]: AddonModAssignManualSyncData;
[ADDON_MOD_ASSIGN_AUTO_SYNCED]: AddonModAssignAutoSyncData;
}
}

View File

@ -30,17 +30,14 @@ import { AddonModAssignSubmissionDelegate } from './submission-delegate';
import { CoreComments } from '@features/comments/services/comments';
import { AddonModAssignSubmissionFormatted } from './assign-helper';
import { CoreWSError } from '@classes/errors/wserror';
import { AddonModAssignAutoSyncData, AddonModAssignManualSyncData } from './assign-sync';
import { CoreFormFields } from '@singletons/form';
import { CoreFileHelper } from '@services/file-helper';
import { CoreIonicColorNames } from '@singletons/colors';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import { ContextLevel, CoreCacheUpdateFrequency } from '@/core/constants';
import {
ADDON_MOD_ASSIGN_AUTO_SYNCED,
ADDON_MOD_ASSIGN_COMPONENT,
ADDON_MOD_ASSIGN_GRADED_EVENT,
ADDON_MOD_ASSIGN_MANUAL_SYNCED,
ADDON_MOD_ASSIGN_STARTED_EVENT,
ADDON_MOD_ASSIGN_SUBMISSION_REMOVED_EVENT,
ADDON_MOD_ASSIGN_SUBMISSION_SAVED_EVENT,
@ -60,8 +57,6 @@ declare module '@singletons/events' {
[ADDON_MOD_ASSIGN_SUBMITTED_FOR_GRADING_EVENT]: AddonModAssignSubmittedForGradingEventData;
[ADDON_MOD_ASSIGN_GRADED_EVENT]: AddonModAssignGradedEventData;
[ADDON_MOD_ASSIGN_STARTED_EVENT]: AddonModAssignStartedEventData;
[ADDON_MOD_ASSIGN_MANUAL_SYNCED]: AddonModAssignManualSyncData;
[ADDON_MOD_ASSIGN_AUTO_SYNCED]: AddonModAssignAutoSyncData;
}
}

View File

@ -28,6 +28,19 @@ import { AddonModChoiceOffline } from './choice-offline';
import { AddonModChoicePrefetchHandler } from './handlers/prefetch';
import { ADDON_MOD_CHOICE_AUTO_SYNCED, ADDON_MOD_CHOICE_COMPONENT } from '../constants';
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_CHOICE_AUTO_SYNCED]: AddonModChoiceAutoSyncData;
}
}
/**
* Service to sync choices.
*/
@ -220,7 +233,7 @@ export const AddonModChoiceSync = makeSingleton(AddonModChoiceSyncProvider);
export type AddonModChoiceSyncResult = CoreSyncResult;
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_CHOICE_AUTO_SYNCED event.
*/
export type AddonModChoiceAutoSyncData = {
choiceId: number;

View File

@ -24,9 +24,8 @@ import { CoreUtils } from '@services/utils/utils';
import { CoreStatusWithWarningsWSResponse, CoreWSExternalFile, CoreWSExternalWarning } from '@services/ws';
import { makeSingleton, Translate } from '@singletons';
import { AddonModChoiceOffline } from './choice-offline';
import { AddonModChoiceAutoSyncData } from './choice-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import { ADDON_MOD_CHOICE_AUTO_SYNCED, ADDON_MOD_CHOICE_COMPONENT, AddonModChoiceShowResults } from '../constants';
import { ADDON_MOD_CHOICE_COMPONENT, AddonModChoiceShowResults } from '../constants';
import { CoreCacheUpdateFrequency } from '@/core/constants';
/**
@ -602,16 +601,3 @@ export type AddonModChoiceSubmitChoiceResponseWSParams = {
choiceid: number; // Choice instance id.
responses: number[]; // Array of response ids.
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_CHOICE_AUTO_SYNCED]: AddonModChoiceAutoSyncData;
}
}

View File

@ -486,3 +486,15 @@ export type AddonModDataAutoSyncData = {
offlineEntryId?: number;
deleted?: boolean;
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_DATA_AUTO_SYNCED]: AddonModDataAutoSyncData;
}
}

View File

@ -27,10 +27,8 @@ import { CoreWSExternalFile, CoreWSExternalWarning } from '@services/ws';
import { makeSingleton, Translate } from '@singletons';
import { AddonModDataFieldsDelegate } from './data-fields-delegate';
import { AddonModDataOffline } from './data-offline';
import { AddonModDataAutoSyncData } from './data-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
ADDON_MOD_DATA_AUTO_SYNCED,
ADDON_MOD_DATA_COMPONENT,
ADDON_MOD_DATA_ENTRIES_PER_PAGE,
ADDON_MOD_DATA_ENTRY_CHANGED,
@ -46,7 +44,6 @@ declare module '@singletons/events' {
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_DATA_AUTO_SYNCED]: AddonModDataAutoSyncData;
[ADDON_MOD_DATA_ENTRY_CHANGED]: AddonModDataEntryChangedEventData;
}
}

View File

@ -35,11 +35,11 @@ import { AddonModFeedbackOffline } from '../../services/feedback-offline';
import {
AddonModFeedbackAutoSyncData,
AddonModFeedbackSync,
AddonModFeedbackSyncProvider,
AddonModFeedbackSyncResult,
} from '../../services/feedback-sync';
import { AddonModFeedbackPrefetchHandler } from '../../services/handlers/prefetch';
import {
ADDON_MOD_FEEDBACK_AUTO_SYNCED,
ADDON_MOD_FEEDBACK_COMPONENT,
ADDON_MOD_FEEDBACK_FORM_SUBMITTED,
ADDON_MOD_FEEDBACK_PAGE_NAME,
@ -87,7 +87,7 @@ export class AddonModFeedbackIndexComponent extends CoreCourseModuleMainActivity
};
protected submitObserver: CoreEventObserver;
protected syncEventName = AddonModFeedbackSyncProvider.AUTO_SYNCED;
protected syncEventName = ADDON_MOD_FEEDBACK_AUTO_SYNCED;
protected checkCompletionAfterLog = false;
constructor(

View File

@ -23,6 +23,8 @@ export const ADDON_MOD_FEEDBACK_MULTICHOICE_ADJUST_SEP = '<<<<<';
export const ADDON_MOD_FEEDBACK_MULTICHOICE_HIDENOSELECT = 'h';
export const ADDON_MOD_FEEDBACK_MULTICHOICERATED_VALUE_SEP = '####';
export const ADDON_MOD_FEEDBACK_AUTO_SYNCED = 'addon_mod_feedback_autom_synced';
export const ADDON_MOD_FEEDBACK_PER_PAGE = 20;
/**

View File

@ -27,7 +27,7 @@ import { CoreEvents } from '@singletons/events';
import { AddonModFeedback, AddonModFeedbackWSFeedback } from './feedback';
import { AddonModFeedbackOffline, AddonModFeedbackOfflineResponse } from './feedback-offline';
import { AddonModFeedbackPrefetchHandler, AddonModFeedbackPrefetchHandlerService } from './handlers/prefetch';
import { ADDON_MOD_FEEDBACK_COMPONENT } from '../constants';
import { ADDON_MOD_FEEDBACK_AUTO_SYNCED, ADDON_MOD_FEEDBACK_COMPONENT } from '../constants';
/**
* Service to sync feedbacks.
@ -35,8 +35,6 @@ import { ADDON_MOD_FEEDBACK_COMPONENT } from '../constants';
@Injectable({ providedIn: 'root' })
export class AddonModFeedbackSyncProvider extends CoreCourseActivitySyncBaseProvider<AddonModFeedbackSyncResult> {
static readonly AUTO_SYNCED = 'addon_mod_feedback_autom_synced';
protected componentTranslatableString = 'feedback';
constructor() {
@ -96,7 +94,7 @@ export class AddonModFeedbackSyncProvider extends CoreCourseActivitySyncBaseProv
if (result?.updated) {
// Sync successful, send event.
CoreEvents.trigger(AddonModFeedbackSyncProvider.AUTO_SYNCED, {
CoreEvents.trigger(ADDON_MOD_FEEDBACK_AUTO_SYNCED, {
feedbackId: response.feedbackid,
warnings: result.warnings,
}, siteId);
@ -296,9 +294,22 @@ export const AddonModFeedbackSync = makeSingleton(AddonModFeedbackSyncProvider);
export type AddonModFeedbackSyncResult = CoreSyncResult;
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_FEEDBACK_AUTO_SYNCED event.
*/
export type AddonModFeedbackAutoSyncData = {
feedbackId: number;
warnings: string[];
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_FEEDBACK_AUTO_SYNCED]: AddonModFeedbackAutoSyncData;
}
}

View File

@ -23,7 +23,6 @@ import { CoreUtils } from '@services/utils/utils';
import { CoreWSExternalFile, CoreWSExternalWarning, CoreWSStoredFile } from '@services/ws';
import { makeSingleton, Translate } from '@singletons';
import { AddonModFeedbackOffline } from './feedback-offline';
import { AddonModFeedbackAutoSyncData, AddonModFeedbackSyncProvider } from './feedback-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
ADDON_MOD_FEEDBACK_COMPONENT,
@ -1254,7 +1253,6 @@ declare module '@singletons/events' {
*/
export interface CoreEventsData {
[ADDON_MOD_FEEDBACK_FORM_SUBMITTED]: AddonModFeedbackFormSubmittedData;
[AddonModFeedbackSyncProvider.AUTO_SYNCED]: AddonModFeedbackAutoSyncData;
}
}

View File

@ -648,7 +648,7 @@ export const AddonModForumSync = makeSingleton(AddonModForumSyncProvider);
export type AddonModForumSyncResult = CoreSyncResult;
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_FORUM_AUTO_SYNCED event.
*/
export type AddonModForumAutoSyncData = {
forumId: number;
@ -658,7 +658,7 @@ export type AddonModForumAutoSyncData = {
};
/**
* Data passed to MANUAL_SYNCED event.
* Data passed to ADDON_MOD_FORUM_MANUAL_SYNCED event.
*/
export type AddonModForumManualSyncData = {
forumId: number;

View File

@ -47,7 +47,6 @@ import { AddonModGlossaryOfflineEntry } from '../../services/glossary-offline';
import {
AddonModGlossaryAutoSyncedData,
AddonModGlossarySyncResult,
GLOSSARY_AUTO_SYNCED,
} from '../../services/glossary-sync';
import { AddonModGlossaryPrefetchHandler } from '../../services/handlers/prefetch';
import { CoreTime } from '@singletons/time';
@ -57,6 +56,7 @@ import {
ADDON_MOD_GLOSSARY_ENTRY_DELETED,
ADDON_MOD_GLOSSARY_ENTRY_UPDATED,
ADDON_MOD_GLOSSARY_PAGE_NAME,
GLOSSARY_AUTO_SYNCED,
} from '../../constants';
import { CorePopovers } from '@services/popovers';

View File

@ -19,5 +19,7 @@ export const ADDON_MOD_GLOSSARY_ENTRY_ADDED = 'addon_mod_glossary_entry_added';
export const ADDON_MOD_GLOSSARY_ENTRY_UPDATED = 'addon_mod_glossary_entry_updated';
export const ADDON_MOD_GLOSSARY_ENTRY_DELETED = 'addon_mod_glossary_entry_deleted';
export const GLOSSARY_AUTO_SYNCED = 'addon_mod_glossary_auto_synced';
export const ADDON_MOD_GLOSSARY_LIMIT_ENTRIES = 25;
export const ADDON_MOD_GLOSSARY_LIMIT_CATEGORIES = 10;

View File

@ -30,9 +30,7 @@ import { AddonModGlossaryHelper } from './glossary-helper';
import { AddonModGlossaryOffline, AddonModGlossaryOfflineEntry } from './glossary-offline';
import { CoreFileUploader } from '@features/fileuploader/services/fileuploader';
import { CoreFileEntry } from '@services/file-helper';
import { ADDON_MOD_GLOSSARY_COMPONENT } from '../constants';
export const GLOSSARY_AUTO_SYNCED = 'addon_mod_glossary_auto_synced';
import { ADDON_MOD_GLOSSARY_COMPONENT, GLOSSARY_AUTO_SYNCED } from '../constants';
/**
* Service to sync glossaries.

View File

@ -401,3 +401,16 @@ export type AddonModH5PActivityAutoSyncData = {
contextId: number;
warnings: string[];
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_H5PACTIVITY_AUTO_SYNCED]: AddonModH5PActivityAutoSyncData;
}
}

View File

@ -25,11 +25,9 @@ import { CoreCourseCommonModWSOptions } from '@features/course/services/course';
import { makeSingleton, Translate } from '@singletons/index';
import { CoreWSError } from '@classes/errors/wserror';
import { CoreError } from '@classes/errors/error';
import { AddonModH5PActivityAutoSyncData } from './h5pactivity-sync';
import { CoreTime } from '@singletons/time';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
ADDON_MOD_H5PACTIVITY_AUTO_SYNCED,
ADDON_MOD_H5PACTIVITY_COMPONENT,
ADDON_MOD_H5PACTIVITY_USERS_PER_PAGE,
AddonModH5PActivityGradeMethod,
@ -1137,19 +1135,6 @@ export type AddonModH5PActivityGetAllUsersAttemptsOptions = AddonModH5PActivityG
dontFailOnError?: boolean; // If true the function will return the users it's able to retrieve, until a call fails.
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_H5PACTIVITY_AUTO_SYNCED]: AddonModH5PActivityAutoSyncData;
}
}
/**
* Data to be sent using xAPI.
*/

View File

@ -499,9 +499,22 @@ export type AddonModLessonSyncResult = CoreSyncResult & {
};
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_LESSON_AUTO_SYNCED event.
*/
export type AddonModLessonAutoSyncData = {
lessonId: number;
warnings: string[];
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_LESSON_AUTO_SYNCED]: AddonModLessonAutoSyncData;
}
}

View File

@ -25,10 +25,8 @@ import { makeSingleton, Translate } from '@singletons';
import { CoreEvents } from '@singletons/events';
import { AddonModLessonPasswordDBRecord, PASSWORD_TABLE_NAME } from './database/lesson';
import { AddonModLessonOffline, AddonModLessonPageAttemptRecord } from './lesson-offline';
import { AddonModLessonAutoSyncData } from './lesson-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
ADDON_MOD_LESSON_AUTO_SYNCED,
ADDON_MOD_LESSON_COMPONENT,
ADDON_MOD_LESSON_DATA_SENT_EVENT,
ADDON_MOD_LESSON_OTHER_ANSWERS,
@ -48,7 +46,6 @@ declare module '@singletons/events' {
*/
export interface CoreEventsData {
[ADDON_MOD_LESSON_DATA_SENT_EVENT]: AddonModLessonDataSentData;
[ADDON_MOD_LESSON_AUTO_SYNCED]: AddonModLessonAutoSyncData;
}
}

View File

@ -496,10 +496,23 @@ type FinishSyncOptions = {
};
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_QUIZ_AUTO_SYNCED event.
*/
export type AddonModQuizAutoSyncData = {
quizId: number;
attemptFinished: boolean;
warnings: string[];
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_QUIZ_AUTO_SYNCED]: AddonModQuizAutoSyncData;
}
}

View File

@ -36,7 +36,6 @@ import { makeSingleton, Translate } from '@singletons';
import { CoreLogger } from '@singletons/logger';
import { AddonModQuizAccessRuleDelegate } from './access-rules-delegate';
import { AddonModQuizOffline, AddonModQuizQuestionsWithAnswers } from './quiz-offline';
import { AddonModQuizAutoSyncData } from './quiz-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
QUESTION_INVALID_STATE_CLASSES,
@ -51,7 +50,6 @@ import {
AddonModQuizGradeMethods,
AddonModQuizDisplayOptionsAttemptStates,
ADDON_MOD_QUIZ_IMMEDIATELY_AFTER_PERIOD,
ADDON_MOD_QUIZ_AUTO_SYNCED,
} from '../constants';
import { CoreIonicColorNames } from '@singletons/colors';
import { CoreCacheUpdateFrequency } from '@/core/constants';
@ -65,7 +63,6 @@ declare module '@singletons/events' {
*/
export interface CoreEventsData {
[ADDON_MOD_QUIZ_ATTEMPT_FINISHED_EVENT]: AddonModQuizAttemptFinishedData;
[ADDON_MOD_QUIZ_AUTO_SYNCED]: AddonModQuizAutoSyncData;
}
}

View File

@ -850,3 +850,16 @@ export type AddonModScormAutoSyncEventData = CoreSyncResult & {
scormId: number;
attemptFinished: boolean;
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_SCORM_DATA_AUTO_SYNCED]: AddonModScormAutoSyncEventData;
}
}

View File

@ -29,7 +29,6 @@ import { makeSingleton, Translate } from '@singletons';
import { CoreEvents } from '@singletons/events';
import { CorePath } from '@singletons/path';
import { AddonModScormOffline } from './scorm-offline';
import { AddonModScormAutoSyncEventData } from './scorm-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
ADDON_MOD_SCORM_COMPONENT,
@ -42,7 +41,6 @@ import {
ADDON_MOD_SCORM_LAUNCH_NEXT_SCO_EVENT,
ADDON_MOD_SCORM_LAUNCH_PREV_SCO_EVENT,
ADDON_MOD_SCORM_UPDATE_TOC_EVENT,
ADDON_MOD_SCORM_DATA_AUTO_SYNCED,
} from '../constants';
// Private constants.
@ -2080,7 +2078,6 @@ declare module '@singletons/events' {
[ADDON_MOD_SCORM_UPDATE_TOC_EVENT]: AddonModScormCommonEventData;
[ADDON_MOD_SCORM_GO_OFFLINE_EVENT]: AddonModScormCommonEventData;
[ADDON_MOD_SCORM_DATA_SENT_EVENT]: AddonModScormCommonEventData;
[ADDON_MOD_SCORM_DATA_AUTO_SYNCED]: AddonModScormAutoSyncEventData;
}
}

View File

@ -241,7 +241,7 @@ export type AddonModSurveySyncResult = CoreSyncResult & {
};
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_SURVEY_AUTO_SYNCED event.
*/
export type AddonModSurveyAutoSyncData = {
surveyId: number;

View File

@ -26,7 +26,7 @@ import { CoreEvents } from '@singletons/events';
import { AddonModWikiPageDBRecord } from './database/wiki';
import { AddonModWiki } from './wiki';
import { AddonModWikiOffline } from './wiki-offline';
import { ADDON_MOD_WIKI_AUTO_SYNCED, ADDON_MOD_WIKI_COMPONENT } from '../constants';
import { ADDON_MOD_WIKI_AUTO_SYNCED, ADDON_MOD_WIKI_COMPONENT, ADDON_MOD_WIKI_MANUAL_SYNCED } from '../constants';
/**
* Service to sync wikis.
@ -386,7 +386,7 @@ export type AddonModWikiDiscardedPage = {
};
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_MOD_WIKI_AUTO_SYNCED event.
*/
export type AddonModWikiAutoSyncData = {
siteId: string;
@ -400,8 +400,22 @@ export type AddonModWikiAutoSyncData = {
};
/**
* Data passed to MANUAL_SYNCED event.
* Data passed to ADDON_MOD_WIKI_MANUAL_SYNCED event.
*/
export type AddonModWikiManualSyncData = AddonModWikiSyncWikiResult & {
wikiId: number;
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_WIKI_AUTO_SYNCED]: AddonModWikiAutoSyncData;
[ADDON_MOD_WIKI_MANUAL_SYNCED]: AddonModWikiManualSyncData;
}
}

View File

@ -26,12 +26,9 @@ import { makeSingleton, Translate } from '@singletons';
import { CoreEvents } from '@singletons/events';
import { AddonModWikiPageDBRecord } from './database/wiki';
import { AddonModWikiOffline } from './wiki-offline';
import { AddonModWikiAutoSyncData, AddonModWikiManualSyncData } from './wiki-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import {
ADDON_MOD_WIKI_AUTO_SYNCED,
ADDON_MOD_WIKI_COMPONENT,
ADDON_MOD_WIKI_MANUAL_SYNCED,
ADDON_MOD_WIKI_PAGE_CREATED_EVENT,
} from '../constants';
import { CoreCacheUpdateFrequency } from '@/core/constants';
@ -898,8 +895,6 @@ declare module '@singletons/events' {
*/
export interface CoreEventsData {
[ADDON_MOD_WIKI_PAGE_CREATED_EVENT]: AddonModWikiPageCreatedData;
[ADDON_MOD_WIKI_AUTO_SYNCED]: AddonModWikiAutoSyncData;
[ADDON_MOD_WIKI_MANUAL_SYNCED]: AddonModWikiManualSyncData;
}
}

View File

@ -640,3 +640,15 @@ export type AddonModWorkshopAutoSyncData = {
};
export type AddonModWorkshopSyncResult = CoreSyncResult;
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_WORKSHOP_AUTO_SYNCED]: AddonModWorkshopAutoSyncData;
}
}

View File

@ -25,11 +25,9 @@ import { CoreStatusWithWarningsWSResponse, CoreWS, CoreWSExternalFile, CoreWSExt
import { makeSingleton, Translate } from '@singletons';
import { CoreFormFields } from '@singletons/form';
import { AddonModWorkshopOffline } from './workshop-offline';
import { AddonModWorkshopAutoSyncData } from './workshop-sync';
import {
ADDON_MOD_WORKSHOP_ASSESSMENT_INVALIDATED,
ADDON_MOD_WORKSHOP_ASSESSMENT_SAVED,
ADDON_MOD_WORKSHOP_AUTO_SYNCED,
ADDON_MOD_WORKSHOP_COMPONENT,
ADDON_MOD_WORKSHOP_PER_PAGE,
ADDON_MOD_WORKSHOP_SUBMISSION_CHANGED,
@ -51,7 +49,6 @@ declare module '@singletons/events' {
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MOD_WORKSHOP_AUTO_SYNCED]: AddonModWorkshopAutoSyncData;
[ADDON_MOD_WORKSHOP_SUBMISSION_CHANGED]: AddonModWorkshopSubmissionChangedEventData;
[ADDON_MOD_WORKSHOP_ASSESSMENT_SAVED]: AddonModWorkshopAssessmentSavedChangedEventData;
[ADDON_MOD_WORKSHOP_ASSESSMENT_INVALIDATED]: AddonModWorkshopAssessmentInvalidatedChangedEventData;

View File

@ -16,7 +16,7 @@ import { CoreConstants } from '@/core/constants';
import { AddonNotesAddModalReturn } from '@addons/notes/components/add/add-modal';
import { AddonNotes, AddonNotesNoteFormatted, AddonNotesPublishState } from '@addons/notes/services/notes';
import { AddonNotesOffline } from '@addons/notes/services/notes-offline';
import { AddonNotesSync, AddonNotesSyncProvider } from '@addons/notes/services/notes-sync';
import { AddonNotesSync } from '@addons/notes/services/notes-sync';
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { CoreAnimations } from '@components/animations';
import { CoreUser, CoreUserProfile } from '@features/user/services/user';
@ -33,6 +33,7 @@ import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreTime } from '@singletons/time';
import { CoreToasts, ToastDuration } from '@services/toasts';
import { CoreModals } from '@services/modals';
import { ADDON_NOTES_AUTO_SYNCED } from '@addons/notes/services/constants';
/**
* Page that displays a list of notes.
@ -77,7 +78,7 @@ export class AddonNotesListPage implements OnInit, OnDestroy {
}
// Refresh data if notes are synchronized automatically.
this.syncObserver = CoreEvents.on(AddonNotesSyncProvider.AUTO_SYNCED, (data) => {
this.syncObserver = CoreEvents.on(ADDON_NOTES_AUTO_SYNCED, (data) => {
if (data.courseId == this.courseId) {
// Show the sync warnings.
this.showSyncWarnings(data.warnings);

View File

@ -0,0 +1,15 @@
// (C) Copyright 2015 Moodle Pty Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
export const ADDON_NOTES_AUTO_SYNCED = 'addon_notes_autom_synced';

View File

@ -27,6 +27,7 @@ import { AddonNotesOffline } from './notes-offline';
import { CoreArray } from '@singletons/array';
import { CoreAnyError } from '@classes/errors/error';
import { CoreErrorHelper } from '@services/error-helper';
import { ADDON_NOTES_AUTO_SYNCED } from './constants';
/**
* Service to sync notes.
@ -34,8 +35,6 @@ import { CoreErrorHelper } from '@services/error-helper';
@Injectable( { providedIn: 'root' } )
export class AddonNotesSyncProvider extends CoreSyncBaseProvider<AddonNotesSyncResult> {
static readonly AUTO_SYNCED = 'addon_notes_autom_synced';
constructor() {
super('AddonNotesSync');
}
@ -80,7 +79,7 @@ export class AddonNotesSyncProvider extends CoreSyncBaseProvider<AddonNotesSyncR
if (result !== undefined) {
// Sync successful, send event.
CoreEvents.trigger(AddonNotesSyncProvider.AUTO_SYNCED, {
CoreEvents.trigger(ADDON_NOTES_AUTO_SYNCED, {
courseId,
warnings: result.warnings,
}, siteId);
@ -251,7 +250,7 @@ export type AddonNotesSyncResult = {
};
/**
* Data passed to AUTO_SYNCED event.
* Data passed to ADDON_NOTES_AUTO_SYNCED event.
*/
export type AddonNotesSyncAutoSyncData = {
courseId: number;
@ -266,7 +265,7 @@ declare module '@singletons/events' {
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[AddonNotesSyncProvider.AUTO_SYNCED]: AddonNotesSyncAutoSyncData;
[ADDON_NOTES_AUTO_SYNCED]: AddonNotesSyncAutoSyncData;
}
}

View File

@ -0,0 +1,15 @@
// (C) Copyright 2015 Moodle Pty Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
export const CORE_COMMENTS_AUTO_SYNCED = 'core_comments_autom_synced';

View File

@ -24,7 +24,6 @@ import {
} from '@features/comments/services/comments';
import {
CoreCommentsSync,
CoreCommentsSyncProvider,
} from '@features/comments/services/comments-sync';
import { IonContent } from '@ionic/angular';
import { ContextLevel, CoreConstants } from '@/core/constants';
@ -45,6 +44,7 @@ import { CoreAnimations } from '@components/animations';
import { CoreKeyboard } from '@singletons/keyboard';
import { CoreToasts, ToastDuration } from '@services/toasts';
import { CoreLoadings } from '@services/loadings';
import { CORE_COMMENTS_AUTO_SYNCED } from '@features/comments/constants';
/**
* Page that displays comments.
@ -94,7 +94,7 @@ export class CoreCommentsViewerPage implements OnInit, OnDestroy {
this.currentUserId = CoreSites.getCurrentSiteUserId();
// Refresh data if comments are synchronized automatically.
this.syncObserver = CoreEvents.on(CoreCommentsSyncProvider.AUTO_SYNCED, (data) => {
this.syncObserver = CoreEvents.on(CORE_COMMENTS_AUTO_SYNCED, (data) => {
if (data.contextLevel == this.contextLevel && data.instanceId == this.instanceId &&
data.componentName == this.componentName && data.itemId == this.itemId && data.area == this.area) {
// Show the sync warnings.

View File

@ -25,6 +25,7 @@ import { CoreNetworkError } from '@classes/errors/network-error';
import { CoreCommentsDBRecord, CoreCommentsDeletedDBRecord } from './database/comments';
import { CoreSyncResult } from '@services/sync';
import { ContextLevel } from '@/core/constants';
import { CORE_COMMENTS_AUTO_SYNCED } from '../constants';
/**
* Service to sync omments.
@ -32,8 +33,6 @@ import { ContextLevel } from '@/core/constants';
@Injectable( { providedIn: 'root' })
export class CoreCommentsSyncProvider extends CoreSyncBaseProvider<CoreCommentsSyncResult> {
static readonly AUTO_SYNCED = 'core_comments_autom_synced';
constructor() {
super('CoreCommentsSync');
}
@ -96,7 +95,7 @@ export class CoreCommentsSyncProvider extends CoreSyncBaseProvider<CoreCommentsS
if (result !== undefined) {
// Sync successful, send event.
CoreEvents.trigger(CoreCommentsSyncProvider.AUTO_SYNCED, {
CoreEvents.trigger(CORE_COMMENTS_AUTO_SYNCED, {
contextLevel: comment.contextlevel,
instanceId: comment.instanceid,
componentName: comment.component,
@ -329,7 +328,7 @@ export const CoreCommentsSync = makeSingleton(CoreCommentsSyncProvider);
export type CoreCommentsSyncResult = CoreSyncResult;
/**
* Data passed to AUTO_SYNCED event.
* Data passed to CORE_COMMENTS_AUTO_SYNCED event.
*/
export type CoreCommentsSyncAutoSyncData = {
contextLevel: ContextLevel;
@ -339,3 +338,16 @@ export type CoreCommentsSyncAutoSyncData = {
area: string;
warnings: string[];
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[CORE_COMMENTS_AUTO_SYNCED]: CoreCommentsSyncAutoSyncData;
}
}

View File

@ -22,7 +22,6 @@ import { CoreWSExternalWarning } from '@services/ws';
import { makeSingleton } from '@singletons';
import { CoreEvents } from '@singletons/events';
import { CoreCommentsOffline } from './comments-offline';
import { CoreCommentsSyncAutoSyncData, CoreCommentsSyncProvider } from './comments-sync';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import { ContextLevel, CoreCacheUpdateFrequency } from '@/core/constants';
@ -38,7 +37,6 @@ declare module '@singletons/events' {
export interface CoreEventsData {
[CoreCommentsProvider.REFRESH_COMMENTS_EVENT]: CoreCommentsRefreshCommentsEventData;
[CoreCommentsProvider.COMMENTS_COUNT_CHANGED_EVENT]: CoreCommentsCountChangedEventData;
[CoreCommentsSyncProvider.AUTO_SYNCED]: CoreCommentsSyncAutoSyncData;
}
}

View File

@ -46,7 +46,6 @@ import { CoreCourseHelper, CoreCourseModuleData, CoreCourseModuleCompletionData
import { CoreCourseFormatDelegate } from './format-delegate';
import { CoreCronDelegate } from '@services/cron';
import { CoreCourseLogCronHandler } from './handlers/log-cron';
import { CoreCourseAutoSyncData } from './sync';
import { CoreTagItem } from '@features/tag/services/tag';
import { CoreNavigationOptions, CoreNavigator } from '@services/navigator';
import { CoreCourseModuleDelegate } from './module-delegate';
@ -74,7 +73,6 @@ import {
CORE_COURSE_CORE_MODULES,
CORE_COURSE_PROGRESS_UPDATED_EVENT,
CORE_COURSE_STEALTH_MODULES_SECTION_ID,
CORE_COURSE_AUTO_SYNCED,
} from '../constants';
export type CoreCourseProgressUpdated = { progress: number; courseId: number };
@ -87,7 +85,6 @@ declare module '@singletons/events' {
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[CORE_COURSE_AUTO_SYNCED]: CoreCourseAutoSyncData;
[CORE_COURSE_PROGRESS_UPDATED_EVENT]: CoreCourseProgressUpdated;
}

View File

@ -275,3 +275,16 @@ export type CoreCourseAutoSyncData = {
courseId: number;
warnings: CoreWSExternalWarning[];
};
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[CORE_COURSE_AUTO_SYNCED]: CoreCourseAutoSyncData;
}
}

View File

@ -13,3 +13,5 @@
// limitations under the License.
export const PARTICIPANTS_PAGE_NAME = 'participants';
export const CORE_USER_AUTO_SYNCED = 'core_user_autom_synced';

View File

@ -28,8 +28,6 @@ import { CoreUser } from './user';
@Injectable({ providedIn: 'root' })
export class CoreUserSyncProvider extends CoreSyncBaseProvider<string[]> {
static readonly AUTO_SYNCED = 'core_user_autom_synced';
constructor() {
super('CoreUserSync');
}