Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/addon/messageoutput/airnotifier/airnotifier.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// limitations under the License.

import { NgModule } from '@angular/core';
import { CoreEventsProvider } from '@providers/events';
import { AddonMessageOutputDelegate } from '@addon/messageoutput/providers/delegate';
import { AddonMessageOutputAirnotifierProvider } from './providers/airnotifier';
import { AddonMessageOutputAirnotifierHandler } from './providers/handler';
Expand All @@ -28,7 +29,13 @@ import { AddonMessageOutputAirnotifierHandler } from './providers/handler';
]
})
export class AddonMessageOutputAirnotifierModule {
constructor(messageOutputDelegate: AddonMessageOutputDelegate, airnotifierHandler: AddonMessageOutputAirnotifierHandler) {
constructor(messageOutputDelegate: AddonMessageOutputDelegate, airnotifierHandler: AddonMessageOutputAirnotifierHandler,
eventsProvider: CoreEventsProvider, airnotifierProvider: AddonMessageOutputAirnotifierProvider) {
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);
});
}
}
8 changes: 7 additions & 1 deletion src/addon/messageoutput/airnotifier/providers/airnotifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,11 @@ export class AddonMessageOutputAirnotifierProvider {
/**
* Get user devices.
*
* @param ignoreCache Whether to ignore cache.
* @param siteId Site ID. If not defined, use current site.
* @return Promise resolved with the devices.
*/
getUserDevices(siteId?: string): Promise<AddonMessageOutputAirnotifierDevice[]> {
getUserDevices(ignoreCache?: boolean, siteId?: string): Promise<AddonMessageOutputAirnotifierDevice[]> {
this.logger.debug('Get user devices');

return this.sitesProvider.getSite(siteId).then((site) => {
Expand All @@ -89,6 +90,11 @@ export class AddonMessageOutputAirnotifierProvider {
updateFrequency: CoreSite.FREQUENCY_RARELY
};

if (ignoreCache) {
preSets['getFromCache'] = false;
preSets['emergencyCache'] = false;
}

return site.read('message_airnotifier_get_user_devices', data, preSets)
.then((data: AddonMessageOutputAirnotifierGetUserDevicesResult) => {
return data.devices;
Expand Down
3 changes: 3 additions & 0 deletions src/core/pushnotifications/providers/pushnotifications.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { Push, PushObject, PushOptions } from '@ionic-native/push';
import { Device } from '@ionic-native/device';
import { TranslateService } from '@ngx-translate/core';
import { CoreApp, CoreAppProvider, CoreAppSchema } from '@providers/app';
import { CoreEvents, CoreEventsProvider } from '@providers/events';
import { CoreInitDelegate } from '@providers/init';
import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider, CoreSiteSchema } from '@providers/sites';
Expand Down Expand Up @@ -789,6 +790,8 @@ export class CorePushNotificationsProvider {
// Now register the device.
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.
try {
await site.getDb().insertRecord(CorePushNotificationsProvider.REGISTERED_DEVICES_TABLE, data);
Expand Down
1 change: 1 addition & 0 deletions src/providers/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ export class CoreEventsProvider {
static SITE_STORAGE_DELETED = 'site_storage_deleted';
static FORM_ACTION = 'form_action';
static ACTIVITY_DATA_SENT = 'activity_data_sent';
static DEVICE_REGISTERED_IN_MOODLE = 'device_registered_in_moodle';

protected logger;
protected observables: { [s: string]: Subject<any> } = {};
Expand Down