UNPKG

@brizy/media-gallery

Version:
161 lines (160 loc) 5.64 kB
import { isOneOf } from "../../utils/value"; import * as State from "./types/State"; import * as Actions from "./types/Actions"; import { InsertFilesTypes } from "../../types/Context"; import { goToInsertFilesByContext } from "../../ports/Message/utils"; import { isImageUploadError } from "../mediaLibrary/utils"; import { EMPTY, of } from "rxjs"; import { fetchError, importSuccess } from "./notifications"; import { batchActions } from "redux-batched-actions"; export var isReadyOrBulkOrInsert = isOneOf([ State.isReady, State.isBulkSelectReady, State.isInsertFromReady, State.isInsertFromBulkSelectReady ]); var isReadyOrBulk = isOneOf([ State.isReady, State.isBulkSelectReady ]); var isNothingOrBulk = isOneOf([ State.isNothingSelected, State.isBulkSelectNothing ]); export var isMultipleBulkSelect = isOneOf([ State.isBulkSelectMultiple, State.isInsertFromBulkSelectMultiple ]); export var isReadyOrMultiple = isOneOf([ State.isBulkSelectMultiple, State.isReady, State.isBulkSelectReady ]); export var isReadyOrMultipleInsert = isOneOf([ State.isInsertFromBulkSelectMultiple, State.isInsertFromReady, State.isInsertFromBulkSelectReady ]); export var isReadyOrNothing = isOneOf([ State.isNothingSelected, State.isReady ]); export var isBulkSelected = isOneOf([ State.isBulkSelectNothing, State.isBulkSelectReady, State.isBulkSelectMultiple ]); export var isBulkSelectedOrInsert = isOneOf([ State.isBulkSelectNothing, State.isBulkSelectReady, State.isBulkSelectMultiple, State.isInsertFromBulkSelectReady, State.isInsertFromBulkSelectMultiple ]); export var isReadyOrNothingOrBulk = isOneOf([ isBulkSelected, isReadyOrNothing ]); var isCancelable = isOneOf([ State.isReady, isBulkSelected ]); export var isNothingSelected = isOneOf([ State.isInit, isNothingOrBulk ]); export var isWithContent = isOneOf([ isReadyOrNothing, isBulkSelected, isReadyOrMultipleInsert ]); export var isSidebarState = isOneOf([ isReadyOrBulkOrInsert, isNothingSelected, isMultipleBulkSelect ]); export var isBulkNothingOrMultiple = isOneOf([ State.isBulkSelectNothing, isMultipleBulkSelect ]); var insertFiles = function(s) { switch(s.insertFilesType){ case InsertFilesTypes.NONE: case InsertFilesTypes.MULTIPLE: return isReadyOrMultiple(s); case InsertFilesTypes.SINGLE: return isReadyOrBulk(s); } }; export var disabled = function(s) { return { cancel: isCancelable(s), delete: isReadyOrMultiple(s), preview: isReadyOrBulk(s), insertFiles: insertFiles(s) }; }; export var getErrorText = function(t, items, insertFilesType) { return items.length > 1 ? insertFilesType === InsertFilesTypes.NONE ? t("Failed to import images") : t("Failed to insert images") : insertFilesType === InsertFilesTypes.NONE ? t("Failed to import image") : t("Failed to insert image"); }; var getPartialErrorText = function(t, items, insertFilesType) { return items.length > 1 ? insertFilesType === InsertFilesTypes.NONE ? t("One or more images could not be imported") : t("One or more images could not be inserted") : getErrorText(t, items, insertFilesType); }; var getSuccessText = function(t, items) { return items.length > 1 ? t("Images successfully imported to Media Library") : t("Image successfully imported to Media Library"); }; var getAlreadyImportedErrorText = function(t, items) { return items.length > 1 ? t("Images already in Media Library") : t("Image already in Media Library"); }; var getPartialAlreadyImportedErrorText = function(t, items) { return items.length > 1 ? t("One or more images already in Media Library") : getAlreadyImportedErrorText(t, items); }; export var goToInsertFilesOrImportToML = function(c, t, s, items, data) { goToInsertFilesByContext(c)(data.filter(function(v) { return !isImageUploadError(v); })); if (data.some(isImageUploadError)) { return of(fetchError(getPartialErrorText(t, items, s.insertFilesType))); } if (s.insertFilesType === InsertFilesTypes.NONE) { if (data.every(function(v) { return typeof v !== "string" && !v.isStockPhoto; })) { return of(batchActions([ Actions.insertFilesError(), fetchError(getAlreadyImportedErrorText(t, items)) ])); } if (data.some(function(v) { return typeof v !== "string" && !v.isStockPhoto; })) { return of(batchActions([ Actions.unSelectAll(), importSuccess(getPartialAlreadyImportedErrorText(t, items)) ])); } } return s.insertFilesType === InsertFilesTypes.NONE ? of(batchActions([ Actions.unSelectAll(), importSuccess(getSuccessText(t, items)) ])) : EMPTY; }; export var getDimensions = function(param) { var width = param.width, height = param.height; if (width && height) { if (width <= height) { return "".concat(1080, " x ").concat(Math.round(height / width * 1080), " px"); } else { return "".concat(2000, " x ").concat(Math.round(height / width * 2000), " px"); } } return undefined; }; export var getUrlForFetch = function(param) { var urls = param.urls, width = param.width, height = param.height; var url = urls.raw; var newUrl = new URL(url); newUrl.searchParams.set("w", width <= height ? "1080" : "2000"); newUrl.searchParams.set("q", "100"); return newUrl.toString(); };