Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@filerobot/explorer / lib / components / ContextMenu / ShareOptions.js
Size: Mime:
import { Code, ExternalLink, Link, Languages, Verify } from '@scaleflex/icons';
import getFileLink from '@filerobot/utils/lib/getFileLink';
import copyText from '@filerobot/utils/lib/copyText';
import { isVisibilityPublic } from '@filerobot/utils/lib/visibility';
import isVideo from '@filerobot/utils/lib/isVideo';
import { FILECARD_SHARE_TABS_OBJECTS, PERMISSIONS, PERMISSION_MODELS } from '@filerobot/utils/lib/constants';
import { selectIsUserAuth } from '@filerobot/core/lib/slices/user.slice';
import { useManageAccessModal, useShareFolderModal, useEmbedVideoModal, usePublishModal } from '../Modals';
import { useExplorer } from '../../hooks';
import { useSelector } from 'react-redux';
import { sharePanelOpened } from '../../slices/panels.slice';
import { selectPermissionModel } from '../../slices/common.slice';
import { jsx as _jsx } from "react/jsx-runtime";
var SIZE = 14;
var isMultipleSelection = function isMultipleSelection(_ref) {
  var folders = _ref.folders,
    files = _ref.files;
  return folders.length + files.length > 1;
};
var isFirstFileVisibilityPublic = function isFirstFileVisibilityPublic(files) {
  if (files.length === 1) {
    var _files$;
    var visibility = (_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.visibility;
    return isVisibilityPublic(visibility);
  }
};
var handleShareViaSharebox = function handleShareViaSharebox(_ref2) {
  var foldersUuids = _ref2.foldersUuids,
    filesUuids = _ref2.filesUuids,
    dispatch = _ref2.dispatch,
    triggerShareFolderModal = _ref2.triggerShareFolderModal,
    triggerManageAccessModal = _ref2.triggerManageAccessModal;
  if (foldersUuids.length === 1 && filesUuids.length === 0) {
    triggerShareFolderModal(foldersUuids);
  } else if (filesUuids.length > 0 && foldersUuids.length === 0) {
    dispatch(sharePanelOpened({
      "for": filesUuids
    }));
  } else {
    triggerManageAccessModal({
      foldersUuids: foldersUuids,
      filesUuids: filesUuids
    });
  }
};
var isShareBoxHidden = function isShareBoxHidden(_ref3) {
  var folders = _ref3.folders,
    files = _ref3.files;
  return folders.length > 0 && files.length > 0;
};
var hideManageAccessOption = function hideManageAccessOption(_ref4) {
  var shareFileSubTabs = _ref4.shareFileSubTabs,
    _ref4$folders = _ref4.folders,
    folders = _ref4$folders === void 0 ? [] : _ref4$folders,
    _ref4$files = _ref4.files,
    files = _ref4$files === void 0 ? [] : _ref4$files,
    checkUserPermissions = _ref4.checkUserPermissions,
    isUserAuth = _ref4.isUserAuth,
    enabledManageAccess = _ref4.enabledManageAccess,
    permissionModel = _ref4.permissionModel;
  return !enabledManageAccess || !isUserAuth || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.MANAGE_ACCESS.key) || files.length !== 0 && folders.length !== 1 ||
  // For now we have ManageAccess only for single folder
  permissionModel !== PERMISSION_MODELS.PT_ADVANCED || !checkUserPermissions([folders.length > 0 ? PERMISSIONS.FOLDER_VISIBILITY : '', files.length > 0 ? PERMISSIONS.FILE_VISIBILITY : '']);
};
var hidePublishOption = function hidePublishOption(_ref5) {
  var shareFileSubTabs = _ref5.shareFileSubTabs,
    _ref5$folders = _ref5.folders,
    folders = _ref5$folders === void 0 ? [] : _ref5$folders,
    _ref5$files = _ref5.files,
    files = _ref5$files === void 0 ? [] : _ref5$files,
    checkUserPermissions = _ref5.checkUserPermissions,
    isUserAuth = _ref5.isUserAuth,
    enablePublishModal = _ref5.enablePublishModal;
  return !enablePublishModal || !isUserAuth || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.PUBLISH.key) || !checkUserPermissions([folders.length > 0 ? PERMISSIONS.FOLDER_VISIBILITY : '', files.length > 0 ? PERMISSIONS.FILE_VISIBILITY : '']);
};
var hideCdnLinkOption = function hideCdnLinkOption(_ref6) {
  var folders = _ref6.folders,
    files = _ref6.files,
    shareFileSubTabs = _ref6.shareFileSubTabs;
  return isMultipleSelection({
    folders: folders,
    files: files
  }) || folders.length > 0 || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.GET_LINK.key) || !isFirstFileVisibilityPublic(files);
};
var hideShareboxOption = function hideShareboxOption(_ref7) {
  var shareFileSubTabs = _ref7.shareFileSubTabs,
    folders = _ref7.folders,
    files = _ref7.files;
  return !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.VIA_SHAREBOX.key) || isShareBoxHidden({
    folders: folders,
    files: files
  });
};
var hideEmbedOption = function hideEmbedOption(_ref8) {
  var folders = _ref8.folders,
    files = _ref8.files,
    shareFileSubTabs = _ref8.shareFileSubTabs,
    enableEmbed = _ref8.enableEmbed;
  return isMultipleSelection({
    folders: folders,
    files: files
  }) || !shareFileSubTabs.includes(FILECARD_SHARE_TABS_OBJECTS.EMBED.key) || !isVideo(files[0]) || !isFirstFileVisibilityPublic(files) || !enableEmbed;
};
var ShareOptions = function ShareOptions() {
  var triggerPublishModal = usePublishModal();
  var triggerManageAccessModal = useManageAccessModal();
  var triggerShareFolderModal = useShareFolderModal();
  var triggerEmbedVideoModal = useEmbedVideoModal();
  var _useExplorer = useExplorer(),
    checkUserPermissions = _useExplorer.checkUserPermissions,
    _useExplorer$opts = _useExplorer.opts,
    contextMenuSubTabs = _useExplorer$opts.contextMenuSubTabs,
    _useExplorer$opts$con = _useExplorer$opts.config,
    config = _useExplorer$opts$con === void 0 ? {} : _useExplorer$opts$con,
    enabledManageAccess = _useExplorer$opts.enabledManageAccess,
    enablePublishModal = _useExplorer$opts.enablePublishModal;
  var _ref9 = config.video || {},
    enableEmbed = _ref9.enableEmbed;
  var shareFileSubTabs = contextMenuSubTabs.fileShare || [];
  var isUserAuth = useSelector(selectIsUserAuth);
  var permissionModel = useSelector(selectPermissionModel);
  return [{
    content: 'mutualizedPublishLabel',
    prefix: function prefix(_ref10) {
      var iconPrimaryColor = _ref10.iconPrimaryColor;
      return /*#__PURE__*/_jsx(Languages, {
        size: SIZE,
        color: iconPrimaryColor
      });
    },
    onClick: function onClick(_ref11) {
      var foldersUuids = _ref11.foldersUuids,
        filesUuids = _ref11.filesUuids,
        folders = _ref11.folders,
        files = _ref11.files;
      return triggerPublishModal({
        foldersUuids: foldersUuids,
        filesUuids: filesUuids,
        folders: folders,
        files: files
      });
    },
    hideOption: function hideOption(_ref12) {
      var folders = _ref12.folders,
        files = _ref12.files;
      return hidePublishOption({
        shareFileSubTabs: shareFileSubTabs,
        folders: folders,
        files: files,
        checkUserPermissions: checkUserPermissions,
        isUserAuth: isUserAuth,
        enablePublishModal: enablePublishModal
      });
    },
    key: FILECARD_SHARE_TABS_OBJECTS.PUBLISH.key
  }, {
    content: 'mutualizedFileCardManageAccessLabel',
    prefix: function prefix(_ref13) {
      var iconPrimaryColor = _ref13.iconPrimaryColor;
      return /*#__PURE__*/_jsx(Verify, {
        size: SIZE,
        color: iconPrimaryColor
      });
    },
    onClick: function onClick(_ref14) {
      var folders = _ref14.folders,
        files = _ref14.files;
      return triggerManageAccessModal({
        folders: folders,
        files: files
      });
    },
    hideOption: function hideOption(_ref15) {
      var folders = _ref15.folders,
        files = _ref15.files;
      return hideManageAccessOption({
        shareFileSubTabs: shareFileSubTabs,
        folders: folders,
        files: files,
        checkUserPermissions: checkUserPermissions,
        isUserAuth: isUserAuth,
        enabledManageAccess: enabledManageAccess,
        permissionModel: permissionModel
      });
    },
    key: FILECARD_SHARE_TABS_OBJECTS.MANAGE_ACCESS.key
  }, {
    content: /*#__PURE__*/_jsx("div", {
      className: "filerobot-c-horizontal-separator"
    }),
    disabled: true,
    key: 'SEPARATOR',
    hideOption: function hideOption(_ref16) {
      var folders = _ref16.folders,
        files = _ref16.files,
        checkUserPermissions = _ref16.checkUserPermissions;
      return hideManageAccessOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs,
        checkUserPermissions: checkUserPermissions
      }) || hidePublishOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs,
        checkUserPermissions: checkUserPermissions,
        isUserAuth: isUserAuth,
        enablePublishModal: enablePublishModal
      }) || hideCdnLinkOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs
      }) && hideShareboxOption({
        shareFileSubTabs: shareFileSubTabs,
        folders: folders,
        files: files
      }) && hideEmbedOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs,
        enableEmbed: enableEmbed
      });
    }
  }, {
    content: 'mutualizedCDNLinkLabel',
    prefix: function prefix(_ref17) {
      var iconPrimaryColor = _ref17.iconPrimaryColor;
      return /*#__PURE__*/_jsx(Link, {
        size: SIZE,
        color: iconPrimaryColor
      });
    },
    onClick: function onClick(_ref18) {
      var files = _ref18.files,
        i18n = _ref18.i18n,
        info = _ref18.info;
      var fileLink = getFileLink(files[0]);
      copyText(fileLink, i18n, info);
    },
    hideOption: function hideOption(_ref19) {
      var folders = _ref19.folders,
        files = _ref19.files;
      return hideCdnLinkOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs
      });
    },
    key: FILECARD_SHARE_TABS_OBJECTS.GET_LINK.key
  }, {
    content: 'mutualizedShareboxLabel',
    prefix: function prefix(_ref20) {
      var iconPrimaryColor = _ref20.iconPrimaryColor;
      return /*#__PURE__*/_jsx(ExternalLink, {
        size: SIZE,
        color: iconPrimaryColor
      });
    },
    onClick: function onClick(_ref21) {
      var foldersUuids = _ref21.foldersUuids,
        filesUuids = _ref21.filesUuids,
        dispatch = _ref21.dispatch;
      return handleShareViaSharebox({
        foldersUuids: foldersUuids,
        filesUuids: filesUuids,
        dispatch: dispatch,
        triggerShareFolderModal: triggerShareFolderModal,
        triggerManageAccessModal: triggerManageAccessModal
      });
    },
    hideOption: function hideOption(_ref22) {
      var folders = _ref22.folders,
        files = _ref22.files;
      return hideShareboxOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs
      });
    },
    key: FILECARD_SHARE_TABS_OBJECTS.VIA_SHAREBOX.key
  }, {
    content: 'embedTabLabel',
    prefix: function prefix(_ref23) {
      var iconPrimaryColor = _ref23.iconPrimaryColor;
      return /*#__PURE__*/_jsx(Code, {
        size: SIZE,
        color: iconPrimaryColor
      });
    },
    onClick: function onClick(_ref24) {
      var files = _ref24.files;
      return triggerEmbedVideoModal(files[0]);
    },
    hideOption: function hideOption(_ref25) {
      var folders = _ref25.folders,
        files = _ref25.files;
      return hideEmbedOption({
        folders: folders,
        files: files,
        shareFileSubTabs: shareFileSubTabs,
        enableEmbed: enableEmbed
      });
    },
    key: FILECARD_SHARE_TABS_OBJECTS.EMBED.key
  }];
};
export default ShareOptions;