X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fhelpers%2Frxjs.ts;h=2eaf0a055436be938ae2cffee67276401f1dfdd8;hb=c9c0cc5179359b6a9fa7c46bf73df99c4f72c1fc;hp=eb051f868829ad426257887413f11b74baa31720;hpb=421ff4618da64f0849353383f690a014024c40da;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/helpers/rxjs.ts b/client/src/app/helpers/rxjs.ts index eb051f868..2eaf0a055 100644 --- a/client/src/app/helpers/rxjs.ts +++ b/client/src/app/helpers/rxjs.ts @@ -1,25 +1,23 @@ import { uniq } from 'lodash-es' -import { asyncScheduler, Observable } from 'rxjs' -import { bufferTime, distinctUntilChanged, filter, map, observeOn, share, switchMap } from 'rxjs/operators' -import { NgZone } from '@angular/core' -import { enterZone, leaveZone } from './zone' +import { Observable } from 'rxjs' +import { bufferTime, distinctUntilChanged, filter, map, share, switchMap } from 'rxjs/operators' -function buildBulkObservable (options: { - ngZone: NgZone - notifierObservable: Observable +function buildBulkObservable

(options: { + notifierObservable: Observable

time: number - bulkGet: (params: T[]) => Observable + bulkGet: (params: P[]) => Observable }) { - const { ngZone, notifierObservable, time, bulkGet } = options + const { notifierObservable, time, bulkGet } = options return notifierObservable.pipe( distinctUntilChanged(), - // We leave Angular zone so Protractor does not get stuck - bufferTime(time, leaveZone(ngZone, asyncScheduler)), + bufferTime(time), filter(params => params.length !== 0), map(params => uniq(params)), - observeOn(enterZone(ngZone, asyncScheduler)), - switchMap(params => bulkGet(params)), + switchMap(params => { + return bulkGet(params) + .pipe(map(response => ({ params, response }))) + }), share() ) }