Web: Files: created formatsStore

This commit is contained in:
Nikita Gopienko 2021-02-16 12:01:51 +03:00
parent b37ee479e1
commit a1fc390bc2
14 changed files with 630 additions and 675 deletions

View File

@ -23,5 +23,5 @@ const ArticleHeaderContent = ({ currentModuleName }) => {
// export default connect(mapStateToProps)(ArticleHeaderContent);
export default inject(({ store }) => ({
currentProductName: (store.product && store.product.title) || "",
currentModuleName: (store.product && store.product.title) || "",
}))(observer(ArticleHeaderContent));

View File

@ -100,9 +100,8 @@ class BadgesFileTile extends React.PureComponent {
// };
// };
export default inject(({ mainFilesStore }, { item }) => {
const { filesStore } = mainFilesStore;
const { docserviceStore } = filesStore;
export default inject(({ formatsStore }, { item }) => {
const { docserviceStore } = formatsStore;
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const canConvert = docserviceStore.canConvert(item.fileExst);

View File

@ -797,10 +797,16 @@ class FilesRowContent extends React.PureComponent {
// replaceFileStream,
// })(withRouter(withTranslation()(FilesRowContent)));
export default inject(({ store, mainFilesStore }, { item }) => {
export default inject(({ store, mainFilesStore, formatsStore }, { item }) => {
const { replaceFileStream, getEncryptionAccess, setEncryptionAccess } = store;
const { homepage, culture, isDesktopClient } = store.settingsStore;
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const {
folders,
fetchFiles,
@ -808,9 +814,6 @@ export default inject(({ store, mainFilesStore }, { item }) => {
filter,
selectedFolderStore,
secondaryProgressDataStore,
docserviceStore,
mediaViewersFormatsStore,
formatsStore,
setNewRowItems,
newRowItems,
createFile,
@ -836,8 +839,8 @@ export default inject(({ store, mainFilesStore }, { item }) => {
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const canConvert = docserviceStore.canConvert(item.fileExst);
const isVideo = mediaViewersFormatsStore.isVideo(item.fileExst);
const isImage = formatsStore.isImage(item.fileExst);
const isSound = formatsStore.isSound(item.fileExst);
const isImage = iconFormatsStore.isImage(item.fileExst);
const isSound = iconFormatsStore.isSound(item.fileExst);
return {
isDesktop: isDesktopClient,

View File

@ -470,17 +470,19 @@ class FilesTileContent extends React.PureComponent {
// fetchFiles,
// })(withRouter(withTranslation()(FilesTileContent)));
export default inject(({ store, mainFilesStore }, { item }) => {
export default inject(({ store, mainFilesStore, formatsStore }, { item }) => {
const { homepage, culture } = store.settingsStore;
const { filesStore, setIsLoading, isLoading, dragging } = mainFilesStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const {
folders,
fetchFiles,
treeFoldersStore,
filter,
docserviceStore,
mediaViewersFormatsStore,
formatsStore,
newRowItems,
createFile,
updateFile,
@ -495,8 +497,8 @@ export default inject(({ store, mainFilesStore }, { item }) => {
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const isVideo = mediaViewersFormatsStore.isVideo(item.fileExst);
const isImage = formatsStore.isImage(item.fileExst);
const isSound = formatsStore.isSound(item.fileExst);
const isImage = iconFormatsStore.isImage(item.fileExst);
const isSound = iconFormatsStore.isSound(item.fileExst);
return {
culture,

View File

@ -2201,163 +2201,175 @@ SectionBodyContent.defaultProps = {
// setChangeOwnerPanelVisible,
// })(withRouter(withTranslation()(SectionBodyContent)));
export default inject(({ store, mainFilesStore, settingsStore }) => {
const { providers, capabilities } = settingsStore.thirdPartyStore;
const {
homepage,
culture,
isEncryptionSupport,
isTabletView,
organizationName,
isDesktopClient,
} = store.settingsStore;
const {
dragging,
setDragging,
filesStore,
setIsLoading,
viewAs,
dragItem,
setDragItem,
privacyInstructions,
tooltipValue,
} = mainFilesStore;
const {
files,
folders,
selected,
setSelected,
firstLoad,
filesList,
fetchFiles,
setSelection,
selection,
selectFile,
deselectFile,
filter,
fileActionStore,
treeFoldersStore,
export default inject(
({
store,
mainFilesStore,
settingsStore,
mediaViewerDataStore,
secondaryProgressDataStore,
dialogsStore,
versionHistoryStore,
selectedFolderStore,
mediaViewersFormatsStore,
addFileToRecentlyViewed,
updateFile,
currentFolderCount,
iconOfDraggedFile,
markItemAsFavorite,
removeItemFromFavorite,
fetchFavoritesFolder,
getFileInfo,
loopFilesOperations,
} = filesStore;
formatsStore,
}) => {
const { providers, capabilities } = settingsStore.thirdPartyStore;
const { mediaViewersFormatsStore } = formatsStore;
const {
homepage,
culture,
isEncryptionSupport,
isTabletView,
organizationName,
isDesktopClient,
} = store.settingsStore;
const {
dragging,
setDragging,
filesStore,
setIsLoading,
viewAs,
dragItem,
setDragItem,
privacyInstructions,
tooltipValue,
} = mainFilesStore;
const {
files,
folders,
selected,
setSelected,
firstLoad,
filesList,
fetchFiles,
setSelection,
selection,
selectFile,
deselectFile,
filter,
fileActionStore,
treeFoldersStore,
secondaryProgressDataStore,
dialogsStore,
versionHistoryStore,
selectedFolderStore,
addFileToRecentlyViewed,
updateFile,
currentFolderCount,
iconOfDraggedFile,
markItemAsFavorite,
removeItemFromFavorite,
fetchFavoritesFolder,
getFileInfo,
loopFilesOperations,
} = filesStore;
const {
treeFolders,
setTreeFolders,
myFolderId,
isMyFolder,
isRecycleBinFolder,
isShareFolder,
isFavoritesFolder,
isCommonFolder,
isRecentFolder,
isPrivacyFolder,
} = treeFoldersStore;
const {
treeFolders,
setTreeFolders,
myFolderId,
isMyFolder,
isRecycleBinFolder,
isShareFolder,
isFavoritesFolder,
isCommonFolder,
isRecentFolder,
isPrivacyFolder,
} = treeFoldersStore;
const { type, extension, id, setAction } = fileActionStore;
const { type, extension, id, setAction } = fileActionStore;
const fileAction = { type, extension, id };
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const fileAction = { type, extension, id };
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const {
sharingPanelVisible,
setChangeOwnerPanelVisible,
setSharingPanelVisible,
} = dialogsStore;
const {
sharingPanelVisible,
setChangeOwnerPanelVisible,
setSharingPanelVisible,
} = dialogsStore;
const {
isVisible: isVersionHistoryPanel,
setIsVerHistoryPanel,
setVerHistoryFileId,
} = versionHistoryStore;
const {
isVisible: isVersionHistoryPanel,
setIsVerHistoryPanel,
setVerHistoryFileId,
} = versionHistoryStore;
const { images, media } = mediaViewersFormatsStore;
const { images, media } = mediaViewersFormatsStore;
const {
id: currentMediaFileId,
visible: mediaViewerVisible,
setMediaViewerData,
} = mediaViewerDataStore;
return {
isAdmin: store.isAdmin,
homepage,
culture,
isEncryptionSupport,
isTabletView,
viewer: store.userStore.user,
organizationName,
isDesktop: isDesktopClient,
dragging,
fileAction,
files,
folders,
selected,
firstLoad,
filesList,
title: selectedFolderStore.title,
parentId: selectedFolderStore.parentId,
selectedFolderId: selectedFolderStore.id,
selection,
treeFolders,
isRecycleBin: isRecycleBinFolder,
myDocumentsId: myFolderId,
isShare: isShareFolder,
isFavorites: isFavoritesFolder,
isCommon: isCommonFolder,
isRecent: isRecentFolder,
isMy: isMyFolder,
isPrivacy: isPrivacyFolder,
filter,
viewAs,
dragItem,
currentMediaFileId: mediaViewerDataStore.id,
mediaViewerVisible: mediaViewerDataStore.visible,
sharingPanelVisible,
isVersionHistoryPanel,
privacyInstructions,
isRootFolder: selectedFolderStore.isRootFolder,
mediaViewerImageFormats: images,
mediaViewerMediaFormats: media,
providers,
capabilities,
currentFolderCount,
iconOfDraggedFile,
tooltipValue,
return {
isAdmin: store.isAdmin,
homepage,
culture,
isEncryptionSupport,
isTabletView,
viewer: store.userStore.user,
organizationName,
isDesktop: isDesktopClient,
dragging,
fileAction,
files,
folders,
selected,
firstLoad,
filesList,
title: selectedFolderStore.title,
parentId: selectedFolderStore.parentId,
selectedFolderId: selectedFolderStore.id,
selection,
treeFolders,
isRecycleBin: isRecycleBinFolder,
myDocumentsId: myFolderId,
isShare: isShareFolder,
isFavorites: isFavoritesFolder,
isCommon: isCommonFolder,
isRecent: isRecentFolder,
isMy: isMyFolder,
isPrivacy: isPrivacyFolder,
filter,
viewAs,
dragItem,
currentMediaFileId,
mediaViewerVisible,
sharingPanelVisible,
isVersionHistoryPanel,
privacyInstructions,
isRootFolder: selectedFolderStore.isRootFolder,
mediaViewerImageFormats: images,
mediaViewerMediaFormats: media,
providers,
capabilities,
currentFolderCount,
iconOfDraggedFile,
tooltipValue,
setDragging,
setAction,
setSelected,
setIsLoading,
setSelection,
fetchFiles,
selectFile,
deselectFile,
setTreeFolders,
setDragItem,
setMediaViewerData: mediaViewerDataStore.setMediaViewerData,
setSecondaryProgressBarData,
setChangeOwnerPanelVisible,
setSharingPanelVisible,
clearSecondaryProgressData,
setIsVerHistoryPanel,
setVerHistoryFileId,
addFileToRecentlyViewed,
updateFile,
markItemAsFavorite,
removeItemFromFavorite,
fetchFavoritesFolder,
getFileInfo,
loopFilesOperations,
};
})(withRouter(withTranslation()(observer(SectionBodyContent))));
setDragging,
setAction,
setSelected,
setIsLoading,
setSelection,
fetchFiles,
selectFile,
deselectFile,
setTreeFolders,
setDragItem,
setMediaViewerData,
setSecondaryProgressBarData,
setChangeOwnerPanelVisible,
setSharingPanelVisible,
clearSecondaryProgressData,
setIsVerHistoryPanel,
setVerHistoryFileId,
addFileToRecentlyViewed,
updateFile,
markItemAsFavorite,
removeItemFromFavorite,
fetchFavoritesFolder,
getFileInfo,
loopFilesOperations,
};
}
)(withRouter(withTranslation()(observer(SectionBodyContent))));

View File

@ -332,7 +332,7 @@ const NewFilesPanel = (props) => (
// setIsLoading,
// })(withRouter(NewFilesPanel));
export default inject(({ store, mainFilesStore }) => {
export default inject(({ mainFilesStore, mediaViewerDataStore }) => {
const { filesStore, setIsLoading } = mainFilesStore;
const {
files,
@ -340,7 +340,6 @@ export default inject(({ store, mainFilesStore }) => {
fetchFiles,
treeFoldersStore,
filter,
mediaViewerDataStore,
addFileToRecentlyViewed,
setNewRowItems,
} = filesStore;

View File

@ -199,7 +199,7 @@ const FileRow = (props) => {
// };
// };
export default inject(({ mainFilesStore }, { item }) => {
export default inject(({ mainFilesStore, formatsStore }, { item }) => {
let ext;
let name;
let splitted;
@ -214,17 +214,16 @@ export default inject(({ mainFilesStore }, { item }) => {
}
const { filesStore } = mainFilesStore;
const { iconFormatsStore, mediaViewersFormatsStore } = formatsStore;
const {
uploadDataStore,
mediaViewersFormatsStore,
formatsStore,
cancelCurrentUpload,
primaryProgressDataStore,
} = filesStore;
const { uploaded } = uploadDataStore;
const { loadingFile } = primaryProgressDataStore;
const isMedia = mediaViewersFormatsStore.isMediaOrImage(ext);
const fileIcon = formatsStore.getIconSrc(ext, 24);
const fileIcon = iconFormatsStore.getIconSrc(ext, 24);
const currentFileUploadProgress =
loadingFile && loadingFile.uniqueId === item.uniqueId

View File

@ -13,6 +13,8 @@ import { ErrorBoundary, store as commonStore } from "asc-web-common";
import { Provider as MobxProvider } from "mobx-react";
import mainFilesStore from "./store/MainFilesStore";
import settingsStore from "./store/SettingsStore";
import mediaViewerDataStore from "./store/MediaViewerDataStore";
import formatsStore from "./store/FormatsStore";
const { authStore } = commonStore;
@ -21,6 +23,8 @@ ReactDOM.render(
store={authStore}
mainFilesStore={mainFilesStore}
settingsStore={settingsStore}
mediaViewerDataStore={mediaViewerDataStore}
formatsStore={formatsStore}
>
<ErrorBoundary>
<App />

View File

@ -4,17 +4,29 @@ import axios from "axios";
import FileActionStore from "./FileActionStore";
import SelectedFolderStore from "./SelectedFolderStore";
import TreeFoldersStore from "./TreeFoldersStore";
import FormatsStore from "./FormatsStore";
import MediaViewersFormatsStore from "./MediaViewersFormatsStore";
import DocserviceStore from "./DocserviceStore";
import MediaViewerDataStore from "./MediaViewerDataStore";
import PrimaryProgressDataStore from "./PrimaryProgressDataStore";
import SecondaryProgressDataStore from "./SecondaryProgressDataStore";
import DialogsStore from "./DialogsStore";
import VersionHistoryStore from "./VersionHistoryStore";
import UploadDataStore from "./UploadDataStore";
import formatsStore from "./FormatsStore";
import { createTreeFolders } from "./files/selectors";
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const { isSpreadsheet, isPresentation } = iconFormatsStore;
const { getIcon } = iconFormatsStore;
const {
canWebEdit,
canWebComment,
canWebReview,
canFormFillingDocs,
canWebFilterEditing,
} = docserviceStore;
const { FilesFilter } = api;
const { FolderType, FilterType, FileType } = constants;
const { authStore } = store;
@ -25,10 +37,6 @@ class FilesStore {
fileActionStore = null;
selectedFolderStore = null;
treeFoldersStore = null;
formatsStore = null;
mediaViewersFormatsStore = null;
docserviceStore = null;
mediaViewerDataStore = null;
primaryProgressDataStore = null;
secondaryProgressDataStore = null;
dialogsStore = null;
@ -49,10 +57,6 @@ class FilesStore {
fileActionStore: observable,
selectedFolderStore: observable,
treeFoldersStore: observable,
formatsStore: observable,
mediaViewersFormatsStore: observable,
docserviceStore: observable,
mediaViewerDataStore: observable, //TODO: MainFiles?
primaryProgressDataStore: observable, //TODO: MainFiles?
secondaryProgressDataStore: observable, //TODO: MainFiles?
dialogsStore: observable, //TODO: MainFiles?
@ -112,10 +116,6 @@ class FilesStore {
this.fileActionStore = new FileActionStore();
this.selectedFolderStore = new SelectedFolderStore();
this.treeFoldersStore = new TreeFoldersStore();
this.formatsStore = new FormatsStore();
this.mediaViewersFormatsStore = new MediaViewersFormatsStore();
this.docserviceStore = new DocserviceStore();
this.mediaViewerDataStore = new MediaViewerDataStore();
this.primaryProgressDataStore = new PrimaryProgressDataStore();
this.secondaryProgressDataStore = new SecondaryProgressDataStore();
this.dialogsStore = new DialogsStore();
@ -518,7 +518,7 @@ class FilesStore {
get iconOfDraggedFile() {
if (this.selection.length === 1) {
const icon = this.formatsStore.getIcon(
const icon = getIcon(
24,
this.selection[0].fileExst,
this.selection[0].providerKey
@ -619,7 +619,7 @@ class FilesStore {
providerKey,
} = item;
const canOpenPlayer = this.mediaViewersFormatsStore.isMediaOrImage(
const canOpenPlayer = mediaViewersFormatsStore.isMediaOrImage(
item.fileExst
);
@ -646,8 +646,8 @@ class FilesStore {
let value = fileExst ? `file_${id}` : `folder_${id}`;
value += draggable ? "_draggable" : "";
const isCanWebEdit = this.docserviceStore.canWebEdit(item.fileExst);
const icon = this.formatsStore.getIcon(24, fileExst, providerKey);
const isCanWebEdit = canWebEdit(item.fileExst);
const icon = getIcon(24, fileExst, providerKey);
return {
access,
@ -702,9 +702,6 @@ class FilesStore {
other: [],
};
const { isSpreadsheet, isPresentation } = this.formatsStore;
const { canWebEdit } = this.docserviceStore;
for (let item of this.selection) {
item.checked = true;
item.format = formatKeys.OriginalFormat;
@ -767,7 +764,7 @@ class FilesStore {
get isWebEditSelected() {
return this.selection.some((selected) => {
if (selected.isFolder === true || !selected.fileExst) return false;
return this.docserviceStore.editedDocs.find(
return docserviceStore.editedDocs.find(
(format) => selected.fileExst === format
);
});
@ -779,14 +776,6 @@ class FilesStore {
}
getOptions = (selection, externalAccess = false) => {
const {
canWebEdit,
canWebComment,
canWebReview,
canFormFillingDocs,
canWebFilterEditing,
} = this.docserviceStore;
const webEdit = selection.find((x) => canWebEdit(x.fileExst));
const webComment = selection.find((x) => canWebComment(x.fileExst));
const webReview = selection.find((x) => canWebReview(x.fileExst));

View File

@ -1,475 +1,24 @@
import { makeObservable } from "mobx";
import { presentInArray } from "../store/files/selectors";
import { makeObservable, observable } from "mobx";
import IconFormatsStore from "./IconFormatsStore";
import MediaViewersFormatsStore from "./MediaViewersFormatsStore";
import DocserviceStore from "./DocserviceStore";
class FormatsStore {
archive = [
".zip",
".rar",
".ace",
".arc",
".arj",
".bh",
".cab",
".enc",
".gz",
".ha",
".jar",
".lha",
".lzh",
".pak",
".pk3",
".tar",
".tgz",
".gz",
".uu",
".uue",
".xxe",
".z",
".zoo",
];
image = [
".bmp",
".cod",
".gif",
".ief",
".jpe",
".jpg",
".tif",
".cmx",
".ico",
".pnm",
".pbm",
".ppm",
".psd",
".rgb",
".xbm",
".xpm",
".xwd",
".png",
".ai",
".jpeg",
];
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",
];
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",
];
iconFormatsStore = null;
mediaViewersFormatsStore = null;
docserviceStore = null;
constructor() {
makeObservable(this, {});
makeObservable(this, {
iconFormatsStore: observable,
mediaViewersFormatsStore: observable,
docserviceStore: observable,
});
this.iconFormatsStore = new IconFormatsStore();
this.mediaViewersFormatsStore = new MediaViewersFormatsStore();
this.docserviceStore = new DocserviceStore();
}
/*
export const getArchiveFormats = (state) => {
return state.files.formats.archive;
};
export const getImageFormats = (state) => {
return state.files.formats.image;
};
export const getSoundFormats = (state) => {
return state.files.formats.sound;
};
export const getVideoFormats = (state) => {
return state.files.formats.video;
};
export const getHtmlFormats = (state) => {
return state.files.formats.html;
};
export const getEbookFormats = (state) => {
return state.files.formats.ebook;
};
export const getDocumentFormats = (state) => {
return state.files.formats.document;
};
export const getPresentationFormats = (state) => {
return state.files.formats.presentation;
};
export const getSpreadsheetFormats = (state) => {
return state.files.formats.spreadsheet;
};
*/
// canWebEdit = (extension) => {
// return createSelector(getEditedFormats, (formats) => {
// return presentInArray(formats, extension);
// });
// };
// canWebComment = (extension) => {
// return createSelector(getCommentedFormats, (formats) => {
// return presentInArray(formats, extension);
// });
// };
// canWebReview = (extension) => {
// return createSelector(getReviewedFormats, (formats) => {
// return presentInArray(formats, extension);
// });
// };
// canWebFilterEditing = (extension) => {
// return createSelector(getWebFilterFormats, (formats) => {
// return presentInArray(formats, extension);
// });
// };
// canFormFillingDocs = (extension) => {
// return createSelector(getFormFillingFormats, (formats) => {
// return presentInArray(formats, extension);
// });
// };
// canConvert = (extension) => {
// return createSelector(getConvertedFormats, (formats) => {
// return presentInArray(formats, extension);
// });
// };
isArchive = (extension) => presentInArray(this.archive, extension);
isImage = (extension) => presentInArray(this.image, extension);
isSound = (extension) => presentInArray(this.sound, extension);
// isVideo = (extension) => {
// return createSelector(getMediaViewerMediaFormats, (formats) => {
// return presentInArray(formats, 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) => {
if (fileExst) {
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`;
}
};
getFileIcon = (
extension,
size = 32,
archive = false,
image = false,
sound = false,
html = false
) => {
const folderPath = `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`;
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 ".docx":
return `${folderPath}/docx.svg`;
case ".dvd":
return `${folderPath}/dvd.svg`;
case ".epub":
return `${folderPath}/epub.svg`;
case ".pb2":
return `${folderPath}/fb2.svg`;
case ".flv":
return `${folderPath}/flv.svg`;
case ".iaf":
return `${folderPath}/iaf.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 ".pdf":
return `${folderPath}/pdf.svg`;
case ".pps":
return `${folderPath}/pps.svg`;
case ".ppsx":
return `${folderPath}/ppsx.svg`;
case ".ppt":
return `${folderPath}/ppt.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 ".xlsx":
return `${folderPath}/xlsx.svg`;
case ".xps":
return `${folderPath}/xps.svg`;
case ".xml":
return `${folderPath}/xml.svg`;
default:
return `${folderPath}/file.svg`;
}
};
getIconSrc = (ext, size = 24) => {
const folderPath = `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();
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 ".docx":
return `${folderPath}/docx.svg`;
case ".dvd":
return `${folderPath}/dvd.svg`;
case ".epub":
return `${folderPath}/epub.svg`;
case ".pb2":
return `${folderPath}/fb2.svg`;
case ".flv":
return `${folderPath}/flv.svg`;
case ".iaf":
return `${folderPath}/iaf.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 ".pdf":
return `${folderPath}/pdf.svg`;
case ".pps":
return `${folderPath}/pps.svg`;
case ".ppsx":
return `${folderPath}/ppsx.svg`;
case ".ppt":
return `${folderPath}/ppt.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 ".xlsx":
return `${folderPath}/xlsx.svg`;
case ".xps":
return `${folderPath}/xps.svg`;
case ".xml":
return `${folderPath}/xml.svg`;
default:
return `${folderPath}/file.svg`;
}
};
}
export default FormatsStore;
export default new FormatsStore();

View File

@ -0,0 +1,398 @@
import { makeObservable, makeAutoObservable } from "mobx";
import { presentInArray } from "../store/files/selectors";
class IconFormatsStore {
archive = [
".zip",
".rar",
".ace",
".arc",
".arj",
".bh",
".cab",
".enc",
".gz",
".ha",
".jar",
".lha",
".lzh",
".pak",
".pk3",
".tar",
".tgz",
".gz",
".uu",
".uue",
".xxe",
".z",
".zoo",
];
image = [
".bmp",
".cod",
".gif",
".ief",
".jpe",
".jpg",
".tif",
".cmx",
".ico",
".pnm",
".pbm",
".ppm",
".psd",
".rgb",
".xbm",
".xpm",
".xwd",
".png",
".ai",
".jpeg",
];
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",
];
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) => {
if (fileExst) {
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`;
}
};
getFileIcon = (
extension,
size = 32,
archive = false,
image = false,
sound = false,
html = false
) => {
const folderPath = `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`;
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 ".docx":
return `${folderPath}/docx.svg`;
case ".dvd":
return `${folderPath}/dvd.svg`;
case ".epub":
return `${folderPath}/epub.svg`;
case ".pb2":
return `${folderPath}/fb2.svg`;
case ".flv":
return `${folderPath}/flv.svg`;
case ".iaf":
return `${folderPath}/iaf.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 ".pdf":
return `${folderPath}/pdf.svg`;
case ".pps":
return `${folderPath}/pps.svg`;
case ".ppsx":
return `${folderPath}/ppsx.svg`;
case ".ppt":
return `${folderPath}/ppt.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 ".xlsx":
return `${folderPath}/xlsx.svg`;
case ".xps":
return `${folderPath}/xps.svg`;
case ".xml":
return `${folderPath}/xml.svg`;
default:
return `${folderPath}/file.svg`;
}
};
getIconSrc = (ext, size = 24) => {
const folderPath = `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();
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 ".docx":
return `${folderPath}/docx.svg`;
case ".dvd":
return `${folderPath}/dvd.svg`;
case ".epub":
return `${folderPath}/epub.svg`;
case ".pb2":
return `${folderPath}/fb2.svg`;
case ".flv":
return `${folderPath}/flv.svg`;
case ".iaf":
return `${folderPath}/iaf.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 ".pdf":
return `${folderPath}/pdf.svg`;
case ".pps":
return `${folderPath}/pps.svg`;
case ".ppsx":
return `${folderPath}/ppsx.svg`;
case ".ppt":
return `${folderPath}/ppt.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 ".xlsx":
return `${folderPath}/xlsx.svg`;
case ".xps":
return `${folderPath}/xps.svg`;
case ".xml":
return `${folderPath}/xml.svg`;
default:
return `${folderPath}/file.svg`;
}
};
}
export default IconFormatsStore;

View File

@ -19,4 +19,4 @@ class MediaViewerDataStore {
};
}
export default MediaViewerDataStore;
export default new MediaViewerDataStore();

View File

@ -50,7 +50,7 @@ class SettingsStore {
for (let item of capabilities) {
item.splice(1, 1);
}
this.thirdPartyStore.setThirdPartyCapabilities(capabilities);
//this.thirdPartyStore.setThirdPartyCapabilities(capabilities); //TODO: Out of bounds read: 1
this.thirdPartyStore.setThirdPartyProviders(providers);
});
}

View File

@ -26,6 +26,7 @@ class AuthStore {
isAdmin: computed,
isLoaded: computed,
language: computed,
product: computed,
userStore: observable,
moduleStore: observable,
settingsStore: observable,