MOBILE-3312 core: Update site info every certain time
parent
84f559264b
commit
090817390e
|
@ -61,6 +61,9 @@ import { CoreSyncProvider } from '@providers/sync';
|
||||||
import { CoreFileHelperProvider } from '@providers/file-helper';
|
import { CoreFileHelperProvider } from '@providers/file-helper';
|
||||||
import { CoreCustomURLSchemesProvider } from '@providers/urlschemes';
|
import { CoreCustomURLSchemesProvider } from '@providers/urlschemes';
|
||||||
|
|
||||||
|
// Handlers.
|
||||||
|
import { CoreSiteInfoCronHandler } from '@providers/handlers/site-info-cron-handler';
|
||||||
|
|
||||||
// Core modules.
|
// Core modules.
|
||||||
import { CoreComponentsModule } from '@components/components.module';
|
import { CoreComponentsModule } from '@components/components.module';
|
||||||
import { CoreEmulatorModule } from '@core/emulator/emulator.module';
|
import { CoreEmulatorModule } from '@core/emulator/emulator.module';
|
||||||
|
@ -329,6 +332,7 @@ export const WP_PROVIDER: any = null;
|
||||||
CoreSyncProvider,
|
CoreSyncProvider,
|
||||||
CoreFileHelperProvider,
|
CoreFileHelperProvider,
|
||||||
CoreCustomURLSchemesProvider,
|
CoreCustomURLSchemesProvider,
|
||||||
|
CoreSiteInfoCronHandler,
|
||||||
{
|
{
|
||||||
provide: HTTP_INTERCEPTORS,
|
provide: HTTP_INTERCEPTORS,
|
||||||
useClass: CoreInterceptor,
|
useClass: CoreInterceptor,
|
||||||
|
@ -341,8 +345,17 @@ export const WP_PROVIDER: any = null;
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class AppModule {
|
export class AppModule {
|
||||||
constructor(platform: Platform, initDelegate: CoreInitDelegate, updateManager: CoreUpdateManagerProvider, config: Config,
|
constructor(
|
||||||
sitesProvider: CoreSitesProvider, fileProvider: CoreFileProvider, private eventsProvider: CoreEventsProvider) {
|
platform: Platform,
|
||||||
|
initDelegate: CoreInitDelegate,
|
||||||
|
updateManager: CoreUpdateManagerProvider,
|
||||||
|
config: Config,
|
||||||
|
sitesProvider: CoreSitesProvider,
|
||||||
|
fileProvider: CoreFileProvider,
|
||||||
|
private eventsProvider: CoreEventsProvider,
|
||||||
|
cronDelegate: CoreCronDelegate,
|
||||||
|
siteInfoCronHandler: CoreSiteInfoCronHandler,
|
||||||
|
) {
|
||||||
// Register a handler for platform ready.
|
// Register a handler for platform ready.
|
||||||
initDelegate.registerProcess({
|
initDelegate.registerProcess({
|
||||||
name: 'CorePlatformReady',
|
name: 'CorePlatformReady',
|
||||||
|
@ -373,6 +386,9 @@ export class AppModule {
|
||||||
// Execute the init processes.
|
// Execute the init processes.
|
||||||
initDelegate.executeInitProcesses();
|
initDelegate.executeInitProcesses();
|
||||||
|
|
||||||
|
// Register handlers.
|
||||||
|
cronDelegate.register(siteInfoCronHandler);
|
||||||
|
|
||||||
// Set transition animation.
|
// Set transition animation.
|
||||||
config.setTransition('core-page-transition', CorePageTransition);
|
config.setTransition('core-page-transition', CorePageTransition);
|
||||||
config.setTransition('core-modal-lateral-transition', CoreModalLateralTransition);
|
config.setTransition('core-modal-lateral-transition', CoreModalLateralTransition);
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
// (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 { Injectable } from '@angular/core';
|
||||||
|
import { CoreCronHandler } from '@providers/cron';
|
||||||
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cron handler to update site info every certain time.
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class CoreSiteInfoCronHandler implements CoreCronHandler {
|
||||||
|
name = 'CoreSiteInfoCronHandler';
|
||||||
|
|
||||||
|
constructor(protected sitesProvider: CoreSitesProvider) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the process.
|
||||||
|
* Receives the ID of the site affected, undefined for all sites.
|
||||||
|
*
|
||||||
|
* @param siteId ID of the site affected, undefined for all sites.
|
||||||
|
* @return Promise resolved when done, rejected if failure.
|
||||||
|
*/
|
||||||
|
async execute(siteId?: string): Promise<any> {
|
||||||
|
if (!siteId) {
|
||||||
|
const siteIds = await this.sitesProvider.getSitesIds();
|
||||||
|
|
||||||
|
return Promise.all(siteIds.map((siteId) => this.sitesProvider.updateSiteInfo(siteId)));
|
||||||
|
} else {
|
||||||
|
return this.sitesProvider.updateSiteInfo(siteId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns handler's interval in milliseconds. Defaults to CoreCronDelegate.DEFAULT_INTERVAL.
|
||||||
|
*
|
||||||
|
* @return Interval time (in milliseconds).
|
||||||
|
*/
|
||||||
|
getInterval(): number {
|
||||||
|
return 3600000; // 1 hour.
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether it's a synchronization process or not. True if not defined.
|
||||||
|
*
|
||||||
|
* @return Whether it's a synchronization process or not.
|
||||||
|
*/
|
||||||
|
isSync(): boolean {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue