From 4841f31a92be5ef9e265046b4d6ccb066f777071 Mon Sep 17 00:00:00 2001 From: Ibby Hadeed Date: Sun, 17 Jul 2016 08:54:39 -0400 Subject: [PATCH] refactor(project): fix and optimize observables --- src/plugins/geolocation.ts | 3 +-- src/plugins/googlemaps.ts | 18 +++++++++--------- src/plugins/plugin.ts | 5 ++--- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/plugins/geolocation.ts b/src/plugins/geolocation.ts index 8c059f993..60d28a7e3 100644 --- a/src/plugins/geolocation.ts +++ b/src/plugins/geolocation.ts @@ -154,8 +154,7 @@ export class Geolocation { static watchPosition(options?: GeolocationOptions): Observable { return new Observable( (observer: any) => { - let cb = (data: Geoposition) => observer.next(data); - let watchId = navigator.geolocation.watchPosition(cb, options); + let watchId = navigator.geolocation.watchPosition(observer.next.bind(observer), options); return () => navigator.geolocation.clearWatch(watchId); } ); diff --git a/src/plugins/googlemaps.ts b/src/plugins/googlemaps.ts index 65d7433fb..c0378efe2 100644 --- a/src/plugins/googlemaps.ts +++ b/src/plugins/googlemaps.ts @@ -77,7 +77,7 @@ export class GoogleMap { on(event: any): Observable { return new Observable( (observer) => { - this._objectInstance.on(event, observer.next.bind); + this._objectInstance.on(event, observer.next.bind(observer)); return () => this._objectInstance.off(event); } ); @@ -388,8 +388,8 @@ export class GoogleMapsMarker { addEventListener(event: any): Observable { return new Observable( (observer) => { - this._objectInstance.addEventListener(event, observer.next.bind); - return () => this._objectInstance.removeEventListener(event, observer.next.bind); + this._objectInstance.addEventListener(event, observer.next.bind(observer)); + return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer)); } ); } @@ -533,8 +533,8 @@ export class GoogleMapsCircle { addEventListener(event: any): Observable { return new Observable( (observer) => { - this._objectInstance.addEventListener(event, observer.next.bind); - return () => this._objectInstance.removeEventListener(event, observer.next.bind); + this._objectInstance.addEventListener(event, observer.next.bind(observer)); + return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer)); } ); } @@ -624,8 +624,8 @@ export class GoogleMapsPolyline { addEventListener(event: any): Observable { return new Observable( (observer) => { - this._objectInstance.addEventListener(event, observer.next.bind); - return () => this._objectInstance.removeEventListener(event, observer.next.bind); + this._objectInstance.addEventListener(event, observer.next.bind(observer)); + return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer)); } ); } @@ -715,8 +715,8 @@ export class GoogleMapsPolygon { addEventListener(event: any): Observable { return new Observable( (observer) => { - this._objectInstance.addEventListener(event, observer.next.bind); - return () => this._objectInstance.removeEventListener(event, observer.next.bind); + this._objectInstance.addEventListener(event, observer.next.bind(observer)); + return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer)); } ); } diff --git a/src/plugins/plugin.ts b/src/plugins/plugin.ts index 7a97b8bf8..99b99c0ee 100644 --- a/src/plugins/plugin.ts +++ b/src/plugins/plugin.ts @@ -174,9 +174,8 @@ function wrapInstance (pluginObj: any, methodName: string, opts: any = {}) { */ function wrapEventObservable (event: string): Observable { return new Observable(observer => { - let callback = (status: any) => observer.next(status); - window.addEventListener(event, callback, false); - return () => window.removeEventListener(event, callback, false); + window.addEventListener(event, observer.next.bind(observer), false); + return () => window.removeEventListener(event, observer.next.bind(observer), false); }); }