1
1
import { DatabaseQuery , DatabaseSnapshot , ListenEvent , SnapshotPrevKey , AngularFireAction } from '../interfaces' ;
2
2
import { Observable } from 'rxjs/Observable' ;
3
+ import { observeOn } from 'rxjs/operator/observeOn' ;
4
+ import { ZoneScheduler } from 'angularfire2' ;
3
5
import 'rxjs/add/operator/map' ;
4
6
import 'rxjs/add/operator/delay' ;
5
7
@@ -9,7 +11,7 @@ import 'rxjs/add/operator/delay';
9
11
* @param event Listen event type ('value', 'added', 'changed', 'removed', 'moved')
10
12
*/
11
13
export function fromRef ( ref : DatabaseQuery , event : ListenEvent , listenType = 'on' ) : Observable < AngularFireAction < DatabaseSnapshot | null > > {
12
- return new Observable < SnapshotPrevKey | null | undefined > ( subscriber => {
14
+ const ref$ = new Observable < SnapshotPrevKey | null | undefined > ( subscriber => {
13
15
const fn = ref [ listenType ] ( event , ( snapshot , prevKey ) => {
14
16
subscriber . next ( { snapshot, prevKey } )
15
17
} , subscriber . error . bind ( subscriber ) ) ;
@@ -25,4 +27,5 @@ export function fromRef(ref: DatabaseQuery, event: ListenEvent, listenType = 'on
25
27
// a quirk in the SDK where on/once callbacks can happen
26
28
// synchronously.
27
29
. delay ( 0 ) ;
30
+ return observeOn . call ( ref$ , new ZoneScheduler ( Zone . current ) ) ;
28
31
}
0 commit comments