Web: Files: added context options to files row, added tree menu
This commit is contained in:
parent
09665b1a9d
commit
7f8a95058f
@ -17,8 +17,8 @@ import {
|
||||
Offline,
|
||||
NavMenu,
|
||||
Main,
|
||||
//utils,
|
||||
//toastr,
|
||||
utils,
|
||||
toastr,
|
||||
Layout,
|
||||
regDesktop,
|
||||
} from "asc-web-common";
|
||||
@ -54,7 +54,13 @@ class App extends React.Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.props.loadFilesInfo();
|
||||
this.props
|
||||
.loadFilesInfo()
|
||||
.catch((err) => toastr.error(err))
|
||||
.finally(() => {
|
||||
this.props.setIsLoaded(true);
|
||||
utils.updateTempContent();
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
@ -234,16 +240,18 @@ class App extends React.Component {
|
||||
// };
|
||||
|
||||
export default inject(({ store, mainFilesStore }) => ({
|
||||
isDesktop: store.settingsStore.isDesktopClient,
|
||||
user: store.userStore.user,
|
||||
isAuthenticated: store.isAuthenticated,
|
||||
homepage: store.settingsStore.homepage || config.homepage,
|
||||
encryptionKeys: store.settingsStore.encryptionKeys,
|
||||
isEncryptionSupport: store.settingsStore.isEncryptionSupport,
|
||||
isEncryption: store.settingsStore.isEncryptionSupport,
|
||||
isLoaded: mainFilesStore.isLoaded,
|
||||
|
||||
setIsLoaded: mainFilesStore.setIsLoaded,
|
||||
setEncryptionKeys: store.settingsStore.setEncryptionKeys,
|
||||
loadFilesInfo: async () => {
|
||||
await store.init();
|
||||
mainFilesStore.initFiles();
|
||||
await mainFilesStore.initFiles();
|
||||
},
|
||||
}))(observer(App));
|
||||
|
@ -2,32 +2,36 @@ import React from "react";
|
||||
import { TreeMenu, TreeNode, Icons } from "asc-web-components";
|
||||
import styled from "styled-components";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { api, constants, toastr, store as initStore } from "asc-web-common";
|
||||
import {
|
||||
api,
|
||||
constants,
|
||||
toastr /* store as initStore */,
|
||||
} from "asc-web-common";
|
||||
import { connect } from "react-redux";
|
||||
import {
|
||||
setFilter,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setDragItem,
|
||||
//setDragging,
|
||||
//setIsLoading,
|
||||
setUpdateTree,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
getFilter,
|
||||
//getDragging,
|
||||
getUpdateTree,
|
||||
//getSelectedFolderId,
|
||||
getMyFolderId,
|
||||
getShareFolderId,
|
||||
//getMyFolderId,
|
||||
//getShareFolderId,
|
||||
//getRootFolderId,
|
||||
getDraggableItems,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
} from "../../../store/files/selectors";
|
||||
import { onConvertFiles } from "../../../helpers/files-converter";
|
||||
import { observer, inject } from "mobx-react";
|
||||
|
||||
const { isAdmin, isDesktopClient } = initStore.auth.selectors;
|
||||
//const { isAdmin, isDesktopClient } = initStore.auth.selectors;
|
||||
|
||||
const { files } = api;
|
||||
const { FolderType, ShareAccessRights } = constants;
|
||||
@ -499,25 +503,25 @@ TreeFolders.defaultProps = {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
treeFolders: getTreeFolders(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
filter: getFilter(state),
|
||||
myId: getMyFolderId(state),
|
||||
commonId: getShareFolderId(state),
|
||||
//myId: getMyFolderId(state),
|
||||
//commonId: getShareFolderId(state),
|
||||
//currentId: getSelectedFolderId(state),
|
||||
isAdmin: isAdmin(state),
|
||||
//isAdmin: isAdmin(state),
|
||||
//dragging: getDragging(state),
|
||||
updateTree: getUpdateTree(state),
|
||||
//rootFolderId: getRootFolderId(state),
|
||||
draggableItems: getDraggableItems(state),
|
||||
isDesktop: isDesktopClient(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
//isDesktop: isDesktopClient(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
};
|
||||
}
|
||||
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
setFilter: (filter) => dispatch(setFilter(filter)),
|
||||
setTreeFolders: (treeFolders) => dispatch(setTreeFolders(treeFolders)),
|
||||
//setTreeFolders: (treeFolders) => dispatch(setTreeFolders(treeFolders)),
|
||||
setDragItem: (dragItem) => dispatch(setDragItem(dragItem)),
|
||||
//setDragging: (dragging) => dispatch(setDragging(dragging)),
|
||||
//setIsLoading: (isLoading) => dispatch(setIsLoading(isLoading)),
|
||||
@ -533,15 +537,31 @@ export default connect(
|
||||
)(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore, setIsLoading, dragging, setDragging } = mainFilesStore;
|
||||
const { pathParts, id } = filesStore.selectedFolderStore;
|
||||
const { treeFoldersStore, selectedFolderStore } = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
isPrivacyFolder,
|
||||
} = treeFoldersStore;
|
||||
const { pathParts, id } = selectedFolderStore;
|
||||
|
||||
return {
|
||||
isAdmin: store.isAdmin,
|
||||
isDesktop: store.settingsStore.isDesktopClient,
|
||||
dragging,
|
||||
rootFolderId: pathParts,
|
||||
currentId: id,
|
||||
treeFolders,
|
||||
myId: myFolderId,
|
||||
commonId: commonFolderId,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
setDragging,
|
||||
setIsLoading,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(observer(TreeFolders))
|
||||
);
|
||||
|
@ -3,7 +3,7 @@ import { connect } from "react-redux";
|
||||
import { withRouter } from "react-router";
|
||||
import { TreeMenu, TreeNode, Icons } from "asc-web-components";
|
||||
import styled from "styled-components";
|
||||
import { history, utils, store as initStore } from "asc-web-common";
|
||||
import { history, utils /* , store as initStore */ } from "asc-web-common";
|
||||
import { withTranslation, I18nextProvider } from "react-i18next";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
|
||||
@ -22,7 +22,7 @@ import {
|
||||
//getSelectedTreeNode,
|
||||
} from "../../../store/files/selectors";
|
||||
import { inject, observer } from "mobx-react";
|
||||
const { isAdmin } = initStore.auth.selectors;
|
||||
//const { isAdmin } = initStore.auth.selectors;
|
||||
|
||||
const i18n = createI18N({
|
||||
page: "Settings",
|
||||
@ -210,7 +210,7 @@ function mapStateToProps(state) {
|
||||
selectedTreeNode: getSettingsSelectedTreeNode(state),
|
||||
expandedSetting: getExpandedSetting(state),
|
||||
enableThirdParty: getEnableThirdParty(state),
|
||||
isAdmin: isAdmin(state),
|
||||
//isAdmin: isAdmin(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
//selectedFolder: getSelectedTreeNode(state),
|
||||
};
|
||||
@ -236,6 +236,7 @@ export default connect(mapStateToProps, {
|
||||
const { setSelectedFolder } = filesStore.selectedFolderStore;
|
||||
|
||||
return {
|
||||
isAdmin: store.isAdmin,
|
||||
isLoading,
|
||||
|
||||
setIsLoading,
|
||||
|
@ -11,10 +11,10 @@ import {
|
||||
setSelectedNode,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
getFilter,
|
||||
//getSelectedFolderTitle,
|
||||
getSelectedTreeNode,
|
||||
//getSelectedTreeNode,
|
||||
} from "../../../store/files/selectors";
|
||||
import { NewFilesPanel } from "../../panels";
|
||||
import { setDocumentTitle } from "../../../helpers/utils";
|
||||
@ -38,20 +38,20 @@ class ArticleBodyContent extends React.Component {
|
||||
};
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
const { filter, treeFolders } = this.props;
|
||||
// componentDidUpdate(prevProps) {
|
||||
// const { filter, treeFolders } = this.props;
|
||||
|
||||
if (
|
||||
filter.treeFolders.length !== prevProps.filter.treeFolders.length ||
|
||||
this.state.expandedKeys.length !== filter.treeFolders.length
|
||||
) {
|
||||
this.setState({ expandedKeys: filter.treeFolders });
|
||||
}
|
||||
// if (
|
||||
// filter.treeFolders.length !== prevProps.filter.treeFolders.length ||
|
||||
// this.state.expandedKeys.length !== filter.treeFolders.length
|
||||
// ) {
|
||||
// this.setState({ expandedKeys: filter.treeFolders });
|
||||
// }
|
||||
|
||||
if (!utils.array.isArrayEqual(prevProps.treeFolders, treeFolders)) {
|
||||
this.setState({ data: treeFolders });
|
||||
}
|
||||
}
|
||||
// if (!utils.array.isArrayEqual(prevProps.treeFolders, treeFolders)) {
|
||||
// this.setState({ data: treeFolders });
|
||||
// }
|
||||
// }
|
||||
|
||||
componentDidMount() {
|
||||
if (this.props.currentId) {
|
||||
@ -108,7 +108,6 @@ class ArticleBodyContent extends React.Component {
|
||||
const { treeFolders, filter, onTreeDrop, selectedTreeNode } = this.props;
|
||||
const { showNewFilesPanel, expandedKeys, newFolderId } = this.state;
|
||||
|
||||
//console.log("Article Body render");
|
||||
return (
|
||||
<>
|
||||
{showNewFilesPanel && (
|
||||
@ -144,9 +143,9 @@ class ArticleBodyContent extends React.Component {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
treeFolders: getTreeFolders(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
filter: getFilter(state),
|
||||
selectedTreeNode: getSelectedTreeNode(state),
|
||||
//selectedTreeNode: getSelectedTreeNode(state),
|
||||
//selectedFolderTitle: getSelectedFolderTitle(state),
|
||||
};
|
||||
}
|
||||
@ -166,10 +165,14 @@ export default connect(
|
||||
)(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { setIsLoading, filesStore } = mainFilesStore;
|
||||
const { fetchFiles } = filesStore;
|
||||
const { fetchFiles, treeFoldersStore, selectedFolderStore } = filesStore;
|
||||
const { treeFolders } = treeFoldersStore;
|
||||
const selectedTreeNode = [selectedFolderStore.id + ""];
|
||||
|
||||
return {
|
||||
selectedFolderTitle: filesStore.selectedFolderStore.title,
|
||||
selectedFolderTitle: selectedFolderStore.title,
|
||||
treeFolders,
|
||||
selectedTreeNode,
|
||||
|
||||
setIsLoading,
|
||||
fetchFiles,
|
||||
|
@ -1,8 +1,9 @@
|
||||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { store, Headline, Loaders } from "asc-web-common";
|
||||
//import { connect } from "react-redux";
|
||||
import { /* store, */ Headline, Loaders } from "asc-web-common";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const { getCurrentProductName } = store.auth.selectors;
|
||||
//const { getCurrentProductName } = store.auth.selectors;
|
||||
|
||||
const ArticleHeaderContent = ({ currentModuleName }) => {
|
||||
return currentModuleName ? (
|
||||
@ -12,11 +13,15 @@ const ArticleHeaderContent = ({ currentModuleName }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const currentModuleName = getCurrentProductName(state);
|
||||
return {
|
||||
currentModuleName,
|
||||
};
|
||||
};
|
||||
// const mapStateToProps = (state) => {
|
||||
// const currentModuleName = getCurrentProductName(state);
|
||||
// return {
|
||||
// currentModuleName,
|
||||
// };
|
||||
// };
|
||||
|
||||
export default connect(mapStateToProps)(ArticleHeaderContent);
|
||||
// export default connect(mapStateToProps)(ArticleHeaderContent);
|
||||
|
||||
export default inject(({ store }) => ({
|
||||
currentProductName: (store.product && store.product.title) || "",
|
||||
}))(observer(ArticleHeaderContent));
|
||||
|
@ -11,12 +11,12 @@ import {
|
||||
getFilter,
|
||||
//getSelectedFolder,
|
||||
//getFirstLoad,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
} from "../../../store/files/selectors";
|
||||
import {
|
||||
utils as commonUtils,
|
||||
constants,
|
||||
store as initStore,
|
||||
//store as initStore,
|
||||
Loaders,
|
||||
} from "asc-web-common";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
@ -25,7 +25,7 @@ import { inject, observer } from "mobx-react";
|
||||
|
||||
//const { settingsStore } = initStore;
|
||||
|
||||
const { getSettings } = initStore.auth.selectors;
|
||||
//const { getSettings } = initStore.auth.selectors;
|
||||
const i18n = createI18N({
|
||||
page: "Article",
|
||||
localesPath: "Article",
|
||||
@ -186,23 +186,26 @@ const mapStateToProps = (state) => {
|
||||
return {
|
||||
canCreate: canCreate(state),
|
||||
//firstLoad: getFirstLoad(state),
|
||||
settings: getSettings(state),
|
||||
//settings: getSettings(state),
|
||||
filter: getFilter(state),
|
||||
//selectedFolder: getSelectedFolder(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, { /* setAction, */ startUpload })(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore } = mainFilesStore;
|
||||
const { firstLoad, fileActionStore } = filesStore;
|
||||
const { firstLoad, fileActionStore, treeFoldersStore } = filesStore;
|
||||
const { isPrivacyFolder } = treeFoldersStore;
|
||||
const { id } = filesStore.selectedFolderStore;
|
||||
|
||||
return {
|
||||
homepage: store.settingsStore.homepage,
|
||||
firstLoad,
|
||||
selectedFolderId: id,
|
||||
setAction: fileActionStore.setAction,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
};
|
||||
})(withRouter(observer(ArticleMainButtonContent)))
|
||||
);
|
||||
|
@ -15,15 +15,15 @@ import {
|
||||
getOAuthToken,
|
||||
openConnectWindow,
|
||||
saveThirdParty,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setUpdateTree,
|
||||
//fetchFiles,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
loopTreeFolders,
|
||||
getMyFolderId,
|
||||
getCommonFolderId,
|
||||
//getMyFolderId,
|
||||
//getCommonFolderId,
|
||||
getThirdPartyProviders,
|
||||
//getSelectedFolder,
|
||||
} from "../../../store/files/selectors";
|
||||
@ -353,9 +353,9 @@ const ConnectDialog = (props) => {
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
treeFolders: getTreeFolders(state),
|
||||
myFolderId: getMyFolderId(state),
|
||||
commonFolderId: getCommonFolderId(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
//myFolderId: getMyFolderId(state),
|
||||
//commonFolderId: getCommonFolderId(state),
|
||||
providers: getThirdPartyProviders(state),
|
||||
//selectedFolder: getSelectedFolder(state),
|
||||
};
|
||||
@ -371,21 +371,32 @@ const mapStateToProps = (state) => {
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setUpdateTree,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
fetchThirdPartyProviders,
|
||||
fetchTreeFolders,
|
||||
//fetchFiles,
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore } = mainFilesStore;
|
||||
const { fetchFiles } = filesStore;
|
||||
const { fetchFiles, treeFoldersStore } = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
} = treeFoldersStore;
|
||||
const { id, folders } = filesStore.selectedFolderStore;
|
||||
|
||||
return {
|
||||
selectedFolderId: id,
|
||||
selectedFolderFolders: folders,
|
||||
treeFolders,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(observer(ConnectDialog))
|
||||
);
|
||||
|
@ -6,11 +6,12 @@ import { ModalDialog, Button, Text, Checkbox } from "asc-web-components";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { utils } from "asc-web-common";
|
||||
import {
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setDialogVisible,
|
||||
convertUploadedFiles,
|
||||
} from "../../../store/files/actions";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
import { inject, observer } from "mobx-react";
|
||||
const i18n = createI18N({
|
||||
page: "ConvertDialog",
|
||||
localesPath: "dialogs/ConvertDialog",
|
||||
@ -118,8 +119,23 @@ const ConvertDialog = (props) => (
|
||||
<ModalDialogContainerTranslated i18n={i18n} {...props} />
|
||||
);
|
||||
|
||||
// export default connect(null, {
|
||||
// setTreeFolders,
|
||||
// setDialogVisible,
|
||||
// convertUploadedFiles,
|
||||
// })(withRouter(ConvertDialog));
|
||||
|
||||
export default connect(null, {
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setDialogVisible,
|
||||
convertUploadedFiles,
|
||||
})(withRouter(ConvertDialog));
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore } = mainFilesStore;
|
||||
const { setTreeFolders } = filesStore.treeFoldersStore;
|
||||
|
||||
return {
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(observer(ConvertDialog)))
|
||||
);
|
||||
|
@ -13,7 +13,7 @@ import { withTranslation } from "react-i18next";
|
||||
import { api, utils, toastr } from "asc-web-common";
|
||||
import {
|
||||
//fetchFiles,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
setUpdateTree,
|
||||
@ -23,12 +23,12 @@ import {
|
||||
loopTreeFolders,
|
||||
//getSelectedFolderId,
|
||||
getFilter,
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
//getIsLoading,
|
||||
getIsRecycleBinFolder,
|
||||
//getIsRecycleBinFolder,
|
||||
//getSelection,
|
||||
isRootFolder,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
} from "../../../store/files/selectors";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
import { inject, observer } from "mobx-react";
|
||||
@ -307,10 +307,10 @@ const mapStateToProps = (state) => {
|
||||
return {
|
||||
//currentFolderId: getSelectedFolderId(state),
|
||||
filter: getFilter(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
isRecycleBinFolder: getIsRecycleBinFolder(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
//isRecycleBinFolder: getIsRecycleBinFolder(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
//selection: getSelection(state),
|
||||
isRootFolder: isRootFolder(state),
|
||||
};
|
||||
@ -325,7 +325,7 @@ const mapStateToProps = (state) => {
|
||||
// })(withRouter(DeleteDialog));
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
setUpdateTree,
|
||||
@ -333,14 +333,30 @@ export default connect(mapStateToProps, {
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore, isLoading } = mainFilesStore;
|
||||
const { fetchFiles, selection, selectedFolderStore } = filesStore;
|
||||
const {
|
||||
fetchFiles,
|
||||
selection,
|
||||
selectedFolderStore,
|
||||
treeFoldersStore,
|
||||
} = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
isRecycleBinFolder,
|
||||
isPrivacyFolder,
|
||||
} = treeFoldersStore;
|
||||
|
||||
return {
|
||||
currentFolderId: selectedFolderStore.id,
|
||||
selection,
|
||||
isLoading,
|
||||
treeFolders,
|
||||
isRecycleBinFolder,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(observer(DeleteDialog)))
|
||||
);
|
||||
|
@ -9,15 +9,15 @@ import {
|
||||
setThirdPartyProviders,
|
||||
//fetchFiles,
|
||||
setUpdateTree,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
getThirdPartyProviders,
|
||||
//getSelectedFolderId,
|
||||
loopTreeFolders,
|
||||
getTreeFolders,
|
||||
getCommonFolderId,
|
||||
getMyFolderId,
|
||||
//getTreeFolders,
|
||||
//getCommonFolderId,
|
||||
//getMyFolderId,
|
||||
} from "../../../store/files/selectors";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
import { inject, observer } from "mobx-react";
|
||||
@ -122,9 +122,9 @@ const mapStateToProps = (state) => {
|
||||
return {
|
||||
providers: getThirdPartyProviders(state),
|
||||
//currentFolderId: getSelectedFolderId(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
commonId: getCommonFolderId(state),
|
||||
myId: getMyFolderId(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
//commonId: getCommonFolderId(state),
|
||||
//myId: getMyFolderId(state),
|
||||
};
|
||||
};
|
||||
|
||||
@ -139,16 +139,27 @@ export default connect(mapStateToProps, {
|
||||
setThirdPartyProviders,
|
||||
//fetchFiles,
|
||||
setUpdateTree,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore } = mainFilesStore;
|
||||
const { fetchFiles } = filesStore;
|
||||
const { fetchFiles, treeFoldersStore } = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
myFolderId,
|
||||
commonFolderId,
|
||||
} = treeFoldersStore;
|
||||
|
||||
return {
|
||||
currentFolderId: filesStore.selectedFolderStore.id,
|
||||
treeFolders,
|
||||
myId: myFolderId,
|
||||
commonId: commonFolderId,
|
||||
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(observer(DeleteThirdPartyDialog)))
|
||||
);
|
||||
|
@ -21,7 +21,7 @@ import {
|
||||
//setIsLoading,
|
||||
setNewRowItems,
|
||||
setSecondaryProgressBarData,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setUpdateTree,
|
||||
updateFile,
|
||||
} from "../../../../../store/files/actions";
|
||||
@ -34,15 +34,15 @@ import {
|
||||
getFilter,
|
||||
//getFolders,
|
||||
//getIsLoading,
|
||||
getIsPrivacyFolder,
|
||||
getIsRecycleBinFolder,
|
||||
//getIsPrivacyFolder,
|
||||
//getIsRecycleBinFolder,
|
||||
getNewRowItems,
|
||||
//getPathParts,
|
||||
//getSelectedFolder,
|
||||
//getSelectedFolderNew,
|
||||
//getSelectedFolderParentId,
|
||||
getTitleWithoutExst,
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
isImage,
|
||||
isSound,
|
||||
isVideo,
|
||||
@ -56,7 +56,7 @@ import { observer, inject } from "mobx-react";
|
||||
|
||||
const { FileAction } = constants;
|
||||
const sideColor = "#A3A9AE";
|
||||
const { /* getSettings, */ isDesktopClient } = initStore.auth.selectors;
|
||||
//const { getSettings, isDesktopClient } = initStore.auth.selectors;
|
||||
const { getEncryptionAccess, replaceFileStream } = initStore.auth.actions;
|
||||
|
||||
const SimpleFilesRowContent = styled(RowContent)`
|
||||
@ -758,17 +758,17 @@ function mapStateToProps(state, props) {
|
||||
filter: getFilter(state),
|
||||
//fileAction: getFileAction(state),
|
||||
//parentFolder: getSelectedFolderParentId(state),
|
||||
isTrashFolder: getIsRecycleBinFolder(state),
|
||||
//isTrashFolder: getIsRecycleBinFolder(state),
|
||||
//settings: getSettings(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
//selectedFolderPathParts: getPathParts(state),
|
||||
//newItems: getSelectedFolderNew(state),
|
||||
//selectedFolder: getSelectedFolder(state),
|
||||
//folders: getFolders(state),
|
||||
newRowItems: getNewRowItems(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
isDesktop: isDesktopClient(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
//isDesktop: isDesktopClient(state),
|
||||
|
||||
canWebEdit: canWebEdit(props.item.fileExst)(state),
|
||||
canConvert: canConvert(props.item.fileExst)(state),
|
||||
@ -797,7 +797,7 @@ export default connect(mapStateToProps, {
|
||||
createFile,
|
||||
updateFile,
|
||||
renameFolder,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setSecondaryProgressBarData,
|
||||
setUpdateTree,
|
||||
setNewRowItems,
|
||||
@ -808,13 +808,25 @@ export default connect(mapStateToProps, {
|
||||
replaceFileStream,
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { homepage, culture, isDesktopClient } = store.settingsStore;
|
||||
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
|
||||
const { folders, fetchFiles } = filesStore;
|
||||
const { folders, fetchFiles, treeFoldersStore } = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
isRecycleBinFolder,
|
||||
isPrivacyFolder
|
||||
} = treeFoldersStore;
|
||||
|
||||
const { type, extension, id } = filesStore.fileActionStore;
|
||||
|
||||
const fileAction = { type, extension, id };
|
||||
|
||||
return {
|
||||
isDesktop: isDesktopClient,
|
||||
homepage,
|
||||
culture,
|
||||
fileAction,
|
||||
folders,
|
||||
selectedFolderId: filesStore.selectedFolderStore.id,
|
||||
@ -822,9 +834,13 @@ export default connect(mapStateToProps, {
|
||||
newItems: filesStore.selectedFolderStore.new,
|
||||
parentFolder: filesStore.selectedFolderStore.parentId,
|
||||
isLoading,
|
||||
treeFolders,
|
||||
isTrashFolder: isRecycleBinFolder,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
setIsLoading,
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(withTranslation()(observer(FilesRowContent))))
|
||||
);
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
renameFolder,
|
||||
updateFile,
|
||||
//fetchFiles,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
//setIsLoading,
|
||||
} from "../../../../../store/files/actions";
|
||||
import {
|
||||
@ -26,11 +26,11 @@ import {
|
||||
//getSelectedFolderNew,
|
||||
//getSelectedFolderParentId,
|
||||
getTitleWithoutExst,
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
isImage,
|
||||
isSound,
|
||||
isVideo,
|
||||
getIsRecycleBinFolder,
|
||||
//getIsRecycleBinFolder,
|
||||
//getRootFolderId,
|
||||
} from "../../../../../store/files/selectors";
|
||||
import { NewFilesPanel } from "../../../../panels";
|
||||
@ -446,8 +446,8 @@ function mapStateToProps(state, props) {
|
||||
filter: getFilter(state),
|
||||
//fileAction: getFileAction(state),
|
||||
//parentFolder: getSelectedFolderParentId(state),
|
||||
isTrashFolder: getIsRecycleBinFolder(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
//isTrashFolder: getIsRecycleBinFolder(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
//rootFolderId: getRootFolderId(state),
|
||||
//newItems: getSelectedFolderNew(state),
|
||||
//selectedFolder: getSelectedFolder(state),
|
||||
@ -472,18 +472,28 @@ export default connect(mapStateToProps, {
|
||||
createFile,
|
||||
updateFile,
|
||||
renameFolder,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
//setIsLoading,
|
||||
//fetchFiles,
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { homepage, culture } = store.settingsStore;
|
||||
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
|
||||
const { folders, fetchFiles } = filesStore;
|
||||
const { folders, fetchFiles, treeFoldersStore } = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
isRecycleBinFolder,
|
||||
} = treeFoldersStore;
|
||||
|
||||
const { type, extension, id } = filesStore.fileActionStore;
|
||||
|
||||
const fileAction = { type, extension, id };
|
||||
|
||||
return {
|
||||
culture,
|
||||
homepage,
|
||||
fileAction,
|
||||
folders,
|
||||
rootFolderId: filesStore.selectedFolderStore.pathParts,
|
||||
@ -492,9 +502,12 @@ export default connect(mapStateToProps, {
|
||||
newItems: filesStore.selectedFolderStore.new,
|
||||
parentFolder: filesStore.selectedFolderStore.parentId,
|
||||
isLoading,
|
||||
treeFolders,
|
||||
isTrashFolder: isRecycleBinFolder,
|
||||
|
||||
setIsLoading,
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(withTranslation()(observer(FilesTileContent))))
|
||||
);
|
||||
|
@ -28,7 +28,7 @@ import {
|
||||
MediaViewer,
|
||||
toastr,
|
||||
Loaders,
|
||||
store,
|
||||
//store,
|
||||
} from "asc-web-common";
|
||||
import {
|
||||
clearSecondaryProgressData,
|
||||
@ -49,7 +49,7 @@ import {
|
||||
setSecondaryProgressBarData,
|
||||
//setSelected,
|
||||
//setSelection,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
getFileInfo,
|
||||
addFileToRecentlyViewed,
|
||||
setIsVerHistoryPanel,
|
||||
@ -76,21 +76,21 @@ import {
|
||||
//getSelected,
|
||||
//getSelectedFolderTitle,
|
||||
//getSelection,
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
getViewAs,
|
||||
loopTreeFolders,
|
||||
//getFilesList,
|
||||
getMediaViewerImageFormats,
|
||||
getMediaViewerMediaFormats,
|
||||
getIsShareFolder,
|
||||
getIsCommonFolder,
|
||||
getIsRecycleBinFolder,
|
||||
getIsRecentFolder,
|
||||
getIsMyFolder,
|
||||
getIsFavoritesFolder,
|
||||
getMyFolderId,
|
||||
//getIsShareFolder,
|
||||
//getIsCommonFolder,
|
||||
//getIsRecycleBinFolder,
|
||||
//getIsRecentFolder,
|
||||
//getIsMyFolder,
|
||||
//getIsFavoritesFolder,
|
||||
//getMyFolderId,
|
||||
getTooltipLabel,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
getPrivacyInstructionsLink,
|
||||
getIconOfDraggedFile,
|
||||
getSharePanelVisible,
|
||||
@ -106,15 +106,15 @@ import {
|
||||
ThirdPartyMoveDialog,
|
||||
} from "../../../../dialogs";
|
||||
import { observer, inject } from "mobx-react";
|
||||
const {
|
||||
isAdmin,
|
||||
getSettings,
|
||||
getCurrentUser,
|
||||
isDesktopClient,
|
||||
isEncryptionSupport,
|
||||
getOrganizationName,
|
||||
getIsTabletView,
|
||||
} = store.auth.selectors;
|
||||
// const {
|
||||
// isAdmin,
|
||||
// getSettings,
|
||||
// getCurrentUser,
|
||||
// isDesktopClient,
|
||||
// isEncryptionSupport,
|
||||
// getOrganizationName,
|
||||
// getIsTabletView,
|
||||
// } = store.auth.selectors;
|
||||
//import { getFilterByLocation } from "../../../../../helpers/converters";
|
||||
//import config from "../../../../../../package.json";
|
||||
|
||||
@ -1809,7 +1809,7 @@ class SectionBodyContent extends React.Component {
|
||||
filter,
|
||||
} = this.props;
|
||||
|
||||
console.log("Section body", this.props);
|
||||
//console.log("Section body", this.props);
|
||||
|
||||
const {
|
||||
editingId,
|
||||
@ -2129,31 +2129,31 @@ const mapStateToProps = (state) => {
|
||||
//firstLoad: getFirstLoad(state),
|
||||
//folderId: getSelectedFolderId(state),
|
||||
//folders: getFolders(state),
|
||||
isAdmin: isAdmin(state),
|
||||
isCommon: getIsCommonFolder(state),
|
||||
isDesktop: isDesktopClient(state),
|
||||
isEncryptionSupport: isEncryptionSupport(state),
|
||||
isFavorites: getIsFavoritesFolder(state),
|
||||
isMy: getIsMyFolder(state),
|
||||
isRecycleBin: getIsRecycleBinFolder(state),
|
||||
isRecent: getIsRecentFolder(state),
|
||||
isShare: getIsShareFolder(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
//isAdmin: isAdmin(state),
|
||||
//isCommon: getIsCommonFolder(state),
|
||||
//isDesktop: isDesktopClient(state),
|
||||
//isEncryptionSupport: isEncryptionSupport(state),
|
||||
//isFavorites: getIsFavoritesFolder(state),
|
||||
//isMy: getIsMyFolder(state),
|
||||
//isRecycleBin: getIsRecycleBinFolder(state),
|
||||
//isRecent: getIsRecentFolder(state),
|
||||
//isShare: getIsShareFolder(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
mediaViewerImageFormats: getMediaViewerImageFormats(state),
|
||||
mediaViewerMediaFormats: getMediaViewerMediaFormats(state),
|
||||
mediaViewerVisible: getMediaViewerVisibility(state),
|
||||
myDocumentsId: getMyFolderId(state),
|
||||
organizationName: getOrganizationName(state),
|
||||
//myDocumentsId: getMyFolderId(state),
|
||||
//organizationName: getOrganizationName(state),
|
||||
//parentId: getSelectedFolderParentId(state),
|
||||
privacyInstructions: getPrivacyInstructionsLink(state),
|
||||
//selected: getSelected(state),
|
||||
//selectedFolderId: getSelectedFolderId(state),
|
||||
//selection: getSelection(state),
|
||||
settings: getSettings(state),
|
||||
//settings: getSettings(state),
|
||||
//title: getSelectedFolderTitle(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
viewAs: getViewAs(state),
|
||||
viewer: getCurrentUser(state),
|
||||
//viewer: getCurrentUser(state),
|
||||
tooltipValue: getTooltipLabel(state),
|
||||
iconOfDraggedFile: getIconOfDraggedFile(state)(state),
|
||||
sharingPanelVisible: getSharePanelVisible(state),
|
||||
@ -2161,7 +2161,7 @@ const mapStateToProps = (state) => {
|
||||
providers: getThirdPartyProviders(state),
|
||||
capabilities: getThirdPartyCapabilities(state),
|
||||
isVersionHistoryPanel: getIsVerHistoryPanel(state),
|
||||
isTabletView: getIsTabletView(state),
|
||||
//isTabletView: getIsTabletView(state),
|
||||
};
|
||||
};
|
||||
|
||||
@ -2198,7 +2198,7 @@ export default connect(mapStateToProps, {
|
||||
updateFile,
|
||||
//fetchFiles,
|
||||
//selectFile,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setDragItem,
|
||||
setMediaViewerData,
|
||||
setSecondaryProgressBarData,
|
||||
@ -2219,6 +2219,14 @@ export default connect(mapStateToProps, {
|
||||
setChangeOwnerPanelVisible,
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const {
|
||||
homepage,
|
||||
culture,
|
||||
isEncryptionSupport,
|
||||
isTabletView,
|
||||
organizationName,
|
||||
isDesktopClient,
|
||||
} = store.settingsStore;
|
||||
const { dragging, setDragging, filesStore, setIsLoading } = mainFilesStore;
|
||||
const {
|
||||
files,
|
||||
@ -2233,13 +2241,35 @@ export default connect(mapStateToProps, {
|
||||
selection,
|
||||
selectFile,
|
||||
deselectFile,
|
||||
treeFoldersStore,
|
||||
} = filesStore;
|
||||
|
||||
const {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
myFolderId,
|
||||
isMyFolder,
|
||||
isRecycleBinFolder,
|
||||
isShareFolder,
|
||||
isFavoritesFolder,
|
||||
isCommonFolder,
|
||||
isRecentFolder,
|
||||
isPrivacyFolder
|
||||
} = treeFoldersStore;
|
||||
|
||||
const { type, extension, id, setAction } = fileActionStore;
|
||||
|
||||
const fileAction = { type, extension, id };
|
||||
|
||||
return {
|
||||
isAdmin: store.isAdmin,
|
||||
homepage,
|
||||
culture,
|
||||
isEncryptionSupport,
|
||||
isTabletView,
|
||||
viewer: store.userStore.user,
|
||||
organizationName,
|
||||
isDesktop: isDesktopClient,
|
||||
dragging,
|
||||
fileAction,
|
||||
files,
|
||||
@ -2251,6 +2281,15 @@ export default connect(mapStateToProps, {
|
||||
parentId: filesStore.selectedFolderStore.parentId,
|
||||
selectedFolderId: filesStore.selectedFolderStore.id,
|
||||
selection,
|
||||
treeFolders,
|
||||
isRecycleBin: isRecycleBinFolder,
|
||||
myDocumentsId: myFolderId,
|
||||
isShare: isShareFolder,
|
||||
isFavorites: isFavoritesFolder,
|
||||
isCommon: isCommonFolder,
|
||||
isRecent: isRecentFolder,
|
||||
isMy: isMyFolder,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
setDragging,
|
||||
setAction,
|
||||
@ -2260,6 +2299,7 @@ export default connect(mapStateToProps, {
|
||||
fetchFiles,
|
||||
selectFile,
|
||||
deselectFile,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(withTranslation()(observer(SectionBodyContent))))
|
||||
);
|
||||
|
@ -16,18 +16,23 @@ import find from "lodash/find";
|
||||
import result from "lodash/result";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { withRouter } from "react-router";
|
||||
import { constants, FilterInput, store, Loaders, utils } from "asc-web-common";
|
||||
import {
|
||||
constants,
|
||||
FilterInput,
|
||||
/* store, */ Loaders,
|
||||
utils,
|
||||
} from "asc-web-common";
|
||||
//import equal from "fast-deep-equal/react";
|
||||
import { isMobileOnly } from "react-device-detect";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const { withLayoutSize } = utils;
|
||||
|
||||
const {
|
||||
getCurrentUser,
|
||||
getSettingsCustomNames,
|
||||
getLanguage,
|
||||
} = store.auth.selectors;
|
||||
// const {
|
||||
// getCurrentUser,
|
||||
// getSettingsCustomNames,
|
||||
// getLanguage,
|
||||
// } = store.auth.selectors;
|
||||
const { FilterType } = constants;
|
||||
|
||||
const getFilterType = (filterValues) => {
|
||||
@ -328,9 +333,9 @@ class SectionFilterContent extends React.Component {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
user: getCurrentUser(state),
|
||||
customNames: getSettingsCustomNames(state),
|
||||
language: getLanguage(state),
|
||||
//user: getCurrentUser(state),
|
||||
//customNames: getSettingsCustomNames(state),
|
||||
//language: getLanguage(state),
|
||||
//firstLoad: getFirstLoad(state),
|
||||
filter: getFilter(state),
|
||||
//selectedFolderId: getSelectedFolderId(state),
|
||||
@ -354,7 +359,14 @@ export default connect(mapStateToProps, {
|
||||
const { filesStore, setIsLoading } = mainFilesStore;
|
||||
const { firstLoad, fetchFiles } = filesStore;
|
||||
|
||||
const { user } = store.userStore;
|
||||
const { customNames, culture } = store.settingsStore;
|
||||
const language = (user && user.cultureName) || culture || "en-US";
|
||||
|
||||
return {
|
||||
customNames,
|
||||
user,
|
||||
language,
|
||||
firstLoad,
|
||||
selectedFolderId: filesStore.selectedFolderStore.id,
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { withRouter } from "react-router";
|
||||
import {
|
||||
constants,
|
||||
Headline,
|
||||
store,
|
||||
//store,
|
||||
api,
|
||||
toastr,
|
||||
Loaders,
|
||||
@ -38,7 +38,7 @@ import { OperationsPanel } from "../../../../panels";
|
||||
import {
|
||||
getUserAccess,
|
||||
getWebEditSelected,
|
||||
getIsRecycleBinFolder,
|
||||
//getIsRecycleBinFolder,
|
||||
canCreate,
|
||||
//getSelectedFolderTitle,
|
||||
getFilter,
|
||||
@ -53,12 +53,12 @@ import {
|
||||
getSelectionLength,
|
||||
getSharePanelVisible,
|
||||
getIsThirdPartySelection,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
getOnlyFoldersSelected,
|
||||
} from "../../../../../store/files/selectors";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const { isAdmin, isDesktopClient } = store.auth.selectors;
|
||||
//const { isAdmin, isDesktopClient } = store.auth.selectors;
|
||||
const { FilterType, FileAction } = constants;
|
||||
const { tablet, desktop } = utils.device;
|
||||
const { Consumer } = utils.context;
|
||||
@ -696,10 +696,10 @@ class SectionHeaderContent extends React.Component {
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
//isRootFolder: getIsRootFolder(state),
|
||||
isAdmin: isAdmin(state),
|
||||
isRecycleBin: getIsRecycleBinFolder(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
isDesktop: isDesktopClient(state),
|
||||
//isAdmin: isAdmin(state),
|
||||
//isRecycleBin: getIsRecycleBinFolder(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
//isDesktop: isDesktopClient(state),
|
||||
//parentId: getSelectedFolderParentId(state),
|
||||
//selection: getSelection(state),
|
||||
//title: getSelectedFolderTitle(state),
|
||||
@ -739,15 +739,27 @@ export default connect(mapStateToProps, {
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore, setIsLoading } = mainFilesStore;
|
||||
const { setSelected, fileActionStore, fetchFiles, selection } = filesStore;
|
||||
const {
|
||||
setSelected,
|
||||
fileActionStore,
|
||||
fetchFiles,
|
||||
selection,
|
||||
selectedFolderStore,
|
||||
treeFoldersStore,
|
||||
} = filesStore;
|
||||
const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore;
|
||||
const { setAction } = fileActionStore;
|
||||
|
||||
return {
|
||||
isRootFolder: filesStore.selectedFolderStore.parentId === 0,
|
||||
title: filesStore.selectedFolderStore.title,
|
||||
parentId: filesStore.selectedFolderStore.parentId,
|
||||
currentFolderId: filesStore.selectedFolderStore.id,
|
||||
isAdmin: store.isAdmin,
|
||||
isDesktop: store.settingsStore.isDesktopClient,
|
||||
isRootFolder: selectedFolderStore.parentId === 0,
|
||||
title: selectedFolderStore.title,
|
||||
parentId: selectedFolderStore.parentId,
|
||||
currentFolderId: selectedFolderStore.id,
|
||||
selection,
|
||||
isRecycleBin: isRecycleBinFolder,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
setSelected,
|
||||
setAction,
|
||||
|
@ -33,7 +33,7 @@ import {
|
||||
getFilter,
|
||||
getPrimaryProgressData,
|
||||
getSecondaryProgressData,
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
getViewAs,
|
||||
//getIsLoading,
|
||||
//getDragging,
|
||||
@ -335,7 +335,7 @@ function mapStateToProps(state) {
|
||||
filter: getFilter(state),
|
||||
primaryProgressData: getPrimaryProgressData(state),
|
||||
secondaryProgressData: getSecondaryProgressData(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
viewAs: getViewAs(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
//homepage: getSettingsHomepage(state),
|
||||
@ -374,7 +374,16 @@ export default connect(
|
||||
filesStore,
|
||||
isLoading,
|
||||
} = mainFilesStore;
|
||||
const { firstLoad, setFirstLoad, fileActionStore, fetchFiles } = filesStore;
|
||||
const {
|
||||
firstLoad,
|
||||
setFirstLoad,
|
||||
fileActionStore,
|
||||
fetchFiles,
|
||||
treeFoldersStore,
|
||||
} = filesStore;
|
||||
|
||||
const { treeFolders } = treeFoldersStore;
|
||||
|
||||
const { id } = fileActionStore;
|
||||
|
||||
return {
|
||||
@ -384,6 +393,7 @@ export default connect(
|
||||
fileActionId: id,
|
||||
currentFolderId: filesStore.selectedFolderStore.id,
|
||||
isLoading,
|
||||
treeFolders,
|
||||
|
||||
setFirstLoad,
|
||||
setDragging,
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
Row,
|
||||
Icons,
|
||||
} from "asc-web-components";
|
||||
import { store } from "asc-web-common";
|
||||
//import { store } from "asc-web-common";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import EmptyFolderContainer from "../../../Home/Section/Body/EmptyFolderContainer";
|
||||
import { createI18N } from "../../../../../helpers/i18n";
|
||||
@ -46,7 +46,7 @@ import {
|
||||
import { DeleteThirdPartyDialog, ConnectDialog } from "../../../../dialogs";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const { isAdmin } = store.auth.selectors;
|
||||
//const { isAdmin } = store.auth.selectors;
|
||||
|
||||
const i18n = createI18N({
|
||||
page: "SectionBodyContent",
|
||||
@ -545,7 +545,7 @@ class ConnectClouds extends React.Component {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
isAdmin: isAdmin(state),
|
||||
//isAdmin: isAdmin(state),
|
||||
capabilities: getThirdPartyCapabilities(state),
|
||||
googleConnectItem: getGoogleConnect(state),
|
||||
boxConnectItem: getBoxConnect(state),
|
||||
@ -584,6 +584,8 @@ export default connect(mapStateToProps, {
|
||||
const { fetchFiles } = filesStore;
|
||||
|
||||
return {
|
||||
isAdmin: store.isAdmin,
|
||||
|
||||
fetchFiles,
|
||||
};
|
||||
})(withTranslation()(observer(ConnectClouds)))
|
||||
|
@ -2,7 +2,7 @@ import React from "react";
|
||||
import styled from "styled-components";
|
||||
import { connect } from "react-redux";
|
||||
import { Heading, ToggleButton } from "asc-web-components";
|
||||
import { Error403, Error520, store } from "asc-web-common";
|
||||
import { Error403, Error520 /* store */ } from "asc-web-common";
|
||||
import {
|
||||
setUpdateIfExist,
|
||||
setStoreOriginal,
|
||||
@ -25,7 +25,7 @@ import {
|
||||
import ConnectClouds from "./ConnectedClouds";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const { isAdmin } = store.auth.selectors;
|
||||
//const { isAdmin } = store.auth.selectors;
|
||||
|
||||
const StyledSettings = styled.div`
|
||||
display: grid;
|
||||
@ -182,7 +182,7 @@ const SectionBodyContent = ({
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
isAdmin: isAdmin(state),
|
||||
//isAdmin: isAdmin(state),
|
||||
selectedTreeNode: getSettingsSelectedTreeNode(state),
|
||||
storeOriginalFiles: getSettingsTreeStoreOriginalFiles(state),
|
||||
confirmDelete: getSettingsTreeConfirmDelete(state),
|
||||
@ -216,6 +216,7 @@ export default connect(mapStateToProps, {
|
||||
const { isLoading } = mainFilesStore;
|
||||
|
||||
return {
|
||||
isAdmin: store.isAdmin,
|
||||
isLoading,
|
||||
};
|
||||
})(observer(SectionBodyContent))
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { withRouter } from "react-router";
|
||||
import { connect } from "react-redux";
|
||||
import { toastr, store } from "asc-web-common";
|
||||
import { toastr /* store */ } from "asc-web-common";
|
||||
import {
|
||||
markAsVersion,
|
||||
restoreVersion,
|
||||
@ -19,8 +19,9 @@ import {
|
||||
} from "../../../../../store/files/actions";
|
||||
import VersionBadge from "./VersionBadge";
|
||||
import StyledVersionRow from "./StyledVersionRow";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const { getLanguage } = store.auth.selectors;
|
||||
//const { getLanguage } = store.auth.selectors;
|
||||
|
||||
const VersionRow = (props) => {
|
||||
const {
|
||||
@ -233,11 +234,11 @@ const VersionRow = (props) => {
|
||||
);
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
culture: getLanguage(state),
|
||||
};
|
||||
};
|
||||
// const mapStateToProps = (state) => {
|
||||
// return {
|
||||
// culture: getLanguage(state),
|
||||
// };
|
||||
// };
|
||||
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
@ -249,7 +250,22 @@ const mapDispatchToProps = (dispatch) => {
|
||||
};
|
||||
};
|
||||
|
||||
// export default connect(
|
||||
// mapStateToProps,
|
||||
// mapDispatchToProps
|
||||
// )(withRouter(withTranslation()(VersionRow)));
|
||||
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
null,
|
||||
mapDispatchToProps
|
||||
)(withRouter(withTranslation()(VersionRow)));
|
||||
)(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { user } = store.userStore;
|
||||
const { culture } = store.settingsStore;
|
||||
const language = (user && user.cultureName) || culture || "en-US";
|
||||
|
||||
return {
|
||||
culture: language,
|
||||
};
|
||||
})(withRouter(withTranslation()(observer(VersionRow))))
|
||||
);
|
||||
|
@ -96,6 +96,7 @@ export default connect(
|
||||
const { setFirstLoad } = filesStore;
|
||||
|
||||
return {
|
||||
culture: store.settingsStore.culture,
|
||||
isLoading,
|
||||
|
||||
setFirstLoad,
|
||||
|
@ -2,7 +2,7 @@ import React, { useEffect } from "react";
|
||||
import { connect } from "react-redux";
|
||||
import PropTypes from "prop-types";
|
||||
import { withRouter } from "react-router";
|
||||
import { PageLayout, Loaders, utils, store } from "asc-web-common";
|
||||
import { PageLayout, Loaders, utils /* store */ } from "asc-web-common";
|
||||
import { withTranslation, I18nextProvider } from "react-i18next";
|
||||
import {
|
||||
ArticleHeaderContent,
|
||||
@ -29,7 +29,7 @@ const i18n = createI18N({
|
||||
});
|
||||
|
||||
const { changeLanguage } = utils;
|
||||
const { getIsTabletView } = store.auth.selectors;
|
||||
//const { getIsTabletView } = store.auth.selectors;
|
||||
|
||||
class PureVersionHistory extends React.Component {
|
||||
componentDidMount() {
|
||||
@ -118,7 +118,7 @@ VersionHistory.propTypes = {
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
//isLoading: getIsLoading(state),
|
||||
isTabletView: getIsTabletView(state),
|
||||
//isTabletView: getIsTabletView(state),
|
||||
filter: getFilter(state),
|
||||
versions: getFileVersions(state),
|
||||
};
|
||||
@ -145,6 +145,7 @@ export default connect(
|
||||
const { isLoading } = mainFilesStore;
|
||||
|
||||
return {
|
||||
isTabletView: store.settingsStore.isTabletView,
|
||||
isLoading,
|
||||
};
|
||||
})(withRouter(observer(VersionHistory)))
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
Aside,
|
||||
} from "asc-web-components";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { utils, store, toastr } from "asc-web-common";
|
||||
import { utils, /* store, */ toastr } from "asc-web-common";
|
||||
import {
|
||||
//setIsLoading,
|
||||
setFilesOwner,
|
||||
@ -43,7 +43,7 @@ const i18n = createI18N({
|
||||
localesPath: "panels/ChangeOwnerPanel",
|
||||
});
|
||||
const { changeLanguage } = utils;
|
||||
const { getSettingsCustomNamesGroupsCaption } = store.auth.selectors;
|
||||
//const { getSettingsCustomNamesGroupsCaption } = store.auth.selectors;
|
||||
|
||||
class ChangeOwnerComponent extends React.Component {
|
||||
constructor(props) {
|
||||
@ -204,7 +204,7 @@ const ChangeOwnerPanel = (props) => (
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
//selection: getSelection(state),
|
||||
groupsCaption: getSettingsCustomNamesGroupsCaption(state),
|
||||
//groupsCaption: getSettingsCustomNamesGroupsCaption(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
//files: getFiles(state),
|
||||
//folders: getFolders(state),
|
||||
@ -231,6 +231,7 @@ inject(({ store, mainFilesStore }) => {
|
||||
const { files, folders, selection } = filesStore;
|
||||
|
||||
return {
|
||||
groupsCaption: store.settingsStore.customNames.groupsCaption,
|
||||
files,
|
||||
folders,
|
||||
selection,
|
||||
|
@ -28,14 +28,14 @@ import {
|
||||
getFilter,
|
||||
//getFiles,
|
||||
//getFolders,
|
||||
getTreeFolders,
|
||||
//getTreeFolders,
|
||||
//getSelectedFolder,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
} from "../../../store/files/selectors";
|
||||
import {
|
||||
//fetchFiles,
|
||||
setMediaViewerData,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setUpdateTree,
|
||||
setNewRowItems,
|
||||
//setIsLoading,
|
||||
@ -317,8 +317,8 @@ const mapStateToProps = (state) => {
|
||||
filter: getFilter(state),
|
||||
//files: getFiles(state),
|
||||
//folders: getFolders(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
//treeFolders: getTreeFolders(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
};
|
||||
};
|
||||
|
||||
@ -334,7 +334,7 @@ const mapStateToProps = (state) => {
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setMediaViewerData,
|
||||
setTreeFolders,
|
||||
//setTreeFolders,
|
||||
setUpdateTree,
|
||||
setNewRowItems,
|
||||
//fetchFiles,
|
||||
@ -344,13 +344,17 @@ export default connect(mapStateToProps, {
|
||||
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore, setIsLoading } = mainFilesStore;
|
||||
const { files, folders, fetchFiles } = filesStore;
|
||||
const { files, folders, fetchFiles, treeFoldersStore } = filesStore;
|
||||
const { treeFolders, setTreeFolders, isPrivacyFolder } = treeFoldersStore;
|
||||
|
||||
return {
|
||||
files,
|
||||
folders,
|
||||
treeFolders,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
setIsLoading,
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
};
|
||||
})(withRouter(observer(NewFilesPanel)));
|
||||
|
@ -16,7 +16,7 @@ import {
|
||||
//getSelection,
|
||||
//getPathParts,
|
||||
//getSelectedFolderId,
|
||||
getIsRecycleBinFolder,
|
||||
//getIsRecycleBinFolder,
|
||||
getOperationsFolders,
|
||||
} from "../../../store/files/selectors";
|
||||
import { ThirdPartyMoveDialog } from "../../dialogs";
|
||||
@ -212,7 +212,7 @@ const mapStateToProps = (state) => {
|
||||
//selection: getSelection(state),
|
||||
//expandedKeys: getPathParts(state),
|
||||
//currentFolderId: getSelectedFolderId(state),
|
||||
isRecycleBin: getIsRecycleBinFolder(state),
|
||||
//isRecycleBin: getIsRecycleBinFolder(state),
|
||||
operationsFolders: getOperationsFolders(state),
|
||||
};
|
||||
};
|
||||
@ -228,12 +228,14 @@ export default connect(mapStateToProps, {
|
||||
})(
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { filesStore } = mainFilesStore;
|
||||
const { selection, selectedFolderStore } = filesStore;
|
||||
const { selection, selectedFolderStore, treeFoldersStore } = filesStore;
|
||||
const { isRecycleBinFolder } = treeFoldersStore;
|
||||
|
||||
return {
|
||||
expandedKeys: selectedFolderStore.pathParts,
|
||||
currentFolderId: selectedFolderStore.id,
|
||||
selection,
|
||||
isRecycleBin: isRecycleBinFolder,
|
||||
};
|
||||
})(withRouter(observer(OperationsPanel)))
|
||||
);
|
||||
|
@ -33,7 +33,7 @@ import {
|
||||
//getIsLoading,
|
||||
//getFiles,
|
||||
//getFolders,
|
||||
getIsPrivacyFolder,
|
||||
//getIsPrivacyFolder,
|
||||
//getUploadPanelVisible,
|
||||
getUploadSelection,
|
||||
} from "../../../store/files/selectors";
|
||||
@ -56,12 +56,12 @@ const i18n = createI18N({
|
||||
const { changeLanguage } = commonUtils;
|
||||
const { ShareAccessRights } = constants;
|
||||
const { replaceFileStream } = store.auth.actions;
|
||||
const {
|
||||
getCurrentUserId,
|
||||
getSettingsCustomNamesGroupsCaption,
|
||||
//getSettings,
|
||||
isDesktopClient,
|
||||
} = store.auth.selectors;
|
||||
// const {
|
||||
// getCurrentUserId,
|
||||
// getSettingsCustomNamesGroupsCaption,
|
||||
// getSettings,
|
||||
// isDesktopClient,
|
||||
// } = store.auth.selectors;
|
||||
|
||||
const SharingBodyStyle = { height: `calc(100vh - 156px)` };
|
||||
|
||||
@ -632,11 +632,11 @@ const mapStateToProps = (state, ownProps) => {
|
||||
getAccessOption: (selection) => getAccessOption(state, selection),
|
||||
getExternalAccessOption: (selection) =>
|
||||
getExternalAccessOption(state, selection),
|
||||
isMyId: getCurrentUserId(state),
|
||||
//isMyId: getCurrentUserId(state),
|
||||
selection: selectedFile,
|
||||
isPrivacy: getIsPrivacyFolder(state),
|
||||
isDesktop: isDesktopClient(state),
|
||||
groupsCaption: getSettingsCustomNamesGroupsCaption(state),
|
||||
//isPrivacy: getIsPrivacyFolder(state),
|
||||
//isDesktop: isDesktopClient(state),
|
||||
//groupsCaption: getSettingsCustomNamesGroupsCaption(state),
|
||||
sharingPanelVisible: getSharePanelVisible(state),
|
||||
canShareOwnerChange: getCanShareOwnerChange(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
@ -668,15 +668,21 @@ export default connect(mapStateToProps, {
|
||||
});
|
||||
|
||||
inject(({ store, mainFilesStore }) => {
|
||||
const { customNames, isDesktopClient, homepage } = store.settingsStore;
|
||||
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
|
||||
const { files, folders, selection } = filesStore;
|
||||
const { files, folders, selection, treeFoldersStore } = filesStore;
|
||||
const { isPrivacyFolder } = treeFoldersStore;
|
||||
|
||||
return {
|
||||
homepage: store.settingsStore.homepage,
|
||||
isMyId: store.userStore.user.id,
|
||||
groupsCaption: customNames.groupsCaption,
|
||||
isDesktop: isDesktopClient,
|
||||
homepage,
|
||||
files,
|
||||
folders,
|
||||
//selection,
|
||||
isLoading,
|
||||
isPrivacy: isPrivacyFolder,
|
||||
|
||||
setIsLoading,
|
||||
};
|
||||
|
@ -3,7 +3,7 @@ import PropTypes from "prop-types";
|
||||
import { connect } from "react-redux";
|
||||
|
||||
import { Backdrop, Heading, Aside } from "asc-web-components";
|
||||
import { utils, Loaders, store } from "asc-web-common";
|
||||
import { utils, Loaders /* store */ } from "asc-web-common";
|
||||
|
||||
import { withTranslation, I18nextProvider } from "react-i18next";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
@ -32,7 +32,7 @@ const i18n = createI18N({
|
||||
|
||||
const { changeLanguage } = utils;
|
||||
|
||||
const { getIsTabletView, getSettingsHomepage } = store.auth.selectors;
|
||||
//const { getIsTabletView, getSettingsHomepage } = store.auth.selectors;
|
||||
|
||||
class PureVersionHistoryPanel extends React.Component {
|
||||
componentDidUpdate(preProps) {
|
||||
@ -123,8 +123,8 @@ VersionHistoryPanelContainer.propTypes = {
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
fileId: getVerHistoryFileId(state),
|
||||
isTabletView: getIsTabletView(state),
|
||||
homepage: getSettingsHomepage(state),
|
||||
//isTabletView: getIsTabletView(state),
|
||||
//homepage: getSettingsHomepage(state),
|
||||
//isLoading: getIsLoading(state),
|
||||
versions: getFileVersions(state),
|
||||
};
|
||||
@ -150,6 +150,8 @@ export default connect(
|
||||
const { isLoading } = mainFilesStore;
|
||||
|
||||
return {
|
||||
isTabletView: store.settingsStore.isTabletView,
|
||||
homepage: store.settingsStore.homepage,
|
||||
isLoading,
|
||||
};
|
||||
})(observer(VersionHistoryPanel))
|
||||
|
@ -1,19 +1,18 @@
|
||||
import { store as commonStore } from "asc-web-common";
|
||||
import store from "../store/store";
|
||||
//import store from "../store/store";
|
||||
|
||||
const { getCurrentProduct } = commonStore.auth.selectors;
|
||||
const { authStore } = commonStore;
|
||||
|
||||
//const { getCurrentProduct } = commonStore.auth.selectors;
|
||||
|
||||
export const setDocumentTitle = (subTitle = null) => {
|
||||
const state = store.getState();
|
||||
const { auth: commonState } = state;
|
||||
//const state = store.getState();
|
||||
//const { auth: commonState } = state;
|
||||
|
||||
const { isAuthenticated, settings } = commonState;
|
||||
const { organizationName } = settings;
|
||||
const { isAuthenticated, settingsStore, product: currentModule } = authStore;
|
||||
const { organizationName } = settingsStore;
|
||||
|
||||
let title;
|
||||
|
||||
const currentModule = getCurrentProduct(state);
|
||||
|
||||
if (subTitle) {
|
||||
if (isAuthenticated && currentModule) {
|
||||
title = subTitle + " - " + currentModule.title;
|
||||
|
142
products/ASC.Files/Client/src/store/DocserviceStore.js
Normal file
142
products/ASC.Files/Client/src/store/DocserviceStore.js
Normal file
@ -0,0 +1,142 @@
|
||||
import { makeObservable } from "mobx";
|
||||
import { presentInArray } from "../store/files/selectors";
|
||||
|
||||
class DocserviceStore {
|
||||
coauthorDocs = [".pptx", ".ppsx", ".xlsx", ".csv", ".docx", ".txt"];
|
||||
commentedDocs = [".docx", ".xlsx", ".pptx"];
|
||||
convertDocs = [
|
||||
".pptm",
|
||||
".ppt",
|
||||
".ppsm",
|
||||
".pps",
|
||||
".potx",
|
||||
".potm",
|
||||
".pot",
|
||||
".odp",
|
||||
".fodp",
|
||||
".otp",
|
||||
".xlsm",
|
||||
".xls",
|
||||
".xltx",
|
||||
".xltm",
|
||||
".xlt",
|
||||
".ods",
|
||||
".fods",
|
||||
".ots",
|
||||
".docm",
|
||||
".doc",
|
||||
".dotx",
|
||||
".dotm",
|
||||
".dot",
|
||||
".odt",
|
||||
".fodt",
|
||||
".ott",
|
||||
".rtf",
|
||||
];
|
||||
editedDocs = [
|
||||
".pptx",
|
||||
".pptm",
|
||||
".ppt",
|
||||
".ppsx",
|
||||
".ppsm",
|
||||
".pps",
|
||||
".potx",
|
||||
".potm",
|
||||
".pot",
|
||||
".odp",
|
||||
".fodp",
|
||||
".otp",
|
||||
".xlsx",
|
||||
".xlsm",
|
||||
".xls",
|
||||
".xltx",
|
||||
".xltm",
|
||||
".xlt",
|
||||
".ods",
|
||||
".fods",
|
||||
".ots",
|
||||
".csv",
|
||||
".docx",
|
||||
".docm",
|
||||
".doc",
|
||||
".dotx",
|
||||
".dotm",
|
||||
".dot",
|
||||
".odt",
|
||||
".fodt",
|
||||
".ott",
|
||||
".txt",
|
||||
".rtf",
|
||||
".mht",
|
||||
".html",
|
||||
".htm",
|
||||
];
|
||||
encryptedDocs = [".docx", ".xlsx", ".pptx"];
|
||||
formfillingDocs = [".docx"];
|
||||
customfilterDocs = [".xlsx"];
|
||||
reviewedDocs = [".docx"];
|
||||
viewedDocs = [
|
||||
".pptx",
|
||||
".pptm",
|
||||
".ppt",
|
||||
".ppsx",
|
||||
".ppsm",
|
||||
".pps",
|
||||
".potx",
|
||||
".potm",
|
||||
".pot",
|
||||
".odp",
|
||||
".fodp",
|
||||
".otp",
|
||||
".gslides",
|
||||
".xlsx",
|
||||
".xlsm",
|
||||
".xls",
|
||||
".xltx",
|
||||
".xltm",
|
||||
".xlt",
|
||||
".ods",
|
||||
".fods",
|
||||
".ots",
|
||||
".gsheet",
|
||||
".csv",
|
||||
".docx",
|
||||
".docm",
|
||||
".doc",
|
||||
".dotx",
|
||||
".dotm",
|
||||
".dot",
|
||||
".odt",
|
||||
".fodt",
|
||||
".ott",
|
||||
".gdoc",
|
||||
".txt",
|
||||
".rtf",
|
||||
".mht",
|
||||
".html",
|
||||
".htm",
|
||||
".epub",
|
||||
".pdf",
|
||||
".djvu",
|
||||
".xps",
|
||||
];
|
||||
|
||||
constructor() {
|
||||
makeObservable(this, {});
|
||||
}
|
||||
|
||||
canWebEdit = (extension) => {
|
||||
presentInArray(this.editedDocs, extension);
|
||||
};
|
||||
|
||||
getWebEditSelected = (selection, editedFormats) => {
|
||||
//getSelection,
|
||||
//getEditedFormats,
|
||||
return selection.some((selected) => {
|
||||
if (selected.isFolder === true || !selected.fileExst) return false;
|
||||
return editedFormats.find((format) => selected.fileExst === format);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export default DocserviceStore;
|
@ -2,6 +2,10 @@ import { makeObservable, action, observable, computed } from "mobx";
|
||||
import { api, constants, store } from "asc-web-common";
|
||||
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 { createTreeFolders } from "./files/selectors";
|
||||
|
||||
const { FilesFilter } = api;
|
||||
@ -11,10 +15,15 @@ const { authStore } = store;
|
||||
class FilesStore {
|
||||
fileActionStore = null;
|
||||
selectedFolderStore = null;
|
||||
treeFoldersStore = null;
|
||||
formatsStore = null;
|
||||
mediaViewersFormatsStore = null;
|
||||
docserviceStore = null;
|
||||
|
||||
firstLoad = true;
|
||||
files = [];
|
||||
folders = [];
|
||||
treeFolders = [];
|
||||
selection = [];
|
||||
selected = "close";
|
||||
filter = FilesFilter.getDefault(); //TODO: FILTER
|
||||
@ -23,6 +32,10 @@ class FilesStore {
|
||||
makeObservable(this, {
|
||||
fileActionStore: observable,
|
||||
selectedFolderStore: observable,
|
||||
treeFoldersStore: observable,
|
||||
formatsStore: observable,
|
||||
mediaViewersFormatsStore: observable,
|
||||
docserviceStore: observable,
|
||||
|
||||
firstLoad: observable,
|
||||
files: observable,
|
||||
@ -31,6 +44,8 @@ class FilesStore {
|
||||
filter: observable, //TODO: FILTER
|
||||
selection: observable,
|
||||
|
||||
filesList: computed,
|
||||
|
||||
setFirstLoad: action,
|
||||
setFiles: action,
|
||||
setFolders: action,
|
||||
@ -38,13 +53,16 @@ class FilesStore {
|
||||
setFilesFilter: action, //TODO: FILTER
|
||||
setSelection: action,
|
||||
fetchFiles: action,
|
||||
filesList: computed,
|
||||
selectFile: action,
|
||||
deselectFile: action,
|
||||
});
|
||||
|
||||
this.fileActionStore = new FileActionStore();
|
||||
this.selectedFolderStore = new SelectedFolderStore();
|
||||
this.treeFoldersStore = new TreeFoldersStore();
|
||||
this.formatsStore = new FormatsStore();
|
||||
this.mediaViewersFormatsStore = new MediaViewersFormatsStore();
|
||||
this.docserviceStore = new DocserviceStore();
|
||||
}
|
||||
|
||||
setFirstLoad = (firstLoad) => {
|
||||
@ -76,11 +94,10 @@ class FilesStore {
|
||||
const filterData = filter ? filter.clone() : FilesFilter.getDefault();
|
||||
filterData.folder = folderId;
|
||||
|
||||
//const state = getState();
|
||||
//const privacyFolder = getPrivacyFolder(state);
|
||||
const { privacyFolder } = this.treeFoldersStore;
|
||||
|
||||
/*if (privacyFolder && privacyFolder.id === +folderId) {
|
||||
const isEncryptionSupported = isEncryptionSupport(state);
|
||||
if (privacyFolder && privacyFolder.id === +folderId) {
|
||||
const isEncryptionSupported = authStore.settingsStore.isEncryptionSupport;
|
||||
|
||||
if (!isEncryptionSupported) {
|
||||
filterData.treeFolders = createTreeFolders(
|
||||
@ -88,24 +105,23 @@ class FilesStore {
|
||||
filterData
|
||||
);
|
||||
filterData.total = 0;
|
||||
dispatch(setFilesFilter(filterData));
|
||||
this.setFilesFilter(filterData); //TODO: FILTER
|
||||
if (clearFilter) {
|
||||
dispatch(setFolders([]));
|
||||
dispatch(setFiles([]));
|
||||
dispatch(setAction({ type: null }));
|
||||
dispatch(setSelected("close")); //this.setSelected("close");
|
||||
dispatch(
|
||||
setSelectedFolder({
|
||||
folders: [],
|
||||
...privacyFolder,
|
||||
pathParts: privacyFolder.pathParts,
|
||||
...{ new: 0 },
|
||||
})
|
||||
);
|
||||
this.setFolders([]);
|
||||
this.setFiles([]);
|
||||
this.fileActionStore.setAction({ type: null });
|
||||
this.setSelected("close");
|
||||
|
||||
this.selectedFolderStore.setSelectedFolder({
|
||||
folders: [],
|
||||
...privacyFolder,
|
||||
pathParts: privacyFolder.pathParts,
|
||||
...{ new: 0 },
|
||||
});
|
||||
}
|
||||
return Promise.resolve();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
return api.files.getFolder(folderId, filter).then((data) => {
|
||||
const isEncryptionSupport = authStore.settingsStore.isEncryptionSupport;
|
||||
@ -137,6 +153,214 @@ class FilesStore {
|
||||
});
|
||||
};
|
||||
|
||||
isFileSelected = (selection, fileId, parentId) => {
|
||||
const item = selection.find(
|
||||
(x) => x.id === fileId && x.parentId === parentId
|
||||
);
|
||||
|
||||
return item !== undefined;
|
||||
};
|
||||
|
||||
selectFile = (file) => {
|
||||
const { id, parentId } = file;
|
||||
const isFileSelected = this.isFileSelected(this.selection, id, parentId);
|
||||
if (!isFileSelected) this.selection.push(file);
|
||||
};
|
||||
|
||||
deselectFile = (file) => {
|
||||
const { id, parentId } = file;
|
||||
const isFileSelected = this.isFileSelected(this.selection, id, parentId);
|
||||
if (isFileSelected)
|
||||
this.selection = this.selection.filter((x) => x.id !== id);
|
||||
};
|
||||
|
||||
isCanShare = () => {
|
||||
const folderType = this.selectedFolderStore.rootFolderType;
|
||||
const isAdmin = authStore.isAdmin;
|
||||
const isVisitor =
|
||||
(authStore.userStore.user && authStore.userStore.user.isVisitor) || false;
|
||||
|
||||
if (isVisitor) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (folderType) {
|
||||
case FolderType.USER:
|
||||
return true;
|
||||
case FolderType.SHARE:
|
||||
return false;
|
||||
case FolderType.COMMON:
|
||||
return isAdmin;
|
||||
case FolderType.TRASH:
|
||||
return false;
|
||||
case FolderType.Favorites:
|
||||
return false;
|
||||
case FolderType.Recent:
|
||||
return false;
|
||||
case FolderType.Privacy:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
getFilesContextOptions = (item, canOpenPlayer, canShare) => {
|
||||
const {
|
||||
isRecycleBinFolder,
|
||||
isPrivacyFolder,
|
||||
isRecentFolder,
|
||||
//isFavoritesFolder
|
||||
} = this.treeFoldersStore;
|
||||
|
||||
const options = [];
|
||||
const isVisitor =
|
||||
(authStore.userStore.user && authStore.userStore.user.isVisitor) || false;
|
||||
const canChangeOwner = this.getCanShareOwnerChange();
|
||||
const haveAccess = this.getUserAccess();
|
||||
const isRootFolder =
|
||||
this.selectedFolderStore.pathParts &&
|
||||
this.selectedFolderStore.pathParts.length <= 1;
|
||||
|
||||
const isFile = !!item.fileExst;
|
||||
const isFavorite = item.fileStatus === 32;
|
||||
const isFullAccess = item.access < 2;
|
||||
const isThirdPartyFolder = item.providerKey && isRootFolder;
|
||||
|
||||
if (item.id <= 0) return [];
|
||||
|
||||
if (isRecycleBinFolder) {
|
||||
options.push("download");
|
||||
options.push("download-as");
|
||||
options.push("restore");
|
||||
options.push("separator0");
|
||||
options.push("delete");
|
||||
} else if (isPrivacyFolder) {
|
||||
if (isFile) {
|
||||
options.push("sharing-settings");
|
||||
options.push("separator0");
|
||||
options.push("show-version-history");
|
||||
options.push("separator1");
|
||||
}
|
||||
options.push("download");
|
||||
options.push("move");
|
||||
options.push("rename");
|
||||
options.push("separator2");
|
||||
options.push("delete");
|
||||
} else {
|
||||
if (!isFile) {
|
||||
options.push("open");
|
||||
options.push("separator0");
|
||||
}
|
||||
|
||||
//TODO: use canShare selector
|
||||
if (
|
||||
/*!(isRecentFolder || isFavoritesFolder || isVisitor) && */ canShare
|
||||
) {
|
||||
options.push("sharing-settings");
|
||||
}
|
||||
|
||||
if (isFile && !isVisitor) {
|
||||
options.push("send-by-email");
|
||||
}
|
||||
|
||||
canChangeOwner && options.push("owner-change");
|
||||
options.push("link-for-portal-users");
|
||||
|
||||
if (!isVisitor) {
|
||||
options.push("separator1");
|
||||
}
|
||||
|
||||
if (isFile) {
|
||||
options.push("show-version-history");
|
||||
if (!isVisitor) {
|
||||
if (isFullAccess && !item.providerKey && !canOpenPlayer) {
|
||||
options.push("finalize-version");
|
||||
options.push("block-unblock-version");
|
||||
}
|
||||
options.push("separator2");
|
||||
|
||||
if (isRecentFolder) {
|
||||
options.push("open-location");
|
||||
}
|
||||
if (!isFavorite) {
|
||||
options.push("mark-as-favorite");
|
||||
}
|
||||
} else {
|
||||
options.push("separator3");
|
||||
}
|
||||
|
||||
if (canOpenPlayer) {
|
||||
options.push("view");
|
||||
} else {
|
||||
options.push("edit");
|
||||
options.push("preview");
|
||||
}
|
||||
|
||||
options.push("download");
|
||||
}
|
||||
|
||||
if (!isVisitor) {
|
||||
!isThirdPartyFolder && haveAccess && options.push("move");
|
||||
options.push("copy");
|
||||
|
||||
if (isFile) {
|
||||
options.push("duplicate");
|
||||
}
|
||||
|
||||
haveAccess && options.push("rename");
|
||||
isThirdPartyFolder &&
|
||||
haveAccess &&
|
||||
options.push("change-thirdparty-info");
|
||||
options.push("separator3");
|
||||
haveAccess && options.push("delete");
|
||||
} else {
|
||||
options.push("copy");
|
||||
}
|
||||
}
|
||||
|
||||
if (isFavorite && !isRecycleBinFolder) {
|
||||
options.push("remove-from-favorites");
|
||||
}
|
||||
|
||||
return options;
|
||||
};
|
||||
|
||||
getUserAccess = () => {
|
||||
switch (this.selectedFolderStore.rootFolderType) {
|
||||
case FolderType.USER:
|
||||
return true;
|
||||
case FolderType.SHARE:
|
||||
return false;
|
||||
case FolderType.COMMON:
|
||||
return (
|
||||
authStore.isAdmin ||
|
||||
this.selection.some((x) => x.access === 0 || x.access === 1)
|
||||
);
|
||||
case FolderType.Privacy:
|
||||
return true;
|
||||
case FolderType.TRASH:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
getCanShareOwnerChange = () => {
|
||||
const { commonFolder } = this.treeFoldersStore;
|
||||
|
||||
const pathParts = this.selectedFolderStore.pathParts;
|
||||
const userId = authStore.userStore.user.id;
|
||||
return (
|
||||
(authStore.isAdmin ||
|
||||
(this.selection.length && this.selection[0].createdBy.id === userId)) &&
|
||||
pathParts &&
|
||||
commonFolder &&
|
||||
commonFolder.id === pathParts[0] &&
|
||||
this.selection.length &&
|
||||
!this.selection[0].providerKey
|
||||
);
|
||||
};
|
||||
|
||||
get filesList() {
|
||||
const items =
|
||||
this.folders && this.files
|
||||
@ -176,8 +400,17 @@ class FilesStore {
|
||||
providerKey,
|
||||
} = item;
|
||||
|
||||
//const canOpenPlayer = isMediaOrImage(item.fileExst)(state);
|
||||
//const contextOptions = getFilesContextOptions(item,isRecycleBin,isRecent,isFavorites,isVisitor,canOpenPlayer,canChangeOwner,haveAccess,canShare,isPrivacy,isRootFolder);
|
||||
const canOpenPlayer = this.mediaViewersFormatsStore.isMediaOrImage(
|
||||
item.fileExst
|
||||
);
|
||||
|
||||
const canShare = this.isCanShare();
|
||||
|
||||
const contextOptions = this.getFilesContextOptions(
|
||||
item,
|
||||
canOpenPlayer,
|
||||
canShare
|
||||
);
|
||||
const checked = this.isFileSelected(this.selection, id, parentId);
|
||||
|
||||
const selectedItem = this.selection.find(
|
||||
@ -186,22 +419,23 @@ class FilesStore {
|
||||
|
||||
const isFolder = selectedItem ? false : fileExst ? false : true;
|
||||
|
||||
//const draggable = selectedItem && !isRecycleBin && selectedItem.id !== actionId;
|
||||
const draggable =
|
||||
selectedItem &&
|
||||
!this.treeFoldersStore.isRecycleBinFolder &&
|
||||
selectedItem.id !== this.fileActionStore.id;
|
||||
|
||||
let value = fileExst ? `file_${id}` : `folder_${id}`;
|
||||
value += draggable ? "_draggable" : "";
|
||||
|
||||
//const isCanWebEdit = canWebEdit(item.fileExst)(state);
|
||||
|
||||
//const icon = getIcon(state, 24, fileExst, providerKey);
|
||||
|
||||
//value += draggable ? "_draggable" : "";
|
||||
const isCanWebEdit = this.docserviceStore.canWebEdit(item.fileExst);
|
||||
const icon = this.formatsStore.getIcon(24, fileExst, providerKey);
|
||||
|
||||
return {
|
||||
access,
|
||||
checked,
|
||||
comment,
|
||||
contentLength,
|
||||
//contextOptions,
|
||||
contextOptions,
|
||||
created,
|
||||
createdBy,
|
||||
fileExst,
|
||||
@ -210,7 +444,7 @@ class FilesStore {
|
||||
fileType,
|
||||
folderId,
|
||||
foldersCount,
|
||||
//icon,
|
||||
icon,
|
||||
id,
|
||||
isFolder,
|
||||
locked,
|
||||
@ -218,7 +452,7 @@ class FilesStore {
|
||||
parentId,
|
||||
pureContentLength,
|
||||
rootFolderType,
|
||||
//selectedItem,
|
||||
selectedItem,
|
||||
shared,
|
||||
title,
|
||||
updated,
|
||||
@ -229,36 +463,13 @@ class FilesStore {
|
||||
viewUrl,
|
||||
webUrl,
|
||||
providerKey,
|
||||
//draggable,
|
||||
//canOpenPlayer,
|
||||
//canWebEdit: isCanWebEdit,
|
||||
//canShare,
|
||||
draggable,
|
||||
canOpenPlayer,
|
||||
canWebEdit: isCanWebEdit,
|
||||
canShare,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
isFileSelected = (selection, fileId, parentId) => {
|
||||
const item = selection.find(
|
||||
(x) => x.id === fileId && x.parentId === parentId
|
||||
);
|
||||
|
||||
return item !== undefined;
|
||||
};
|
||||
|
||||
selectFile = (file) => {
|
||||
console.log("selectFile", file);
|
||||
const { id, parentId } = file;
|
||||
const isFileSelected = this.isFileSelected(this.selection, id, parentId);
|
||||
console.log("isFileSelected", isFileSelected);
|
||||
if (!isFileSelected) this.selection.push(file);
|
||||
};
|
||||
|
||||
deselectFile = (file) => {
|
||||
const { id, parentId } = file;
|
||||
const isFileSelected = this.isFileSelected(this.selection, id, parentId);
|
||||
if (isFileSelected)
|
||||
this.selection = this.selection.filter((x) => x.id !== id);
|
||||
};
|
||||
}
|
||||
|
||||
export default FilesStore;
|
||||
|
391
products/ASC.Files/Client/src/store/FormatsStore.js
Normal file
391
products/ASC.Files/Client/src/store/FormatsStore.js
Normal file
@ -0,0 +1,391 @@
|
||||
import { makeObservable } from "mobx";
|
||||
import { presentInArray } from "../store/files/selectors";
|
||||
|
||||
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",
|
||||
];
|
||||
|
||||
constructor() {
|
||||
makeObservable(this, {});
|
||||
}
|
||||
/*
|
||||
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`;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default FormatsStore;
|
@ -1,6 +1,5 @@
|
||||
import { makeObservable, action, observable } from "mobx";
|
||||
import { store, utils } from "asc-web-common";
|
||||
import TreeFoldersStore from "./TreeFoldersStore";
|
||||
import FilesStore from "./FilesStore";
|
||||
import config from "../../package.json";
|
||||
|
||||
@ -11,18 +10,15 @@ class MainFilesStore {
|
||||
isLoading = false;
|
||||
dragging = false;
|
||||
|
||||
treeFoldersStore = null;
|
||||
filesStore = null;
|
||||
|
||||
constructor() {
|
||||
this.treeFoldersStore = new TreeFoldersStore();
|
||||
this.filesStore = new FilesStore();
|
||||
|
||||
const pathname = window.location.pathname.toLowerCase();
|
||||
this.isEditor = pathname.indexOf("doceditor") !== -1;
|
||||
|
||||
makeObservable(this, {
|
||||
treeFoldersStore: observable,
|
||||
filesStore: observable,
|
||||
isLoaded: observable,
|
||||
isLoading: observable,
|
||||
@ -47,7 +43,7 @@ class MainFilesStore {
|
||||
this.isLoading = isLoading;
|
||||
};
|
||||
|
||||
initFiles = async () => {
|
||||
initFiles = () => {
|
||||
const isAuthenticated = authStore.isAuthenticated;
|
||||
const {
|
||||
getPortalCultures,
|
||||
@ -71,17 +67,15 @@ class MainFilesStore {
|
||||
if (!this.isEditor) {
|
||||
requests.push(
|
||||
getPortalCultures(),
|
||||
this.treeFoldersStore.fetchTreeFolders()
|
||||
this.filesStore.treeFoldersStore.fetchTreeFolders()
|
||||
);
|
||||
|
||||
if (isDesktopClient) {
|
||||
requests.push(getIsEncryptionSupport(), getEncryptionKeys());
|
||||
}
|
||||
}
|
||||
return Promise.all(requests).finally(() => {
|
||||
this.setIsLoaded(true);
|
||||
utils.updateTempContent();
|
||||
});
|
||||
|
||||
return Promise.all(requests);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,47 @@
|
||||
import { makeObservable } from "mobx";
|
||||
|
||||
class MediaViewersFormatsStore {
|
||||
images = [
|
||||
".bmp",
|
||||
".gif",
|
||||
".jpeg",
|
||||
".jpg",
|
||||
".png",
|
||||
".ico",
|
||||
".tif",
|
||||
".tiff",
|
||||
".webp",
|
||||
];
|
||||
media = [
|
||||
".aac",
|
||||
".flac",
|
||||
".m4a",
|
||||
".mp3",
|
||||
".oga",
|
||||
".ogg",
|
||||
".wav",
|
||||
".f4v",
|
||||
".m4v",
|
||||
".mov",
|
||||
".mp4",
|
||||
".ogv",
|
||||
".webm",
|
||||
".avi",
|
||||
".mpg",
|
||||
".mpeg",
|
||||
".wmv",
|
||||
];
|
||||
|
||||
constructor() {
|
||||
makeObservable(this, {});
|
||||
}
|
||||
|
||||
isMediaOrImage = (fileExst) => {
|
||||
if (this.media.includes(fileExst) || this.images.includes(fileExst)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
export default MediaViewersFormatsStore;
|
@ -1,15 +1,173 @@
|
||||
import { makeAutoObservable } from "mobx";
|
||||
import { api } from "asc-web-common";
|
||||
import { makeObservable, observable, computed, action } from "mobx";
|
||||
import { api, constants } from "asc-web-common";
|
||||
import SelectedFolderStore from "./SelectedFolderStore";
|
||||
|
||||
const { FolderType } = constants;
|
||||
class TreeFoldersStore {
|
||||
selectedFolderStore = null;
|
||||
|
||||
treeFolders = [];
|
||||
|
||||
constructor() {
|
||||
makeAutoObservable(this);
|
||||
makeObservable(this, {
|
||||
selectedFolderStore: observable,
|
||||
|
||||
treeFolders: observable,
|
||||
|
||||
myFolderId: computed,
|
||||
//shareFolderId: computed,
|
||||
//favoritesFolderId: computed,
|
||||
//recentFolderId: computed,
|
||||
commonFolderId: computed,
|
||||
|
||||
myFolder: computed,
|
||||
shareFolder: computed,
|
||||
favoritesFolder: computed,
|
||||
recentFolder: computed,
|
||||
privacyFolder: computed,
|
||||
commonFolder: computed,
|
||||
recycleBinFolder: computed,
|
||||
|
||||
isMyFolder: computed,
|
||||
isShareFolder: computed,
|
||||
isFavoritesFolder: computed,
|
||||
isRecentFolder: computed,
|
||||
isPrivacyFolder: computed,
|
||||
isCommonFolder: computed,
|
||||
isRecycleBinFolder: computed,
|
||||
|
||||
fetchTreeFolders: action,
|
||||
setTreeFolders: action,
|
||||
});
|
||||
|
||||
this.selectedFolderStore = new SelectedFolderStore();
|
||||
}
|
||||
|
||||
fetchTreeFolders = async () => {
|
||||
this.treeFolders = await api.files.getFoldersTree();
|
||||
const treeFolders = await api.files.getFoldersTree();
|
||||
this.setTreeFolders(treeFolders);
|
||||
};
|
||||
|
||||
setTreeFolders = (treeFolders) => {
|
||||
this.treeFolders = treeFolders;
|
||||
};
|
||||
|
||||
/////////////////////////////////////TODO: FOLDER
|
||||
|
||||
get myFolder() {
|
||||
return this.treeFolders.find((x) => x.rootFolderName === "@my");
|
||||
}
|
||||
|
||||
get shareFolder() {
|
||||
return this.treeFolders.find((x) => x.rootFolderName === "@share");
|
||||
}
|
||||
|
||||
get favoritesFolder() {
|
||||
return this.treeFolders.find((x) => x.rootFolderName === "@favorites");
|
||||
}
|
||||
|
||||
get recentFolder() {
|
||||
return this.treeFolders.find((x) => x.rootFolderName === "@recent");
|
||||
}
|
||||
|
||||
get privacyFolder() {
|
||||
return this.treeFolders.find(
|
||||
(x) => x.rootFolderType === FolderType.Privacy
|
||||
);
|
||||
}
|
||||
|
||||
get commonFolder() {
|
||||
return this.treeFolders.find((x) => x.rootFolderName === "@common");
|
||||
}
|
||||
|
||||
get recycleBinFolder() {
|
||||
return this.treeFolders.find((x) => x.rootFolderName === "@trash");
|
||||
}
|
||||
|
||||
/////////////////////////////////////TODO: ID
|
||||
|
||||
get myFolderId() {
|
||||
return this.myFolder ? this.myFolder.id : null;
|
||||
}
|
||||
|
||||
// get shareFolderId() {
|
||||
// return this.shareFolder ?this.shareFolder.id : null;
|
||||
// }
|
||||
|
||||
// get favoritesFolderId() {
|
||||
// return this.favoritesFolder ? this.favoritesFolder.id : null;
|
||||
// }
|
||||
|
||||
// get recentFolderId() {
|
||||
|
||||
// return this.recentFolder ? this.recentFolder.id : null;
|
||||
// }
|
||||
|
||||
get commonFolderId() {
|
||||
return this.commonFolder ? this.commonFolder.id : null;
|
||||
}
|
||||
|
||||
/////////////////////////////////////TODO: IS
|
||||
|
||||
get isMyFolder() {
|
||||
return this.myFolder && this.myFolder.id === this.selectedFolderStore.id;
|
||||
}
|
||||
|
||||
get isShareFolder() {
|
||||
return (
|
||||
this.shareFolder && this.shareFolder.id === this.selectedFolderStore.id
|
||||
);
|
||||
}
|
||||
|
||||
get isFavoritesFolder() {
|
||||
return (
|
||||
this.favoritesFolder &&
|
||||
this.selectedFolderStore.id === this.favoritesFolder.id
|
||||
);
|
||||
}
|
||||
|
||||
get isRecentFolder() {
|
||||
return (
|
||||
this.recentFolder && this.selectedFolderStore.id === this.recentFolder.id
|
||||
);
|
||||
}
|
||||
|
||||
get isPrivacyFolder() {
|
||||
return (
|
||||
this.privacyFolder &&
|
||||
this.privacyFolder.rootFolderType ===
|
||||
this.selectedFolderStore.rootFolderType
|
||||
);
|
||||
}
|
||||
|
||||
get isCommonFolder() {
|
||||
return (
|
||||
this.commonFolder && this.commonFolder.id === this.selectedFolderStore.id
|
||||
);
|
||||
}
|
||||
|
||||
get isRecycleBinFolder() {
|
||||
return (
|
||||
this.recycleBinFolder &&
|
||||
this.selectedFolderStore.id === this.recycleBinFolder.id
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default TreeFoldersStore;
|
||||
|
||||
/*
|
||||
|
||||
export const getMyDirectoryFolders = createSelector(getMyFolder, (myFolder) => {
|
||||
if (myFolder) return myFolder.folders;
|
||||
});
|
||||
|
||||
export const getCommonDirectoryFolders = createSelector(
|
||||
getCommonFolder,
|
||||
(commonFolder) => {
|
||||
if (commonFolder) return commonFolder.folders;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
*/
|
||||
|
@ -11,7 +11,7 @@ const {
|
||||
isDesktopClient,
|
||||
} = store.auth.selectors;
|
||||
|
||||
const presentInArray = (array, search, caseInsensitive = false) => {
|
||||
export const presentInArray = (array, search, caseInsensitive = false) => {
|
||||
let pattern = caseInsensitive ? search.toLowerCase() : search;
|
||||
const result = array.findIndex((item) => item === pattern);
|
||||
return result === -1 ? false : true;
|
||||
|
Loading…
Reference in New Issue
Block a user