@brizy/media-gallery
Version:
34 lines (33 loc) • 1.87 kB
JavaScript
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"))))));
};