MOBILE-2302 core: Fix unsubscribe in CoreEventsProvider

main
Dani Palou 2017-12-11 08:40:53 +01:00
parent c950d7dd40
commit f94cd92322
1 changed files with 4 additions and 4 deletions

View File

@ -48,7 +48,7 @@ export class CoreEventsProvider {
public static APP_LAUNCHED_URL = 'app_launched_url'; // App opened with a certain URL (custom URL scheme).
logger;
observables = {};
observables: {[s: string] : Subject<any>} = {};
uniqueEvents = {};
constructor(logger: CoreLoggerProvider) {
@ -65,7 +65,7 @@ export class CoreEventsProvider {
* @param {Function} callBack Function to call when the event is triggered.
* @return {CoreEventObserver} Observer to stop listening.
*/
on(eventName: string, callBack: Function) : CoreEventObserver {
on(eventName: string, callBack: (value: any) => void) : CoreEventObserver {
// If it's a unique event and has been triggered already, call the callBack.
// We don't need to create an observer because the event won't be triggered again.
if (this.uniqueEvents[eventName]) {
@ -83,13 +83,13 @@ export class CoreEventsProvider {
this.observables[eventName] = new Subject<any>();
}
this.observables[eventName].subscribe(callBack);
let subscription = this.observables[eventName].subscribe(callBack);
// Create and return a CoreEventObserver.
return {
off: () => {
this.logger.debug(`Stop listening to event '${eventName}'`);
this.observables[eventName].unsubscribe(callBack);
subscription.unsubscribe();
}
};
}