UNPKG

@brizy/media-gallery

Version:
34 lines (33 loc) 1.87 kB
import { catchError, distinctUntilChanged, filter, map, switchMap, tap } from "rxjs/operators"; import { isInsertFile } from "../../../global/actions"; import { EMPTY, of } from "rxjs"; import { isT } from "fp-utilities"; import { selectState } from "../../../pages/selectors"; import { isReadyOrMultipleMediaLibrary } from "../utils"; import { onNothing } from "../../../utils/maybe/onNothing"; import { typeError } from "../notifications"; import { isAcceptableType, isMultipleSelected, goToInsertFilesByContext, wrongTypeErrorMessage } from "../utils"; import { always } from "ramda"; import { toId } from "../../../types/ItemId"; import { toString } from "../../../types/ItemUid"; export var insertMediaLibraryFileEpic = function(action$, state$, param) { var c = param.context, t = param.t; return state$.pipe(map(selectState), filter(isT), filter(isReadyOrMultipleMediaLibrary), distinctUntilChanged(), switchMap(function(s) { return action$.pipe(filter(isInsertFile), distinctUntilChanged(), map(always(s.items.filter(function(v) { return v.isSelected; }))), map(isAcceptableType(c.acceptableTypes)), map(onNothing(wrongTypeErrorMessage(t, c.acceptableTypes, isMultipleSelected(s)))), map(function(v) { return v.map(function(v) { return { extension: v.extension, fileName: v.fileName, name: v.name, id: toId(v.id), uid: toString(v.uid), url: v.url, altTitle: v.altTitle, isStockPhoto: false }; }); }), tap(goToInsertFilesByContext(c)), switchMap(always(EMPTY)), catchError(always(of(typeError(t("Unable to fetch data")))))); }), catchError(always(of(typeError(t("Unable to fetch data")))))); };