in src/compat/database/observable/fromRef.ts [17:60]
export function fromRef<T>(ref: DatabaseQuery,
event: ListenEvent,
listenType = 'on',
scheduler: SchedulerLike = asyncScheduler
): Observable<AngularFireAction<DatabaseSnapshot<T>>> {
return new Observable<SnapshotPrevKey<T>>(subscriber => {
let fn: any | null = null;
fn = ref[listenType](event, (snapshot, prevKey) => {
scheduler.schedule(() => {
subscriber.next({ snapshot, prevKey });
});
if (listenType === 'once') {
scheduler.schedule(() => subscriber.complete());
}
}, err => {
scheduler.schedule(() => subscriber.error(err));
});
if (listenType === 'on') {
return {
unsubscribe() {
if (fn != null) {
ref.off(event, fn);
}
}
};
} else {
return {
unsubscribe() {
}
};
}
}).pipe(
map(payload => {
const { snapshot, prevKey } = payload;
let key: string | null = null;
if (snapshot.exists()) {
key = snapshot.key;
}
return { type: event, payload: snapshot, prevKey, key };
}),
share()
);
}