Web: Files: removed FormatsStore, added getting file formats from SettingsStore

This commit is contained in:
Nikita Gopienko 2022-02-15 15:58:31 +03:00
parent 264b3a8764
commit ccc0838269
22 changed files with 349 additions and 775 deletions

View File

@ -132,17 +132,16 @@ export default function withBadges(WrappedComponent) {
(
{
auth,
formatsStore,
treeFoldersStore,
filesActionsStore,
versionHistoryStore,
selectedFolderStore,
dialogsStore,
filesStore,
settingsStore,
},
{ item }
) => {
const { docserviceStore } = formatsStore;
const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore;
const {
lockFileAction,
@ -158,8 +157,8 @@ export default function withBadges(WrappedComponent) {
} = dialogsStore;
const { setIsLoading } = filesStore;
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const canConvert = docserviceStore.canConvert(item.fileExst);
const canWebEdit = settingsStore.canWebEdit(item.fileExst);
const canConvert = settingsStore.canConvert(item.fileExst);
return {
isAdmin: auth.isAdmin,

View File

@ -25,7 +25,7 @@ export default function withContextOptions(WrappedComponent) {
const {
copyAsAction,
item,
formfillingDocs,
extsWebRestrictedEditing,
setConvertPasswordDialogVisible,
setFormCreationInfo,
t,
@ -33,7 +33,8 @@ export default function withContextOptions(WrappedComponent) {
const { title, id, folderId, fileExst } = item;
const newTitle =
title.substring(0, title.length - fileExst.length) + formfillingDocs[0];
title.substring(0, title.length - fileExst.length) +
extsWebRestrictedEditing[0];
copyAsAction(id, newTitle, folderId).catch((err) => {
console.log("err", err);
@ -44,7 +45,7 @@ export default function withContextOptions(WrappedComponent) {
setFormCreationInfo({
newTitle,
fromExst: fileExst,
toExst: formfillingDocs[0],
toExst: extsWebRestrictedEditing[0],
fileInfo: item,
});
setConvertPasswordDialogVisible(true);
@ -641,10 +642,11 @@ export default function withContextOptions(WrappedComponent) {
treeFoldersStore,
uploadDataStore,
versionHistoryStore,
settingsStore,
},
{ item }
) => {
const { openDocEditor, fileActionStore, formatsStore } = filesStore;
const { openDocEditor, fileActionStore } = filesStore;
const {
deleteItemAction,
downloadAction,
@ -676,7 +678,7 @@ export default function withContextOptions(WrappedComponent) {
const { setAction, type, extension, id } = fileActionStore;
const { setMediaViewerData } = mediaViewerDataStore;
const { copyAsAction } = uploadDataStore;
const { formfillingDocs } = formatsStore.docserviceStore;
const { extsWebRestrictedEditing } = settingsStore;
const { isRecycleBinFolder, isShare } = treeFoldersStore;
const isShareFolder = isShare(item.rootFolderType);
@ -717,7 +719,7 @@ export default function withContextOptions(WrappedComponent) {
setUnsubscribe,
isDesktop: isDesktopClient,
copyAsAction,
formfillingDocs,
extsWebRestrictedEditing,
setFormCreationInfo,
};
}

View File

@ -303,8 +303,8 @@ export default function withFileActions(WrappedFileItem) {
//selectedFolderStore,
filesStore,
uploadDataStore,
formatsStore,
mediaViewerDataStore,
settingsStore,
},
{ item, t, history }
) => {
@ -346,7 +346,6 @@ export default function withFileActions(WrappedFileItem) {
} = filesStore;
const { startUpload } = uploadDataStore;
const { type, extension, id } = fileActionStore;
const { mediaViewersFormatsStore, docserviceStore } = formatsStore;
const { setMediaViewerData } = mediaViewerDataStore;
const selectedItem = selection.find(
@ -358,13 +357,10 @@ export default function withFileActions(WrappedFileItem) {
const isFolder = selectedItem ? false : !item.isFolder ? false : true;
const isMediaOrImage = mediaViewersFormatsStore.isMediaOrImage(
item.fileExst
);
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const canConvert = docserviceStore.canConvert(item.fileExst);
const canViewedDocs = docserviceStore.canViewedDocs(item.fileExst);
const isMediaOrImage = settingsStore.isMediaOrImage(item.fileExst);
const canWebEdit = settingsStore.canWebEdit(item.fileExst);
const canConvert = settingsStore.canConvert(item.fileExst);
const canViewedDocs = settingsStore.canViewedDocs(item.fileExst);
const inProgress =
activeFiles.findIndex((x) => x === item.id) !== -1 ||

View File

@ -25,7 +25,7 @@ const DownloadContent = (props) => {
getItemIcon,
titleFormat,
type,
filesConverts,
extsConvertible,
title,
} = props;
@ -37,9 +37,7 @@ const DownloadContent = (props) => {
for (let item of items) {
const exst = item.fileExst;
const exstItem = filesConverts.find((f) => f[exst]);
const arrayExst = exstItem ? exstItem[exst] : [];
arr = [...arr, ...arrayExst];
arr = [...arr, ...extsConvertible[exst]];
}
arr = arr.filter((x, pos) => arr.indexOf(x) !== pos);
@ -92,9 +90,7 @@ const DownloadContent = (props) => {
};
const getFormats = (item) => {
const arrayFormats = item && filesConverts.find((f) => f[item.fileExst]);
const conversionFormats = arrayFormats ? arrayFormats[item.fileExst] : [];
const arrayFormats = item ? extsConvertible[item.fileExst] : [];
const formats = [
{
key: "original",
@ -105,7 +101,7 @@ const DownloadContent = (props) => {
"data-file-id": item.id,
},
];
for (let f of conversionFormats) {
for (let f of arrayFormats) {
formats.push({
key: f,
label: f,

View File

@ -316,7 +316,7 @@ class DownloadDialogComponent extends React.Component {
};
render() {
const { visible, t, tReady, filesConverts } = this.props;
const { visible, t, tReady, extsConvertible } = this.props;
const {
documentsTitleFormat,
spreadsheetsTitleFormat,
@ -358,7 +358,7 @@ class DownloadDialogComponent extends React.Component {
{documents.length > 0 && (
<DownloadContent
t={t}
filesConverts={filesConverts}
extsConvertible={extsConvertible}
checkedTitle={checkedDocTitle}
indeterminateTitle={indeterminateDocTitle}
items={documents}
@ -374,7 +374,7 @@ class DownloadDialogComponent extends React.Component {
{spreadsheets.length > 0 && (
<DownloadContent
t={t}
filesConverts={filesConverts}
extsConvertible={extsConvertible}
checkedTitle={checkedSpreadsheetTitle}
indeterminateTitle={indeterminateSpreadsheetTitle}
items={spreadsheets}
@ -390,7 +390,7 @@ class DownloadDialogComponent extends React.Component {
{presentations.length > 0 && (
<DownloadContent
t={t}
filesConverts={filesConverts}
extsConvertible={extsConvertible}
checkedTitle={checkedPresentationTitle}
indeterminateTitle={indeterminatePresentationTitle}
items={presentations}
@ -503,10 +503,9 @@ const DownloadDialog = withTranslation([
])(DownloadDialogComponent);
export default inject(
({ filesStore, formatsStore, dialogsStore, filesActionsStore }) => {
({ filesStore, dialogsStore, filesActionsStore, settingsStore }) => {
const { sortedFiles } = filesStore;
const { getIcon, getFolderIcon } = formatsStore.iconFormatsStore;
const { filesConverts } = formatsStore.docserviceStore;
const { extsConvertible, getIcon, getFolderIcon } = settingsStore;
const {
downloadDialogVisible: visible,
@ -518,7 +517,7 @@ export default inject(
return {
sortedFiles,
visible,
filesConverts,
extsConvertible,
getIcon,
getFolderIcon,

View File

@ -242,10 +242,10 @@ export default inject(
filesStore,
mediaViewerDataStore,
treeFoldersStore,
formatsStore,
filesActionsStore,
selectedFolderStore,
dialogsStore,
settingsStore,
}) => {
const {
fetchFiles,
@ -259,7 +259,7 @@ export default inject(
} = filesStore;
const { updateRootBadge } = treeFoldersStore;
const { setMediaViewerData } = mediaViewerDataStore;
const { getIcon, getFolderIcon } = formatsStore.iconFormatsStore;
const { getIcon, getFolderIcon } = settingsStore;
const { markAsRead } = filesActionsStore;
const { pathParts } = selectedFolderStore;

View File

@ -66,9 +66,8 @@ FilesListRow.defaultProps = {
isMultiSelect: false,
};
export default inject(({ formatsStore }, { fileExst }) => {
const { iconFormatsStore } = formatsStore;
const iconSrc = iconFormatsStore.getIconSrc(fileExst, 24);
export default inject(({ settingsStore }, { fileExst }) => {
const iconSrc = settingsStore.getIconSrc(fileExst, 24);
return {
iconSrc,
};

View File

@ -353,7 +353,10 @@ class FileRow extends Component {
}
}
export default inject(
({ auth, formatsStore, uploadDataStore, mediaViewerDataStore }, { item }) => {
(
{ auth, uploadDataStore, mediaViewerDataStore, settingsStore },
{ item }
) => {
let ext;
let name;
let splitted;
@ -368,11 +371,11 @@ export default inject(
}
const { personal } = auth.settingsStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const { canViewedDocs } = docserviceStore;
canViewedDocs,
isMediaOrImage,
getIconSrc,
isArchive,
} = settingsStore;
const {
uploaded,
primaryProgressDataStore,
@ -385,11 +388,11 @@ export default inject(
} = uploadDataStore;
const { playlist, setMediaViewerData } = mediaViewerDataStore;
const { loadingFile: file } = primaryProgressDataStore;
const isMedia = mediaViewersFormatsStore.isMediaOrImage(ext);
const isMedia = isMediaOrImage(ext);
const isMediaActive =
playlist.findIndex((el) => el.fileId === item.fileId) !== -1;
const fileIcon = iconFormatsStore.getIconSrc(ext, 24);
const fileIcon = getIconSrc(ext, 24);
const loadingFile = !file || !file.uniqueId ? null : file;
@ -398,8 +401,6 @@ export default inject(
? loadingFile.percent
: null;
const { isArchive } = iconFormatsStore;
const downloadInCurrentTab = isArchive(ext) || !canViewedDocs(ext);
return {

View File

@ -1,11 +1,9 @@
import rootFilesStore from "../store/";
import settingsStore from "../store/";
import store from "studio/store";
import { desktopConstants } from "@appserver/common/desktop";
const { docserviceStore } = rootFilesStore.formatsStore;
export function encryptionUploadDialog(callback) {
const filter = docserviceStore.encryptedDocs.map((f) => "*" + f).join(" ");
const filter = settingsStore.extsWebEncrypt.map((f) => "*" + f).join(" ");
const data = {
cryptoEngineId: desktopConstants.cryptoEngineId,

View File

@ -6,7 +6,7 @@ import { addFileToRecentlyViewed } from "@appserver/common/api/files";
import i18n from "./i18n";
import { request } from "@appserver/common/api/client";
import docserviceStore from "../store/DocserviceStore";
import settingsStore from "../store/";
export const setDocumentTitle = (subTitle = null) => {
const { isAuthenticated, settingsStore, product: currentModule } = authStore;
@ -118,7 +118,7 @@ export const SaveAs = (title, url, folderId, openNewTab) => {
};
export const canConvert = (fileExst) => {
const { canConvert } = docserviceStore;
const { canConvert } = settingsStore;
return canConvert(fileExst);
};

View File

@ -164,7 +164,7 @@ export default inject(
filesStore,
mediaViewerDataStore,
filesActionsStore,
formatsStore,
settingsStore,
dialogsStore,
treeFoldersStore,
}) => {
@ -184,7 +184,7 @@ export default inject(
setToPreviewFile,
} = mediaViewerDataStore;
const { deleteItemAction } = filesActionsStore;
const { media, images } = formatsStore.mediaViewersFormatsStore;
const { extsVideo, extsImage } = settingsStore;
const { expandedKeys, setExpandedKeys } = treeFoldersStore;
return {
@ -195,8 +195,8 @@ export default inject(
currentMediaFileId,
deleteItemAction,
setMediaViewerData,
mediaViewerImageFormats: images,
mediaViewerMediaFormats: media,
mediaViewerImageFormats: extsImage,
mediaViewerMediaFormats: extsVideo,
setRemoveMediaItem: dialogsStore.setRemoveMediaItem,
deleteDialogVisible: dialogsStore.deleteDialogVisible,
fetchFiles,

View File

@ -108,8 +108,8 @@ const FilesTile = (props) => {
);
};
export default inject(({ formatsStore }) => {
const { getIcon } = formatsStore.iconFormatsStore;
export default inject(({ settingsStore }) => {
const { getIcon } = settingsStore;
return { getIcon };
})(
withTranslation("Home")(

View File

@ -39,7 +39,7 @@ class PureHome extends React.Component {
setExpandedKeys,
setToPreviewFile,
playlist,
mediaViewersFormatsStore,
isMediaOrImage,
getFileInfo,
setIsPrevSettingsModule,
isPrevSettingsModule,
@ -62,9 +62,7 @@ class PureHome extends React.Component {
getFileInfo(fileId)
.then((data) => {
const canOpenPlayer = mediaViewersFormatsStore.isMediaOrImage(
data.fileExst
);
const canOpenPlayer = isMediaOrImage(data.fileExst);
const file = { ...data, canOpenPlayer };
setToPreviewFile(file, true);
})
@ -353,7 +351,7 @@ export default inject(
uploadDataStore,
treeFoldersStore,
mediaViewerDataStore,
formatsStore,
settingsStore,
}) => {
const {
secondaryProgressDataStore,
@ -376,8 +374,6 @@ export default inject(
isPrevSettingsModule,
} = filesStore;
const { mediaViewersFormatsStore } = formatsStore;
const { id } = fileActionStore;
const {
isRecycleBinFolder,
@ -463,7 +459,7 @@ export default inject(
setHeaderVisible: auth.settingsStore.setHeaderVisible,
setToPreviewFile,
playlist,
mediaViewersFormatsStore,
isMediaOrImage: settingsStore.isMediaOrImage,
getFileInfo,
setIsPrevSettingsModule,

View File

@ -1,216 +0,0 @@
import { makeObservable } from "mobx";
import { presentInArray } from "../helpers/files-helpers";
class DocserviceStore {
coauthorDocs = [
".csv",
".docx",
".docxf",
".oform",
".ppsx",
".pptx",
".txt",
".xlsx",
];
commentedDocs = [".docx", ".docxf", ".xlsx", ".pptx"];
convertDocs = [
".doc",
".docm",
".dot",
".dotm",
".dotx",
".fodp",
".fods",
".fodt",
".odp",
".ods",
".odt",
".otp",
".ots",
".ott",
".pot",
".potm",
".potx",
".pps",
".ppsm",
".ppt",
".pptm",
".rtf",
".xls",
".xlsm",
".xlt",
".xltm",
".xltx",
];
editedDocs = [
".csv",
".doc",
".docm",
".docx",
".docxf",
".dot",
".dotm",
".dotx",
".fodp",
".fods",
".fodt",
".htm",
".html",
".mht",
".odp",
".ods",
".odt",
".oform",
".otp",
".ots",
".ott",
".pot",
".potm",
".potx",
".pps",
".ppsm",
".ppsx",
".ppt",
".pptm",
".pptx",
".rtf",
".txt",
".xls",
".xlsm",
".xlsx",
".xlt",
".xltm",
".xltx",
];
encryptedDocs = [".docx", ".xlsx", ".pptx", ".docxf", ".oform"];
formfillingDocs = [".oform"];
customfilterDocs = [".xlsx"];
reviewedDocs = [".docx", ".docxf"];
viewedDocs = [
".csv",
".djvu",
".doc",
".docm",
".docx",
".docxf",
".dot",
".dotm",
".dotx",
".epub",
".fodp",
".fods",
".fodt",
".gdoc",
".gsheet",
".gslides",
".htm",
".html",
".mht",
".odp",
".ods",
".odt",
".oform",
".otp",
".ots",
".ott",
".pdf",
".pot",
".potm",
".potx",
".pps",
".ppsm",
".ppsx",
".ppt",
".pptm",
".pptx",
".rtf",
".txt",
".xls",
".xlsm",
".xlsx",
".xlt",
".xltm",
".xltx",
".xps",
];
filesConverts = [
{ ".csv": [".ods", ".pdf", ".xlsx"] },
{ ".doc": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".docm": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".doct": [".docx"] },
{ ".docx": [".docxf", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".dot": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".dotm": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".dotx": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".epub": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".fb2": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".fodp": [".odp", ".pdf", ".pptx"] },
{ ".fods": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".fodt": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".html": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".mht": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".odp": [".pdf", ".pptx"] },
{ ".otp": [".odp", ".pdf", ".pptx"] },
{ ".ods": [".csv", ".pdf", ".xlsx"] },
{ ".ots": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".odt": [".docx", ".pdf", ".rtf", ".txt"] },
{ ".ott": [".docx", ".odt", ".pdf", ".rtf", ".txt"] },
{ ".pot": [".odp", ".pdf", ".pptx"] },
{ ".potm": [".odp", ".pdf", ".pptx"] },
{ ".potx": [".odp", ".pdf", ".pptx"] },
{ ".pps": [".odp", ".pdf", ".pptx"] },
{ ".ppsm": [".odp", ".pdf", ".pptx"] },
{ ".ppsx": [".odp", ".pdf", ".pptx"] },
{ ".ppt": [".odp", ".pdf", ".pptx"] },
{ ".pptm": [".odp", ".pdf", ".pptx"] },
{ ".pptt": [".pptx"] },
{ ".pptx": [".odp", ".pdf"] },
{ ".rtf": [".docx", ".odt", ".pdf", ".txt"] },
{ ".txt": [".docx", ".odt", ".pdf", ".rtf"] },
{ ".xls": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".xlsm": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".xlst": [".xlsx"] },
{ ".xlsx": [".csv", ".ods", ".pdf"] },
{ ".xlt": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".xltm": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".xltx": [".csv", ".ods", ".pdf", ".xlsx"] },
{ ".xps": [".pdf"] },
{
".docxf": [
".docx",
".dotx",
".epub",
".fb2",
".html",
".odt",
".oform",
".ott",
".pdf",
".rtf",
".txt",
],
},
];
constructor() {
makeObservable(this, {});
}
canWebEdit = (extension) => presentInArray(this.editedDocs, extension);
canViewedDocs = (extension) => presentInArray(this.viewedDocs, extension);
canConvert = (extension) => presentInArray(this.convertDocs, extension);
canWebComment = (extension) => presentInArray(this.commentedDocs, extension);
canWebReview = (extension) => presentInArray(this.reviewedDocs, extension);
canFormFillingDocs = (extension) =>
presentInArray(this.formfillingDocs, extension);
canWebFilterEditing = (extension) =>
presentInArray(this.customfilterDocs, extension);
}
export default new DocserviceStore();

View File

@ -28,7 +28,6 @@ class FilesStore {
fileActionStore;
selectedFolderStore;
treeFoldersStore;
formatsStore;
filesSettingsStore;
isLoaded = false;
@ -67,7 +66,6 @@ class FilesStore {
fileActionStore,
selectedFolderStore,
treeFoldersStore,
formatsStore,
filesSettingsStore
) {
const pathname = window.location.pathname.toLowerCase();
@ -80,7 +78,6 @@ class FilesStore {
this.fileActionStore = fileActionStore;
this.selectedFolderStore = selectedFolderStore;
this.treeFoldersStore = treeFoldersStore;
this.formatsStore = formatsStore;
this.filesSettingsStore = filesSettingsStore;
const { socketHelper } = authStore.settingsStore;
@ -651,7 +648,7 @@ class FilesStore {
canWebEdit,
canViewedDocs,
canFormFillingDocs,
} = this.formatsStore.docserviceStore;
} = this.filesSettingsStore;
const isThirdPartyFolder =
item.providerKey && item.id === item.rootFolderId;
@ -1254,7 +1251,7 @@ class FilesStore {
}
get iconOfDraggedFile() {
const { getIcon } = this.formatsStore.iconFormatsStore;
const { getIcon } = this.filesSettingsStore;
if (this.selection.length === 1) {
return getIcon(
@ -1318,7 +1315,7 @@ class FilesStore {
}
onCreateAddTempItem = (items) => {
const { getFileIcon, getFolderIcon } = this.formatsStore.iconFormatsStore;
const { getFileIcon, getFolderIcon } = this.filesSettingsStore;
const { extension, title } = this.fileActionStore;
if (items.length && items[0].id === -1) return; //TODO: if change media collection from state remove this;
@ -1346,8 +1343,7 @@ class FilesStore {
}
get filesList() {
const { mediaViewersFormatsStore, iconFormatsStore } = this.formatsStore;
const { getIcon } = iconFormatsStore;
const { getIcon } = this.filesSettingsStore;
//return [...this.folders, ...this.files];
const items = [...this.folders, ...this.files];
@ -1386,11 +1382,9 @@ class FilesStore {
canEdit,
} = item;
const { canConvert } = this.formatsStore.docserviceStore;
const { canConvert, isMediaOrImage } = this.filesSettingsStore;
const canOpenPlayer = mediaViewersFormatsStore.isMediaOrImage(
item.fileExst
);
const canOpenPlayer = isMediaOrImage(item.fileExst);
const previewUrl = canOpenPlayer
? combineUrl(
@ -1494,14 +1488,14 @@ class FilesStore {
}
get cbMenuItems() {
const { mediaViewersFormatsStore, iconFormatsStore } = this.formatsStore;
const {
isImage,
isVideo,
isDocument,
isPresentation,
isSpreadsheet,
isArchive,
} = iconFormatsStore;
const { isImage, isVideo } = mediaViewersFormatsStore;
} = this.filesSettingsStore;
let cbMenu = ["all"];
const filesItems = [...this.files, ...this.folders];
@ -1557,11 +1551,11 @@ class FilesStore {
get sortedFiles() {
const {
extsConvertible,
isSpreadsheet,
isPresentation,
isDocument,
} = this.formatsStore.iconFormatsStore;
const { filesConverts } = this.formatsStore.docserviceStore;
} = this.filesSettingsStore;
let sortedFiles = {
documents: [],
@ -1580,7 +1574,7 @@ class FilesStore {
item.checked = true;
item.format = null;
const canConvert = filesConverts.find((f) => f[item.fileExst]);
const canConvert = extsConvertible[item.fileExst];
if (item.fileExst && canConvert) {
if (isSpreadsheet(item.fileExst)) {
@ -1638,7 +1632,7 @@ class FilesStore {
}
get canConvertSelected() {
const { filesConverts } = this.formatsStore.docserviceStore;
const { extsConvertible } = this.filesSettingsStore;
const selection = this.selection.length
? this.selection
@ -1648,13 +1642,13 @@ class FilesStore {
return selection.some((selected) => {
if (selected.isFolder === true || !selected.fileExst) return false;
const index = filesConverts.findIndex((f) => f[selected.fileExst]);
return index !== -1;
const array = extsConvertible[selected.fileExst];
return array;
});
}
get isViewedSelected() {
const { canViewedDocs } = this.formatsStore.docserviceStore;
const { canViewedDocs } = this.filesSettingsStore;
return this.selection.some((selected) => {
if (selected.isFolder === true || !selected.fileExst) return false;
@ -1663,7 +1657,7 @@ class FilesStore {
}
get isMediaSelected() {
const { isMediaOrImage } = this.formatsStore.mediaViewersFormatsStore;
const { isMediaOrImage } = this.filesSettingsStore;
return this.selection.some((selected) => {
if (selected.isFolder === true || !selected.fileExst) return false;
@ -1708,7 +1702,7 @@ class FilesStore {
canFormFillingDocs,
canWebFilterEditing,
canConvert,
} = this.formatsStore.docserviceStore;
} = this.filesSettingsStore;
if (selection[0].encrypted) {
return ["FullAccess", "DenyAccess"];

View File

@ -1,16 +0,0 @@
import { makeAutoObservable } from "mobx";
class FormatsStore {
iconFormatsStore;
mediaViewersFormatsStore;
docserviceStore;
constructor(iconFormatsStore, mediaViewersFormatsStore, docserviceStore) {
makeAutoObservable(this);
this.iconFormatsStore = iconFormatsStore;
this.mediaViewersFormatsStore = mediaViewersFormatsStore;
this.docserviceStore = docserviceStore;
}
}
export default FormatsStore;

View File

@ -1,368 +0,0 @@
import { makeAutoObservable } from "mobx";
import { presentInArray } from "../helpers/files-helpers";
class IconFormatsStore {
archive = [
".ace",
".arc",
".arj",
".bh",
".cab",
".enc",
".gz",
".gz",
".ha",
".jar",
".lha",
".lzh",
".pak",
".pk3",
".rar",
".tar",
".tgz",
".uu",
".uue",
".xxe",
".z",
".zip",
".zoo",
];
image = [
".ai",
".bmp",
".cmx",
".cod",
".gif",
".ico",
".ief",
".jpe",
".jpeg",
".jpg",
".pbm",
".png",
".pnm",
".ppm",
".psd",
".rgb",
".tif",
".tiff",
".webp",
".xbm",
".xpm",
".xwd",
];
sound = [
".aac",
".ac3",
".aiff",
".amr",
".ape",
".cda",
".flac",
".m4a",
".mid",
".mka",
".mp3",
".mpc",
".oga",
".ogg",
".pcm",
".ra",
".raw",
".wav",
".wma",
];
video = [
".3gp",
".asf",
".avi",
".f4v",
".fla",
".flv",
".m2ts",
".m4v",
".mkv",
".mov",
".mp4",
".mpeg",
".mpg",
".mts",
".ogv",
".svi",
".vob",
".webm",
".wmv",
];
html = [".htm", ".mht", ".html"];
ebook = [".fb2", ".ibk", ".prc", ".epub"];
document = [
".doc",
".docx",
".docm",
".dot",
".dotx",
".dotm",
".odt",
".fodt",
".ott",
".rtf",
".txt",
".html",
".htm",
".mht",
".pdf",
".djvu",
".fb2",
".epub",
".xps",
".doct",
".docy",
".gdoc",
".docxf",
".oform",
];
presentation = [
".pps",
".ppsx",
".ppsm",
".ppt",
".pptx",
".pptm",
".pot",
".potx",
".potm",
".odp",
".fodp",
".otp",
".pptt",
".ppty",
".gslides",
];
spreadsheet = [
".xls",
".xlsx",
".xlsm",
".xlt",
".xltx",
".xltm",
".ods",
".fods",
".ots",
".csv",
".xlst",
".xlsy",
".xlsb",
".gsheet",
];
constructor() {
makeAutoObservable(this);
//makeObservable(this, {});
}
isArchive = (extension) => presentInArray(this.archive, extension);
isImage = (extension) => presentInArray(this.image, extension);
isSound = (extension) => presentInArray(this.sound, extension);
isHtml = (extension) => presentInArray(this.html, extension);
isEbook = (extension) => presentInArray(this.ebook, extension);
isDocument = (extension) => presentInArray(this.document, extension);
isPresentation = (extension) => presentInArray(this.presentation, extension);
isSpreadsheet = (extension) => presentInArray(this.spreadsheet, extension);
getIcon = (
size = 24,
fileExst = null,
providerKey = null,
contentLength = null
) => {
if (fileExst || contentLength) {
const isArchiveItem = this.isArchive(fileExst);
const isImageItem = this.isImage(fileExst);
const isSoundItem = this.isSound(fileExst);
const isHtmlItem = this.isHtml(fileExst);
const icon = this.getFileIcon(
fileExst,
size,
isArchiveItem,
isImageItem,
isSoundItem,
isHtmlItem
);
return icon;
} else {
return this.getFolderIcon(providerKey, size);
}
};
getFolderIcon = (providerKey, size = 32) => {
const folderPath = `images/icons/${size}`;
switch (providerKey) {
case "Box":
case "BoxNet":
return `${folderPath}/folder/box.svg`;
case "DropBox":
case "DropboxV2":
return `${folderPath}/folder/dropbox.svg`;
case "Google":
case "GoogleDrive":
return `${folderPath}/folder/google.svg`;
case "OneDrive":
return `${folderPath}/folder/onedrive.svg`;
case "SharePoint":
return `${folderPath}/folder/sharepoint.svg`;
case "Yandex":
return `${folderPath}/folder/yandex.svg`;
case "kDrive":
return `${folderPath}/folder/kdrive.svg`;
case "WebDav":
return `${folderPath}/folder/webdav.svg`;
default:
return `${folderPath}/folder.svg`;
}
};
getIconUrl = (extension, folderPath) => {
switch (extension) {
case ".avi":
return `${folderPath}/avi.svg`;
case ".csv":
return `${folderPath}/csv.svg`;
case ".djvu":
return `${folderPath}/djvu.svg`;
case ".doc":
return `${folderPath}/doc.svg`;
case ".docm":
return `${folderPath}/docm.svg`;
case ".docx":
return `${folderPath}/docx.svg`;
case ".dotx":
return `${folderPath}/dotx.svg`;
case ".dvd":
return `${folderPath}/dvd.svg`;
case ".epub":
return `${folderPath}/epub.svg`;
case ".pb2":
case ".fb2":
return `${folderPath}/fb2.svg`;
case ".flv":
return `${folderPath}/flv.svg`;
case ".fodt":
return `${folderPath}/fodt.svg`;
case ".iaf":
return `${folderPath}/iaf.svg`;
case ".ics":
return `${folderPath}/ics.svg`;
case ".m2ts":
return `${folderPath}/m2ts.svg`;
case ".mht":
return `${folderPath}/mht.svg`;
case ".mkv":
return `${folderPath}/mkv.svg`;
case ".mov":
return `${folderPath}/mov.svg`;
case ".mp4":
return `${folderPath}/mp4.svg`;
case ".mpg":
return `${folderPath}/mpg.svg`;
case ".odp":
return `${folderPath}/odp.svg`;
case ".ods":
return `${folderPath}/ods.svg`;
case ".odt":
return `${folderPath}/odt.svg`;
case ".otp":
return `${folderPath}/otp.svg`;
case ".ots":
return `${folderPath}/ots.svg`;
case ".ott":
return `${folderPath}/ott.svg`;
case ".pdf":
return `${folderPath}/pdf.svg`;
case ".pot":
return `${folderPath}/pot.svg`;
case ".pps":
return `${folderPath}/pps.svg`;
case ".ppsx":
return `${folderPath}/ppsx.svg`;
case ".ppt":
return `${folderPath}/ppt.svg`;
case ".pptm":
return `${folderPath}/pptm.svg`;
case ".pptx":
return `${folderPath}/pptx.svg`;
case ".rtf":
return `${folderPath}/rtf.svg`;
case ".svg":
return `${folderPath}/svg.svg`;
case ".txt":
return `${folderPath}/txt.svg`;
case ".webm":
return `${folderPath}/webm.svg`;
case ".xls":
return `${folderPath}/xls.svg`;
case ".xlsm":
return `${folderPath}/xlsm.svg`;
case ".xlsx":
return `${folderPath}/xlsx.svg`;
case ".xps":
return `${folderPath}/xps.svg`;
case ".xml":
return `${folderPath}/xml.svg`;
case ".oform":
return `${folderPath}/oform.svg`;
case ".docxf":
return `${folderPath}/docxf.svg`;
default:
return `${folderPath}/file.svg`;
}
};
getFileIcon = (
extension,
size = 32,
archive = false,
image = false,
sound = false,
html = false
) => {
const folderPath = `/static/images/icons/${size}`;
if (archive) return `${folderPath}/file_archive.svg`;
if (image) return `${folderPath}/image.svg`;
if (sound) return `${folderPath}/sound.svg`;
if (html) return `${folderPath}/html.svg`;
return this.getIconUrl(extension, folderPath);
};
getIconSrc = (ext, size = 24) => {
const folderPath = `/static/images/icons/${size}`;
if (presentInArray(this.archive, ext, true))
return `${folderPath}/file_archive.svg`;
if (presentInArray(this.image, ext, true)) return `${folderPath}/image.svg`;
if (presentInArray(this.sound, ext, true)) return `${folderPath}/sound.svg`;
if (presentInArray(this.html, ext, true)) return `${folderPath}/html.svg`;
const extension = ext.toLowerCase();
return this.getIconUrl(extension, folderPath);
};
}
export default new IconFormatsStore();

View File

@ -2,16 +2,16 @@ import { makeAutoObservable } from "mobx";
class MediaViewerDataStore {
filesStore;
formatsStore;
settingsStore;
id = null;
visible = false;
previewFile = null;
constructor(filesStore, formatsStore) {
constructor(filesStore, settingsStore) {
makeAutoObservable(this);
this.filesStore = filesStore;
this.formatsStore = formatsStore;
this.settingsStore = settingsStore;
}
setMediaViewerData = (mediaData) => {
@ -35,7 +35,7 @@ class MediaViewerDataStore {
};
get playlist() {
const { isMediaOrImage } = this.formatsStore.mediaViewersFormatsStore;
const { isMediaOrImage } = this.settingsStore;
const { files } = this.filesStore;
const filesList = [...files];

View File

@ -1,59 +0,0 @@
import { makeObservable, observable } from "mobx";
import { presentInArray } from "../helpers/files-helpers";
class MediaViewersFormatsStore {
images = [
".bmp",
".gif",
".ico",
".jpeg",
".jpg",
".png",
".svg",
".tif",
".tiff",
".webp",
];
media = [
".aac",
".avi",
".f4v",
".flac",
".m4v",
".mov",
".mp3",
".mp4",
".mpeg",
".mpg",
".oga",
".ogg",
".ogv",
".wav",
".webm",
".wmv",
];
constructor() {
makeObservable(this, {
images: observable,
media: observable,
});
}
isVideo = (extension) => {
return presentInArray(this.media, extension);
};
isImage = (extension) => {
return presentInArray(this.images, extension);
};
isMediaOrImage = (fileExst) => {
if (this.media.includes(fileExst) || this.images.includes(fileExst)) {
return true;
}
return false;
};
}
export default new MediaViewersFormatsStore();

View File

@ -6,6 +6,7 @@ import {
setRecentSetting,
} from "@appserver/common/api/files";
import { FolderType } from "@appserver/common/constants";
import { presentInArray } from "../helpers/files-helpers";
class SettingsStore {
thirdPartyStore;
@ -27,6 +28,33 @@ class SettingsStore {
settingsIsLoaded = false;
extsImagePreviewed = [];
extsMediaPreviewed = [];
extsWebPreviewed = [];
extsWebEdited = [];
extsWebEncrypt = [];
extsWebReviewed = [];
extsWebCustomFilterEditing = [];
extsWebRestrictedEditing = [];
extsWebCommented = [];
extsWebTemplate = [];
extsCoAuthoring = [];
extsMustConvert = [];
extsConvertible = [];
extsUploadable = [];
extsArchive = [];
extsVideo = [];
extsAudio = [];
extsImage = [];
extsSpreadsheet = [];
extsPresentation = [];
extsDocument = [];
internalFormats = {};
masterFormExtension = "";
html = [".htm", ".mht", ".html"]; //TODO:
ebook = [".fb2", ".ibk", ".prc", ".epub"]; //TODO:
constructor(thirdPartyStore, treeFoldersStore) {
makeAutoObservable(this);
@ -183,6 +211,244 @@ class SettingsStore {
const hideConfirmConvertSave = await api.files.hideConfirmConvert(save);
this.hideConfirmConvertSave = hideConfirmConvertSave;
};
canWebEdit = (extension) => presentInArray(this.extsWebEdited, extension);
canViewedDocs = (extension) =>
presentInArray(this.extsWebPreviewed, extension);
canConvert = (extension) => presentInArray(this.extsMustConvert, extension);
canWebComment = (extension) =>
presentInArray(this.extsWebCommented, extension);
canWebReview = (extension) => presentInArray(this.extsWebReviewed, extension);
canFormFillingDocs = (extension) =>
presentInArray(this.extsWebRestrictedEditing, extension);
canWebFilterEditing = (extension) =>
presentInArray(this.extsWebCustomFilterEditing, extension);
isMediaOrImage = (fileExst) => {
if (
this.extsVideo.includes(fileExst) ||
this.extsImage.includes(fileExst)
) {
return true;
}
return false;
};
isArchive = (extension) => presentInArray(this.extsArchive, extension);
isImage = (extension) => presentInArray(this.extsImage, extension);
isVideo = (extension) => presentInArray(this.extsVideo, extension);
isSound = (extension) => presentInArray(this.extsAudio, extension);
isHtml = (extension) => presentInArray(this.html, extension);
isEbook = (extension) => presentInArray(this.ebook, extension);
isDocument = (extension) => presentInArray(this.extsDocument, extension);
isPresentation = (extension) =>
presentInArray(this.extsPresentation, extension);
isSpreadsheet = (extension) =>
presentInArray(this.extsSpreadsheet, extension);
getIcon = (
size = 24,
fileExst = null,
providerKey = null,
contentLength = null
) => {
if (fileExst || contentLength) {
const isArchiveItem = this.isArchive(fileExst);
const isImageItem = this.isImage(fileExst);
const isSoundItem = this.isSound(fileExst);
const isHtmlItem = this.isHtml(fileExst);
const icon = this.getFileIcon(
fileExst,
size,
isArchiveItem,
isImageItem,
isSoundItem,
isHtmlItem
);
return icon;
} else {
return this.getFolderIcon(providerKey, size);
}
};
getFolderIcon = (providerKey, size = 32) => {
const folderPath = `images/icons/${size}`;
switch (providerKey) {
case "Box":
case "BoxNet":
return `${folderPath}/folder/box.svg`;
case "DropBox":
case "DropboxV2":
return `${folderPath}/folder/dropbox.svg`;
case "Google":
case "GoogleDrive":
return `${folderPath}/folder/google.svg`;
case "OneDrive":
return `${folderPath}/folder/onedrive.svg`;
case "SharePoint":
return `${folderPath}/folder/sharepoint.svg`;
case "Yandex":
return `${folderPath}/folder/yandex.svg`;
case "kDrive":
return `${folderPath}/folder/kdrive.svg`;
case "WebDav":
return `${folderPath}/folder/webdav.svg`;
default:
return `${folderPath}/folder.svg`;
}
};
getIconUrl = (extension, folderPath) => {
switch (extension) {
case ".avi":
return `${folderPath}/avi.svg`;
case ".csv":
return `${folderPath}/csv.svg`;
case ".djvu":
return `${folderPath}/djvu.svg`;
case ".doc":
return `${folderPath}/doc.svg`;
case ".docm":
return `${folderPath}/docm.svg`;
case ".docx":
return `${folderPath}/docx.svg`;
case ".dotx":
return `${folderPath}/dotx.svg`;
case ".dvd":
return `${folderPath}/dvd.svg`;
case ".epub":
return `${folderPath}/epub.svg`;
case ".pb2":
case ".fb2":
return `${folderPath}/fb2.svg`;
case ".flv":
return `${folderPath}/flv.svg`;
case ".fodt":
return `${folderPath}/fodt.svg`;
case ".iaf":
return `${folderPath}/iaf.svg`;
case ".ics":
return `${folderPath}/ics.svg`;
case ".m2ts":
return `${folderPath}/m2ts.svg`;
case ".mht":
return `${folderPath}/mht.svg`;
case ".mkv":
return `${folderPath}/mkv.svg`;
case ".mov":
return `${folderPath}/mov.svg`;
case ".mp4":
return `${folderPath}/mp4.svg`;
case ".mpg":
return `${folderPath}/mpg.svg`;
case ".odp":
return `${folderPath}/odp.svg`;
case ".ods":
return `${folderPath}/ods.svg`;
case ".odt":
return `${folderPath}/odt.svg`;
case ".otp":
return `${folderPath}/otp.svg`;
case ".ots":
return `${folderPath}/ots.svg`;
case ".ott":
return `${folderPath}/ott.svg`;
case ".pdf":
return `${folderPath}/pdf.svg`;
case ".pot":
return `${folderPath}/pot.svg`;
case ".pps":
return `${folderPath}/pps.svg`;
case ".ppsx":
return `${folderPath}/ppsx.svg`;
case ".ppt":
return `${folderPath}/ppt.svg`;
case ".pptm":
return `${folderPath}/pptm.svg`;
case ".pptx":
return `${folderPath}/pptx.svg`;
case ".rtf":
return `${folderPath}/rtf.svg`;
case ".svg":
return `${folderPath}/svg.svg`;
case ".txt":
return `${folderPath}/txt.svg`;
case ".webm":
return `${folderPath}/webm.svg`;
case ".xls":
return `${folderPath}/xls.svg`;
case ".xlsm":
return `${folderPath}/xlsm.svg`;
case ".xlsx":
return `${folderPath}/xlsx.svg`;
case ".xps":
return `${folderPath}/xps.svg`;
case ".xml":
return `${folderPath}/xml.svg`;
case ".oform":
return `${folderPath}/oform.svg`;
case ".docxf":
return `${folderPath}/docxf.svg`;
default:
return `${folderPath}/file.svg`;
}
};
getFileIcon = (
extension,
size = 32,
archive = false,
image = false,
sound = false,
html = false
) => {
const folderPath = `/static/images/icons/${size}`;
if (archive) return `${folderPath}/file_archive.svg`;
if (image) return `${folderPath}/image.svg`;
if (sound) return `${folderPath}/sound.svg`;
if (html) return `${folderPath}/html.svg`;
return this.getIconUrl(extension, folderPath);
};
getIconSrc = (ext, size = 24) => {
const folderPath = `/static/images/icons/${size}`;
if (presentInArray(this.extsArchive, ext, true))
return `${folderPath}/file_archive.svg`;
if (presentInArray(this.extsImage, ext, true))
return `${folderPath}/image.svg`;
if (presentInArray(this.extsAudio, ext, true))
return `${folderPath}/sound.svg`;
if (presentInArray(this.html, ext, true)) return `${folderPath}/html.svg`;
const extension = ext.toLowerCase();
return this.getIconUrl(extension, folderPath);
};
}
export default SettingsStore;

View File

@ -19,7 +19,6 @@ import {
} from "@appserver/common/api/files";
import toastr from "studio/toastr";
class UploadDataStore {
formatsStore;
treeFoldersStore;
selectedFolderStore;
filesStore;
@ -46,7 +45,6 @@ class UploadDataStore {
isUploadingAndConversion = false;
constructor(
formatsStore,
treeFoldersStore,
selectedFolderStore,
filesStore,
@ -56,7 +54,6 @@ class UploadDataStore {
settingsStore
) {
makeAutoObservable(this);
this.formatsStore = formatsStore;
this.treeFoldersStore = treeFoldersStore;
this.selectedFolderStore = selectedFolderStore;
this.filesStore = filesStore;
@ -440,7 +437,7 @@ class UploadDataStore {
};
startUpload = (uploadFiles, folderId, t) => {
const { canConvert } = this.formatsStore.docserviceStore;
const { canConvert } = this.settingsStore;
const toFolderId = folderId ? folderId : this.selectedFolderStore.id;

View File

@ -5,10 +5,6 @@ import TreeFoldersStore from "./TreeFoldersStore";
import thirdPartyStore from "./ThirdPartyStore";
import SettingsStore from "./SettingsStore";
import FilesActionsStore from "./FilesActionsStore";
import FormatsStore from "./FormatsStore";
import iconFormatsStore from "./IconFormatsStore";
import mediaViewersFormatsStore from "./MediaViewersFormatsStore";
import docserviceStore from "./DocserviceStore";
import MediaViewerDataStore from "./MediaViewerDataStore";
import UploadDataStore from "./UploadDataStore";
import SecondaryProgressDataStore from "./SecondaryProgressDataStore";
@ -19,12 +15,6 @@ import DialogsStore from "./DialogsStore";
import selectedFilesStore from "./SelectedFilesStore";
import store from "studio/store";
const formatsStore = new FormatsStore(
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore
);
const selectedFolderStore = new SelectedFolderStore(store.auth.settingsStore);
const treeFoldersStore = new TreeFoldersStore(selectedFolderStore);
@ -38,11 +28,13 @@ const filesStore = new FilesStore(
fileActionStore,
selectedFolderStore,
treeFoldersStore,
formatsStore,
settingsStore,
selectedFilesStore
);
const mediaViewerDataStore = new MediaViewerDataStore(filesStore, formatsStore);
const mediaViewerDataStore = new MediaViewerDataStore(
filesStore,
settingsStore
);
const secondaryProgressDataStore = new SecondaryProgressDataStore();
const primaryProgressDataStore = new PrimaryProgressDataStore();
@ -54,7 +46,6 @@ const dialogsStore = new DialogsStore(
selectedFolderStore
);
const uploadDataStore = new UploadDataStore(
formatsStore,
treeFoldersStore,
selectedFolderStore,
filesStore,
@ -82,7 +73,6 @@ const stores = {
filesStore,
settingsStore,
mediaViewerDataStore,
formatsStore,
versionHistoryStore,
uploadDataStore,
dialogsStore,