Merge pull request #2583 from dpalou/MOBILE-3507
MOBILE-3507 push: Call get_user_devices after register in Moodlemain
commit
3c49b7f24c
|
@ -13,6 +13,7 @@
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
import { CoreEventsProvider } from '@providers/events';
|
||||||
import { AddonMessageOutputDelegate } from '@addon/messageoutput/providers/delegate';
|
import { AddonMessageOutputDelegate } from '@addon/messageoutput/providers/delegate';
|
||||||
import { AddonMessageOutputAirnotifierProvider } from './providers/airnotifier';
|
import { AddonMessageOutputAirnotifierProvider } from './providers/airnotifier';
|
||||||
import { AddonMessageOutputAirnotifierHandler } from './providers/handler';
|
import { AddonMessageOutputAirnotifierHandler } from './providers/handler';
|
||||||
|
@ -28,7 +29,13 @@ import { AddonMessageOutputAirnotifierHandler } from './providers/handler';
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class AddonMessageOutputAirnotifierModule {
|
export class AddonMessageOutputAirnotifierModule {
|
||||||
constructor(messageOutputDelegate: AddonMessageOutputDelegate, airnotifierHandler: AddonMessageOutputAirnotifierHandler) {
|
constructor(messageOutputDelegate: AddonMessageOutputDelegate, airnotifierHandler: AddonMessageOutputAirnotifierHandler,
|
||||||
|
eventsProvider: CoreEventsProvider, airnotifierProvider: AddonMessageOutputAirnotifierProvider) {
|
||||||
messageOutputDelegate.registerHandler(airnotifierHandler);
|
messageOutputDelegate.registerHandler(airnotifierHandler);
|
||||||
|
|
||||||
|
eventsProvider.on(CoreEventsProvider.DEVICE_REGISTERED_IN_MOODLE, async (data) => {
|
||||||
|
// Get user devices to make Moodle send the devices data to Airnotifier.
|
||||||
|
airnotifierProvider.getUserDevices(true, data.siteId);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,10 +74,11 @@ export class AddonMessageOutputAirnotifierProvider {
|
||||||
/**
|
/**
|
||||||
* Get user devices.
|
* Get user devices.
|
||||||
*
|
*
|
||||||
|
* @param ignoreCache Whether to ignore cache.
|
||||||
* @param siteId Site ID. If not defined, use current site.
|
* @param siteId Site ID. If not defined, use current site.
|
||||||
* @return Promise resolved with the devices.
|
* @return Promise resolved with the devices.
|
||||||
*/
|
*/
|
||||||
getUserDevices(siteId?: string): Promise<AddonMessageOutputAirnotifierDevice[]> {
|
getUserDevices(ignoreCache?: boolean, siteId?: string): Promise<AddonMessageOutputAirnotifierDevice[]> {
|
||||||
this.logger.debug('Get user devices');
|
this.logger.debug('Get user devices');
|
||||||
|
|
||||||
return this.sitesProvider.getSite(siteId).then((site) => {
|
return this.sitesProvider.getSite(siteId).then((site) => {
|
||||||
|
@ -89,6 +90,11 @@ export class AddonMessageOutputAirnotifierProvider {
|
||||||
updateFrequency: CoreSite.FREQUENCY_RARELY
|
updateFrequency: CoreSite.FREQUENCY_RARELY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (ignoreCache) {
|
||||||
|
preSets['getFromCache'] = false;
|
||||||
|
preSets['emergencyCache'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
return site.read('message_airnotifier_get_user_devices', data, preSets)
|
return site.read('message_airnotifier_get_user_devices', data, preSets)
|
||||||
.then((data: AddonMessageOutputAirnotifierGetUserDevicesResult) => {
|
.then((data: AddonMessageOutputAirnotifierGetUserDevicesResult) => {
|
||||||
return data.devices;
|
return data.devices;
|
||||||
|
|
|
@ -19,6 +19,7 @@ import { Push, PushObject, PushOptions } from '@ionic-native/push';
|
||||||
import { Device } from '@ionic-native/device';
|
import { Device } from '@ionic-native/device';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreApp, CoreAppProvider, CoreAppSchema } from '@providers/app';
|
import { CoreApp, CoreAppProvider, CoreAppSchema } from '@providers/app';
|
||||||
|
import { CoreEvents, CoreEventsProvider } from '@providers/events';
|
||||||
import { CoreInitDelegate } from '@providers/init';
|
import { CoreInitDelegate } from '@providers/init';
|
||||||
import { CoreLoggerProvider } from '@providers/logger';
|
import { CoreLoggerProvider } from '@providers/logger';
|
||||||
import { CoreSitesProvider, CoreSiteSchema } from '@providers/sites';
|
import { CoreSitesProvider, CoreSiteSchema } from '@providers/sites';
|
||||||
|
@ -789,6 +790,8 @@ export class CorePushNotificationsProvider {
|
||||||
// Now register the device.
|
// Now register the device.
|
||||||
await site.write('core_user_add_user_device', this.utils.clone(data));
|
await site.write('core_user_add_user_device', this.utils.clone(data));
|
||||||
|
|
||||||
|
CoreEvents.instance.trigger(CoreEventsProvider.DEVICE_REGISTERED_IN_MOODLE, {}, site.getId());
|
||||||
|
|
||||||
// Insert the device in the local DB.
|
// Insert the device in the local DB.
|
||||||
try {
|
try {
|
||||||
await site.getDb().insertRecord(CorePushNotificationsProvider.REGISTERED_DEVICES_TABLE, data);
|
await site.getDb().insertRecord(CorePushNotificationsProvider.REGISTERED_DEVICES_TABLE, data);
|
||||||
|
|
|
@ -68,6 +68,7 @@ export class CoreEventsProvider {
|
||||||
static SITE_STORAGE_DELETED = 'site_storage_deleted';
|
static SITE_STORAGE_DELETED = 'site_storage_deleted';
|
||||||
static FORM_ACTION = 'form_action';
|
static FORM_ACTION = 'form_action';
|
||||||
static ACTIVITY_DATA_SENT = 'activity_data_sent';
|
static ACTIVITY_DATA_SENT = 'activity_data_sent';
|
||||||
|
static DEVICE_REGISTERED_IN_MOODLE = 'device_registered_in_moodle';
|
||||||
|
|
||||||
protected logger;
|
protected logger;
|
||||||
protected observables: { [s: string]: Subject<any> } = {};
|
protected observables: { [s: string]: Subject<any> } = {};
|
||||||
|
|
Loading…
Reference in New Issue