/
FileReload.ts
30 lines (29 loc) · 1.07 KB
/
FileReload.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
import { Inputs } from "../index";
import { filter } from "rxjs/operators/filter";
import { empty } from "rxjs/observable/empty";
import { isBlacklisted } from "../utils";
import { FileReloadEventPayload } from "../types/socket";
import { of } from "rxjs/observable/of";
import { Observable } from "rxjs/Observable";
import { withLatestFrom } from "rxjs/operators/withLatestFrom";
import { mergeMap } from "rxjs/operators/mergeMap";
import { fileReload } from "../effects/file-reload.effect";
import { reloadBrowserSafe } from "./BrowserReload";
export function incomingFileReload(
xs: Observable<FileReloadEventPayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom(inputs.option$),
filter(([event, options]) => options.codeSync),
mergeMap(([event, options]) => {
if (event.url || !options.injectChanges) {
return reloadBrowserSafe();
}
if (event.basename && event.ext && isBlacklisted(event)) {
return empty();
}
return of(fileReload(event));
})
);
}