]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/helpers/rxjs.ts
Increase some timeouts
[github/Chocobozzz/PeerTube.git] / client / src / app / helpers / rxjs.ts
CommitLineData
3da38d6e 1import { uniq } from 'lodash-es'
afb7d2d5
C
2import { Observable } from 'rxjs'
3import { bufferTime, distinctUntilChanged, filter, map, share, switchMap } from 'rxjs/operators'
3da38d6e
C
4
5function buildBulkObservable <T extends number | string, R> (options: {
3da38d6e
C
6 notifierObservable: Observable<T>
7 time: number
8 bulkGet: (params: T[]) => Observable<R>
9}) {
afb7d2d5 10 const { notifierObservable, time, bulkGet } = options
3da38d6e
C
11
12 return notifierObservable.pipe(
13 distinctUntilChanged(),
afb7d2d5 14 bufferTime(time),
3da38d6e
C
15 filter(params => params.length !== 0),
16 map(params => uniq(params)),
3da38d6e
C
17 switchMap(params => bulkGet(params)),
18 share()
19 )
20}
21
22export {
23 buildBulkObservable
24}