-
Notifications
You must be signed in to change notification settings - Fork 754
/
BrowserReload.ts
34 lines (32 loc) · 1.06 KB
/
BrowserReload.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { Inputs } from "../index";
import { filter } from "rxjs/operators/filter";
import { Observable } from "rxjs/Observable";
import { withLatestFrom } from "rxjs/operators/withLatestFrom";
import { mergeMap } from "rxjs/operators/mergeMap";
import { concat } from "rxjs/observable/concat";
import { of } from "rxjs/observable/of";
import {
browserReload,
preBrowserReload
} from "../effects/browser-reload.effect";
import { subscribeOn } from "rxjs/operators/subscribeOn";
import { async } from "rxjs/scheduler/async";
export function incomingBrowserReload(xs: Observable<any>, inputs: Inputs) {
return xs.pipe(
withLatestFrom(inputs.option$),
filter(([event, options]) => options.codeSync),
mergeMap(reloadBrowserSafe)
);
}
export function reloadBrowserSafe() {
return concat(
/**
* Emit a warning message allowing others to do some work
*/
of(preBrowserReload()),
/**
* On the next tick, perform the reload
*/
of(browserReload()).pipe(subscribeOn(async))
);
}