forked from EVOgeek/Vmeda.Online
106 lines
4.6 KiB
TypeScript
106 lines
4.6 KiB
TypeScript
// (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.
|
|
|
|
import { NgModule } from '@angular/core';
|
|
import { Platform } from 'ionic-angular';
|
|
import { CoreCronDelegate } from '@providers/cron';
|
|
import { CoreEventsProvider } from '@providers/events';
|
|
import { CoreCourseProvider } from './providers/course';
|
|
import { CoreCourseHelperProvider } from './providers/helper';
|
|
import { CoreCourseLogHelperProvider } from './providers/log-helper';
|
|
import { CoreCourseFormatDelegate } from './providers/format-delegate';
|
|
import { CoreCourseModuleDelegate } from './providers/module-delegate';
|
|
import { CoreCourseOfflineProvider } from './providers/course-offline';
|
|
import { CoreCourseModulePrefetchDelegate } from './providers/module-prefetch-delegate';
|
|
import { CoreCourseOptionsDelegate } from './providers/options-delegate';
|
|
import { CoreCourseFormatDefaultHandler } from './providers/default-format';
|
|
import { CoreCourseModuleDefaultHandler } from './providers/default-module';
|
|
import { CoreCourseFormatSingleActivityModule } from './formats/singleactivity/singleactivity.module';
|
|
import { CoreCourseFormatSocialModule } from './formats/social/social.module';
|
|
import { CoreCourseFormatTopicsModule } from './formats/topics/topics.module';
|
|
import { CoreCourseFormatWeeksModule } from './formats/weeks/weeks.module';
|
|
import { CoreCourseSyncProvider } from './providers/sync';
|
|
import { CoreCourseSyncCronHandler } from './providers/sync-cron-handler';
|
|
import { CoreCourseLogCronHandler } from './providers/log-cron-handler';
|
|
import { CoreTagAreaDelegate } from '@core/tag/providers/area-delegate';
|
|
import { CoreCourseTagAreaHandler } from './providers/course-tag-area-handler';
|
|
import { CoreCourseModulesTagAreaHandler } from './providers/modules-tag-area-handler';
|
|
|
|
// List of providers (without handlers).
|
|
export const CORE_COURSE_PROVIDERS: any[] = [
|
|
CoreCourseProvider,
|
|
CoreCourseHelperProvider,
|
|
CoreCourseLogHelperProvider,
|
|
CoreCourseFormatDelegate,
|
|
CoreCourseModuleDelegate,
|
|
CoreCourseModulePrefetchDelegate,
|
|
CoreCourseOptionsDelegate,
|
|
CoreCourseOfflineProvider,
|
|
CoreCourseSyncProvider
|
|
];
|
|
|
|
@NgModule({
|
|
declarations: [],
|
|
imports: [
|
|
CoreCourseFormatSingleActivityModule,
|
|
CoreCourseFormatTopicsModule,
|
|
CoreCourseFormatWeeksModule,
|
|
CoreCourseFormatSocialModule
|
|
],
|
|
providers: [
|
|
CoreCourseProvider,
|
|
CoreCourseHelperProvider,
|
|
CoreCourseLogHelperProvider,
|
|
CoreCourseFormatDelegate,
|
|
CoreCourseModuleDelegate,
|
|
CoreCourseModulePrefetchDelegate,
|
|
CoreCourseOptionsDelegate,
|
|
CoreCourseOfflineProvider,
|
|
CoreCourseSyncProvider,
|
|
CoreCourseFormatDefaultHandler,
|
|
CoreCourseModuleDefaultHandler,
|
|
CoreCourseSyncCronHandler,
|
|
CoreCourseLogCronHandler,
|
|
CoreCourseTagAreaHandler,
|
|
CoreCourseModulesTagAreaHandler
|
|
],
|
|
exports: []
|
|
})
|
|
export class CoreCourseModule {
|
|
constructor(cronDelegate: CoreCronDelegate, syncHandler: CoreCourseSyncCronHandler, logHandler: CoreCourseLogCronHandler,
|
|
platform: Platform, eventsProvider: CoreEventsProvider, tagAreaDelegate: CoreTagAreaDelegate,
|
|
courseTagAreaHandler: CoreCourseTagAreaHandler, modulesTagAreaHandler: CoreCourseModulesTagAreaHandler) {
|
|
cronDelegate.register(syncHandler);
|
|
cronDelegate.register(logHandler);
|
|
tagAreaDelegate.registerHandler(courseTagAreaHandler);
|
|
tagAreaDelegate.registerHandler(modulesTagAreaHandler);
|
|
|
|
platform.resume.subscribe(() => {
|
|
// Log the app is open to keep user in online status.
|
|
setTimeout(() => {
|
|
cronDelegate.forceCronHandlerExecution(logHandler.name);
|
|
}, 1000);
|
|
});
|
|
|
|
eventsProvider.on(CoreEventsProvider.LOGIN, () => {
|
|
// Log the app is open to keep user in online status.
|
|
setTimeout(() => {
|
|
cronDelegate.forceCronHandlerExecution(logHandler.name).catch((e) => {
|
|
// Ignore errors here, since probably login is not complete: it happens on token invalid.
|
|
});
|
|
}, 1000);
|
|
});
|
|
}
|
|
}
|