Web: Files: added files uploader

This commit is contained in:
Nikita Gopienko 2021-02-16 16:48:04 +03:00
parent 52c9e4daac
commit 7e86c680e3
43 changed files with 1387 additions and 971 deletions

View File

@ -239,19 +239,19 @@ class App extends React.Component {
// };
// };
export default inject(({ auth, mainFilesStore }) => ({
export default inject(({ auth, initFilesStore }) => ({
isDesktop: auth.settingsStore.isDesktopClient,
user: auth.userStore.user,
isAuthenticated: auth.isAuthenticated,
homepage: auth.settingsStore.homepage || config.homepage,
encryptionKeys: auth.settingsStore.encryptionKeys,
isEncryption: auth.settingsStore.isEncryptionSupport,
isLoaded: mainFilesStore.isLoaded,
isLoaded: initFilesStore.isLoaded,
setIsLoaded: mainFilesStore.setIsLoaded,
setIsLoaded: initFilesStore.setIsLoaded,
setEncryptionKeys: auth.settingsStore.setEncryptionKeys,
loadFilesInfo: async () => {
await auth.init();
await mainFilesStore.initFiles();
await initFilesStore.initFiles();
},
}))(observer(App));

View File

@ -17,8 +17,8 @@ import { createI18N } from "../../../helpers/i18n";
// getOAuthToken,
// openConnectWindow,
// setConnectItem,
//setSelectedFolder,
//setSelectedNode,
//setSelectedFolder,
//setSelectedNode,
// setShowThirdPartyPanel,
// } from "../../../store/files/actions";
import { inject, observer } from "mobx-react";
@ -251,37 +251,39 @@ const ThirdPartyList = (props) => {
// setShowThirdPartyPanel,
// })(ThirdPartyList);
export default inject(({ mainFilesStore, settingsStore }) => {
const { setIsLoading, filesStore } = mainFilesStore;
export default inject(
({ initFilesStore, filesStore, settingsStore, treeFoldersStore }) => {
const { setIsLoading } = initFilesStore;
const { setSelectedFolder } = filesStore.selectedFolderStore;
const { setSelectedNode } = filesStore.treeFoldersStore;
const {
setConnectItem,
setShowThirdPartyPanel,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
webDavConnectItem,
getOAuthToken,
openConnectWindow,
} = settingsStore.thirdPartyStore;
const { setSelectedNode } = treeFoldersStore;
const {
setConnectItem,
setShowThirdPartyPanel,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
webDavConnectItem,
getOAuthToken,
openConnectWindow,
} = settingsStore.thirdPartyStore;
return {
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
webDavConnectItem,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
webDavConnectItem,
setIsLoading,
setSelectedFolder,
setSelectedNode,
setConnectItem,
setShowThirdPartyPanel,
getOAuthToken,
openConnectWindow,
setConnectItem,
setShowThirdPartyPanel,
getOAuthToken,
openConnectWindow,
};
})(observer(ThirdPartyList));
}
)(observer(ThirdPartyList));

View File

@ -9,24 +9,24 @@ import {
} from "asc-web-common";
// import { connect } from "react-redux";
// import {
//setFilter,
//setTreeFolders,
//setDragItem,
//setDragging,
//setIsLoading,
//setFilter,
//setTreeFolders,
//setDragItem,
//setDragging,
//setIsLoading,
// setUpdateTree,
// } from "../../../store/files/actions";
// import {
//getTreeFolders,
//getFilter,
//getDragging,
//getTreeFolders,
//getFilter,
//getDragging,
// getUpdateTree,
//getSelectedFolderId,
//getMyFolderId,
//getShareFolderId,
//getRootFolderId,
//getSelectedFolderId,
//getMyFolderId,
//getShareFolderId,
//getRootFolderId,
// getDraggableItems,
//getIsPrivacyFolder,
//getIsPrivacyFolder,
// } from "../../../store/files/selectors";
import { onConvertFiles } from "../../../helpers/files-converter";
import { observer, inject } from "mobx-react";
@ -503,49 +503,38 @@ TreeFolders.defaultProps = {
// function mapStateToProps(state) {
// return {
//treeFolders: getTreeFolders(state),
//filter: getFilter(state),
//myId: getMyFolderId(state),
//commonId: getShareFolderId(state),
//currentId: getSelectedFolderId(state),
//isAdmin: isAdmin(state),
//dragging: getDragging(state),
//treeFolders: getTreeFolders(state),
//filter: getFilter(state),
//myId: getMyFolderId(state),
//commonId: getShareFolderId(state),
//currentId: getSelectedFolderId(state),
//isAdmin: isAdmin(state),
//dragging: getDragging(state),
// updateTree: getUpdateTree(state),
//rootFolderId: getRootFolderId(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)),
//setDragItem: (dragItem) => dispatch(setDragItem(dragItem)),
//setDragging: (dragging) => dispatch(setDragging(dragging)),
//setIsLoading: (isLoading) => dispatch(setIsLoading(isLoading)),
//setFilter: (filter) => dispatch(setFilter(filter)),
//setTreeFolders: (treeFolders) => dispatch(setTreeFolders(treeFolders)),
//setDragItem: (dragItem) => dispatch(setDragItem(dragItem)),
//setDragging: (dragging) => dispatch(setDragging(dragging)),
//setIsLoading: (isLoading) => dispatch(setIsLoading(isLoading)),
// setUpdateTree: (updateTree) => dispatch(setUpdateTree(updateTree)),
// };
// };
//export default connect(mapStateToProps, mapDispatchToProps)(TreeFolders);
export default inject(({ auth, mainFilesStore }) => {
const {
filesStore,
setIsLoading,
dragging,
setDragging,
setDragItem,
} = mainFilesStore;
const {
treeFoldersStore,
selectedFolderStore,
filter,
setFilter,
selection,
} = filesStore;
export default inject(
({ auth, initFilesStore, filesStore, treeFoldersStore }) => {
const { setIsLoading, dragging, setDragging, setDragItem } = initFilesStore;
const { selectedFolderStore, filter, setFilter, selection } = filesStore;
const {
treeFolders,
@ -567,7 +556,7 @@ export default inject(({ auth, mainFilesStore }) => {
commonId: commonFolderId,
isPrivacy: isPrivacyFolder,
filter,
draggableItems: dragging ? selection : false,
draggableItems: dragging ? selection : false,
setDragging,
setIsLoading,
@ -575,4 +564,5 @@ export default inject(({ auth, mainFilesStore }) => {
setFilter,
setDragItem,
};
})(observer(TreeFolders));
}
)(observer(TreeFolders));

View File

@ -8,17 +8,17 @@ import { withTranslation, I18nextProvider } from "react-i18next";
import { createI18N } from "../../../helpers/i18n";
// import {
//setSelectedNode,
//setSelectedNode,
// setExpandSettingsTree,
// getFilesSettings,
//setSelectedFolder,
//setIsLoading,
//setSelectedFolder,
//setIsLoading,
// } from "../../../store/files/actions";
import //getIsLoading,
//getSettingsSelectedTreeNode,
//getSettingsSelectedTreeNode,
//getExpandedSetting,
//getEnableThirdParty,
//getSelectedTreeNode,
//getSelectedTreeNode,
"../../../store/files/selectors";
import { inject, observer } from "mobx-react";
//const { isAdmin } = initStore.auth.selectors;
@ -206,12 +206,12 @@ const TreeSettings = (props) => {
// function mapStateToProps(state) {
// return {
//selectedTreeNode: getSettingsSelectedTreeNode(state),
//selectedTreeNode: getSettingsSelectedTreeNode(state),
// expandedSetting: getExpandedSetting(state),
// enableThirdParty: getEnableThirdParty(state),
//isAdmin: isAdmin(state),
//isLoading: getIsLoading(state),
//selectedFolder: getSelectedTreeNode(state),
//isAdmin: isAdmin(state),
//isLoading: getIsLoading(state),
//selectedFolder: getSelectedTreeNode(state),
// };
// }
@ -223,28 +223,30 @@ const TreeSettings = (props) => {
// setIsLoading,
// })(withRouter(TreeSettings));
export default inject(({ auth, mainFilesStore, settingsStore }) => {
const { setIsLoading, filesStore, isLoading } = mainFilesStore;
export default inject(
({ auth, initFilesStore, filesStore, settingsStore, treeFoldersStore }) => {
const { setIsLoading, isLoading } = initFilesStore;
const { setSelectedFolder } = filesStore.selectedFolderStore;
const { selectedTreeNode, setSelectedNode } = filesStore.treeFoldersStore;
const {
getFilesSettings,
enableThirdParty,
expandedSetting,
setExpandSettingsTree,
} = settingsStore;
const { selectedTreeNode, setSelectedNode } = treeFoldersStore;
const {
getFilesSettings,
enableThirdParty,
expandedSetting,
setExpandSettingsTree,
} = settingsStore;
return {
isAdmin: auth.isAdmin,
isLoading,
selectedTreeNode,
enableThirdParty,
expandedSetting,
enableThirdParty,
expandedSetting,
setIsLoading,
setSelectedFolder,
setSelectedNode,
getFilesSettings,
setExpandSettingsTree,
getFilesSettings,
setExpandSettingsTree,
};
})(withRouter(observer(TreeSettings)));
}
)(withRouter(observer(TreeSettings)));

View File

@ -157,14 +157,9 @@ class ArticleBodyContent extends React.Component {
// };
//export default connect(mapStateToProps, mapDispatchToProps)(ArticleBodyContent);
export default inject(({ auth, mainFilesStore }) => {
const { setIsLoading, filesStore } = mainFilesStore;
const {
fetchFiles,
treeFoldersStore,
selectedFolderStore,
filter,
} = filesStore;
export default inject(({ initFilesStore, filesStore, treeFoldersStore }) => {
const { setIsLoading } = initFilesStore;
const { fetchFiles, selectedFolderStore, filter } = filesStore;
const { treeFolders, setSelectedNode } = treeFoldersStore;
const selectedTreeNode = [selectedFolderStore.id + ""];

View File

@ -8,10 +8,10 @@ import { isMobile } from "react-device-detect";
//import { setAction, startUpload } from "../../../store/files/actions";
// import {
// canCreate,
//getFilter,
//getSelectedFolder,
//getFirstLoad,
//getIsPrivacyFolder,
//getFilter,
//getSelectedFolder,
//getFirstLoad,
//getIsPrivacyFolder,
// } from "../../../store/files/selectors";
import {
utils as commonUtils,
@ -185,27 +185,20 @@ ArticleMainButtonContent.propTypes = {
// const mapStateToProps = (state) => {
// return {
// canCreate: canCreate(state),
//firstLoad: getFirstLoad(state),
//settings: getSettings(state),
//filter: getFilter(state),
//selectedFolder: getSelectedFolder(state),
//isPrivacy: getIsPrivacyFolder(state),
//firstLoad: getFirstLoad(state),
//settings: getSettings(state),
//filter: getFilter(state),
//selectedFolder: getSelectedFolder(state),
//isPrivacy: getIsPrivacyFolder(state),
// };
// };
export default inject(({ auth, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const {
firstLoad,
fileActionStore,
treeFoldersStore,
filter,
canCreate,
uploadDataStore,
} = filesStore;
export default inject(
({ auth, filesStore, uploadDataStore, treeFoldersStore }) => {
const { firstLoad, fileActionStore, filter, canCreate } = filesStore;
const { isPrivacyFolder } = treeFoldersStore;
const { id } = filesStore.selectedFolderStore;
const { startUpload } = uploadDataStore;
const { startUpload } = uploadDataStore;
return {
homepage: auth.settingsStore.homepage,
@ -213,9 +206,10 @@ export default inject(({ auth, mainFilesStore }) => {
selectedFolderId: id,
isPrivacy: isPrivacyFolder,
filter,
canCreate,
canCreate,
setAction: fileActionStore.setAction,
startUpload,
setAction: fileActionStore.setAction,
startUpload,
};
})(withRouter(observer(ArticleMainButtonContent)));
}
)(withRouter(observer(ArticleMainButtonContent)));

View File

@ -15,9 +15,9 @@ import { utils as commonUtils } from "asc-web-common";
// getOAuthToken,
// openConnectWindow,
// saveThirdParty,
//setTreeFolders,
//setTreeFolders,
// setUpdateTree,
//fetchFiles,
//fetchFiles,
// } from "../../../store/files/actions";
import {
//getTreeFolders,
@ -357,11 +357,11 @@ 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),
//selectedFolder: getSelectedFolder(state),
// };
// };
@ -373,40 +373,39 @@ const ConnectDialog = (props) => {
// fetchFiles,
// })(ConnectDialog);
export default inject(({ mainFilesStore, settingsStore }) => {
const { filesStore } = mainFilesStore;
export default inject(({ filesStore, settingsStore, treeFoldersStore }) => {
const {
providers,
getOAuthToken,
saveThirdParty,
openConnectWindow,
fetchThirdPartyProviders,
fetchThirdPartyProviders,
} = settingsStore.thirdPartyStore;
const { fetchFiles, treeFoldersStore } = filesStore;
const { fetchFiles } = filesStore;
const {
treeFolders,
setTreeFolders,
myFolderId,
commonFolderId,
const {
treeFolders,
setTreeFolders,
myFolderId,
commonFolderId,
fetchTreeFolders,
} = treeFoldersStore;
const { id, folders } = filesStore.selectedFolderStore;
} = treeFoldersStore;
const { id, folders } = filesStore.selectedFolderStore;
return {
selectedFolderId: id,
selectedFolderFolders: folders,
treeFolders,
myFolderId,
commonFolderId,
return {
selectedFolderId: id,
selectedFolderFolders: folders,
treeFolders,
myFolderId,
commonFolderId,
providers,
fetchFiles,
setTreeFolders,
fetchFiles,
setTreeFolders,
getOAuthToken,
saveThirdParty,
openConnectWindow,
fetchThirdPartyProviders,
fetchTreeFolders,
};
};
})(observer(ConnectDialog));

View File

@ -6,7 +6,7 @@ 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";
@ -125,14 +125,13 @@ const ConvertDialog = (props) => (
// convertUploadedFiles,
// })(withRouter(ConvertDialog));
export default inject(({ mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const { setTreeFolders } = filesStore.treeFoldersStore;
const { setDialogVisible, convertUploadedFiles } = filesStore.uploadDataStore;
export default inject(({ uploadDataStore, treeFoldersStore }) => {
const { setTreeFolders } = treeFoldersStore;
const { setDialogVisible, convertUploadedFiles } = uploadDataStore;
return {
setTreeFolders,
return {
setTreeFolders,
setDialogVisible,
convertUploadedFiles,
};
};
})(withRouter(observer(ConvertDialog)));

View File

@ -12,9 +12,9 @@ import {
import { withTranslation } from "react-i18next";
import { api, utils, toastr } from "asc-web-common";
import //fetchFiles,
//setTreeFolders,
//setSecondaryProgressBarData,
//clearSecondaryProgressData,
//setTreeFolders,
//setSecondaryProgressBarData,
//clearSecondaryProgressData,
//setUpdateTree,
"../../../store/files/actions";
import { TIMEOUT } from "../../../helpers/constants";
@ -304,13 +304,13 @@ const DeleteDialog = (props) => (
// const mapStateToProps = (state) => {
// return {
//currentFolderId: getSelectedFolderId(state),
//filter: getFilter(state),
//treeFolders: getTreeFolders(state),
//isLoading: getIsLoading(state),
//isRecycleBinFolder: getIsRecycleBinFolder(state),
//isPrivacy: getIsPrivacyFolder(state),
//selection: getSelection(state),
//currentFolderId: getSelectedFolderId(state),
//filter: getFilter(state),
//treeFolders: getTreeFolders(state),
//isLoading: getIsLoading(state),
//isRecycleBinFolder: getIsRecycleBinFolder(state),
//isPrivacy: getIsPrivacyFolder(state),
//selection: getSelection(state),
// isRootFolder: isRootFolder(state),
// };
// };
@ -323,16 +323,11 @@ const DeleteDialog = (props) => (
// fetchFiles,
// })(withRouter(DeleteDialog));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const {
fetchFiles,
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
} = filesStore;
export default inject(
({ initFilesStore, filesStore, uploadDataStore, treeFoldersStore }) => {
const { isLoading } = initFilesStore;
const { secondaryProgressDataStore } = uploadDataStore;
const { fetchFiles, selection, selectedFolderStore, filter } = filesStore;
const {
treeFolders,
@ -354,11 +349,12 @@ export default inject(({ auth, mainFilesStore }) => {
isRecycleBinFolder,
isPrivacy: isPrivacyFolder,
filter,
isRootFolder: selectedFolderStore.isRootFolder,
isRootFolder: selectedFolderStore.isRootFolder,
fetchFiles,
setTreeFolders,
setSecondaryProgressBarData,
clearSecondaryProgressData,
};
})(withRouter(observer(DeleteDialog)));
}
)(withRouter(observer(DeleteDialog)));

View File

@ -7,9 +7,9 @@ import { utils, toastr, api } from "asc-web-common";
// import {
// deleteThirdParty,
// setThirdPartyProviders,
//fetchFiles,
//fetchFiles,
// setUpdateTree,
//setTreeFolders,
//setTreeFolders,
// } from "../../../store/files/actions";
import {
//getThirdPartyProviders,
@ -60,7 +60,7 @@ class DeleteThirdPartyDialogComponent extends React.Component {
currentFolderId,
commonId,
myId,
deleteThirdParty
deleteThirdParty,
} = this.props;
const providerItem = providers.find((x) => x.provider_id === removeItem.id);
@ -122,10 +122,10 @@ const DeleteThirdPartyDialog = (props) => (
// const mapStateToProps = (state) => {
// return {
// providers: getThirdPartyProviders(state),
//currentFolderId: getSelectedFolderId(state),
//treeFolders: getTreeFolders(state),
//commonId: getCommonFolderId(state),
//myId: getMyFolderId(state),
//currentFolderId: getSelectedFolderId(state),
//treeFolders: getTreeFolders(state),
//commonId: getCommonFolderId(state),
//myId: getMyFolderId(state),
// };
// };
@ -136,28 +136,27 @@ const DeleteThirdPartyDialog = (props) => (
// setTreeFolders,
// })(withRouter(DeleteThirdPartyDialog));
export default inject(({ auth, mainFilesStore, thirdParty }) => {
const { filesStore } = mainFilesStore;
const { providers, setThirdPartyProviders, deleteThirdParty } = thirdParty;
const { fetchFiles, treeFoldersStore } = filesStore;
export default inject(({ auth, filesStore, thirdParty, treeFoldersStore }) => {
const { providers, setThirdPartyProviders, deleteThirdParty } = thirdParty;
const { fetchFiles } = filesStore;
const {
treeFolders,
setTreeFolders,
myFolderId,
commonFolderId,
} = treeFoldersStore;
const {
treeFolders,
setTreeFolders,
myFolderId,
commonFolderId,
} = treeFoldersStore;
return {
currentFolderId: filesStore.selectedFolderStore.id,
treeFolders,
myId: myFolderId,
commonId: commonFolderId,
providers,
return {
currentFolderId: filesStore.selectedFolderStore.id,
treeFolders,
myId: myFolderId,
commonId: commonFolderId,
providers,
fetchFiles,
setTreeFolders,
setThirdPartyProviders,
deleteThirdParty
};
})(withRouter(observer(DeleteThirdPartyDialog)))
fetchFiles,
setTreeFolders,
setThirdPartyProviders,
deleteThirdParty,
};
})(withRouter(observer(DeleteThirdPartyDialog)));

View File

@ -615,18 +615,18 @@ const DownloadDialog = (props) => (
// clearSecondaryProgressData,
// })(withRouter(DownloadDialog));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const { sortedFiles, secondaryProgressDataStore } = filesStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
export default inject(({ filesStore, uploadDataStore }) => {
const { secondaryProgressDataStore } = uploadDataStore;
const { sortedFiles } = filesStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
return {
return {
sortedFiles,
setSecondaryProgressBarData,
clearSecondaryProgressData,
};
setSecondaryProgressBarData,
clearSecondaryProgressData,
};
})(withRouter(observer(DownloadDialog)));

View File

@ -187,9 +187,10 @@ const EmptyTrashDialog = (props) => (
// fetchFiles,
// })(withRouter(EmptyTrashDialog));
export default inject(({ mainFilesStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const { fetchFiles, filter, secondaryProgressDataStore } = filesStore;
export default inject(({ initFilesStore, filesStore, uploadDataStore }) => {
const { isLoading } = initFilesStore;
const { secondaryProgressDataStore } = uploadDataStore;
const { fetchFiles, filter } = filesStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,

View File

@ -35,9 +35,7 @@ const Panels = (props) => {
// };
// }
export default inject(({ mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const { dialogsStore, uploadDataStore } = filesStore;
export default inject(({ dialogsStore, uploadDataStore }) => {
const { sharingPanelVisible } = dialogsStore;
const { uploadPanelVisible } = uploadDataStore;

View File

@ -797,84 +797,99 @@ class FilesRowContent extends React.PureComponent {
// replaceFileStream,
// })(withRouter(withTranslation()(FilesRowContent)));
export default inject(({ auth, mainFilesStore, formatsStore }, { item }) => {
const { replaceFileStream, getEncryptionAccess, setEncryptionAccess } = auth;
const { homepage, culture, isDesktopClient } = auth.settingsStore;
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
export default inject(
(
{
auth,
initFilesStore,
filesStore,
formatsStore,
uploadDataStore,
treeFoldersStore,
},
{ item }
) => {
const {
replaceFileStream,
getEncryptionAccess,
setEncryptionAccess,
} = auth;
const { homepage, culture, isDesktopClient } = auth.settingsStore;
const { setIsLoading, isLoading } = initFilesStore;
const { secondaryProgressDataStore } = uploadDataStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const {
folders,
fetchFiles,
treeFoldersStore,
filter,
selectedFolderStore,
secondaryProgressDataStore,
setNewRowItems,
newRowItems,
createFile,
updateFile,
renameFolder,
} = filesStore;
const {
folders,
fetchFiles,
filter,
selectedFolderStore,
setNewRowItems,
newRowItems,
createFile,
updateFile,
renameFolder,
} = filesStore;
const {
treeFolders,
setTreeFolders,
isRecycleBinFolder,
isPrivacyFolder,
} = treeFoldersStore;
const {
treeFolders,
setTreeFolders,
isRecycleBinFolder,
isPrivacyFolder,
} = treeFoldersStore;
const { type, extension, id } = filesStore.fileActionStore;
const { type, extension, id } = filesStore.fileActionStore;
const fileAction = { type, extension, id };
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const fileAction = { type, extension, id };
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const canConvert = docserviceStore.canConvert(item.fileExst);
const isVideo = mediaViewersFormatsStore.isVideo(item.fileExst);
const isImage = iconFormatsStore.isImage(item.fileExst);
const isSound = iconFormatsStore.isSound(item.fileExst);
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const canConvert = docserviceStore.canConvert(item.fileExst);
const isVideo = mediaViewersFormatsStore.isVideo(item.fileExst);
const isImage = iconFormatsStore.isImage(item.fileExst);
const isSound = iconFormatsStore.isSound(item.fileExst);
return {
isDesktop: isDesktopClient,
homepage,
culture,
fileAction,
folders,
selectedFolderId: selectedFolderStore.id,
selectedFolderPathParts: selectedFolderStore.pathParts,
newItems: selectedFolderStore.new,
parentFolder: selectedFolderStore.parentId,
isLoading,
treeFolders,
isTrashFolder: isRecycleBinFolder,
isPrivacy: isPrivacyFolder,
filter,
canWebEdit,
canConvert,
isVideo,
isImage,
isSound,
newRowItems,
return {
isDesktop: isDesktopClient,
homepage,
culture,
fileAction,
folders,
selectedFolderId: selectedFolderStore.id,
selectedFolderPathParts: selectedFolderStore.pathParts,
newItems: selectedFolderStore.new,
parentFolder: selectedFolderStore.parentId,
isLoading,
treeFolders,
isTrashFolder: isRecycleBinFolder,
isPrivacy: isPrivacyFolder,
filter,
canWebEdit,
canConvert,
isVideo,
isImage,
isSound,
newRowItems,
setIsLoading,
fetchFiles,
setTreeFolders,
setSecondaryProgressBarData,
clearSecondaryProgressData,
setNewRowItems,
createFile,
updateFile,
renameFolder,
replaceFileStream,
getEncryptionAccess,
setEncryptionAccess,
};
})(withRouter(withTranslation()(observer(FilesRowContent))));
setIsLoading,
fetchFiles,
setTreeFolders,
setSecondaryProgressBarData,
clearSecondaryProgressData,
setNewRowItems,
createFile,
updateFile,
renameFolder,
replaceFileStream,
getEncryptionAccess,
setEncryptionAccess,
};
}
)(withRouter(withTranslation()(observer(FilesRowContent))));

View File

@ -445,18 +445,18 @@ class FilesTileContent extends React.PureComponent {
// function mapStateToProps(state, props) {
// return {
//filter: getFilter(state),
//fileAction: getFileAction(state),
//parentFolder: getSelectedFolderParentId(state),
//isTrashFolder: getIsRecycleBinFolder(state),
//treeFolders: getTreeFolders(state),
//rootFolderId: getRootFolderId(state),
//newItems: getSelectedFolderNew(state),
//selectedFolder: getSelectedFolder(state),
//folders: getFolders(state),
//filter: getFilter(state),
//fileAction: getFileAction(state),
//parentFolder: getSelectedFolderParentId(state),
//isTrashFolder: getIsRecycleBinFolder(state),
//treeFolders: getTreeFolders(state),
//rootFolderId: getRootFolderId(state),
//newItems: getSelectedFolderNew(state),
//selectedFolder: getSelectedFolder(state),
//folders: getFolders(state),
// newRowItems: getNewRowItems(state),
//dragging: getDragging(state),
//isLoading: getIsLoading(state),
//dragging: getDragging(state),
//isLoading: getIsLoading(state),
// canWebEdit: canWebEdit(props.item.fileExst)(state),
// };
// }
@ -470,35 +470,42 @@ class FilesTileContent extends React.PureComponent {
// fetchFiles,
// })(withRouter(withTranslation()(FilesTileContent)));
export default inject(({ auth, mainFilesStore, formatsStore }, { item }) => {
const { homepage, culture } = auth.settingsStore;
const { filesStore, setIsLoading, isLoading, dragging } = mainFilesStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const {
folders,
fetchFiles,
treeFoldersStore,
filter,
newRowItems,
createFile,
updateFile,
renameFolder,
} = filesStore;
export default inject(
(
{ auth, initFilesStore, filesStore, formatsStore, treeFoldersStore },
{ item }
) => {
const { homepage, culture } = auth.settingsStore;
const { setIsLoading, isLoading, dragging } = initFilesStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
docserviceStore,
} = formatsStore;
const {
folders,
fetchFiles,
filter,
newRowItems,
createFile,
updateFile,
renameFolder,
} = filesStore;
const { treeFolders, setTreeFolders, isRecycleBinFolder } = treeFoldersStore;
const {
treeFolders,
setTreeFolders,
isRecycleBinFolder,
} = treeFoldersStore;
const { type, extension, id } = filesStore.fileActionStore;
const fileAction = { type, extension, id };
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const isVideo = mediaViewersFormatsStore.isVideo(item.fileExst);
const isImage = iconFormatsStore.isImage(item.fileExst);
const isSound = iconFormatsStore.isSound(item.fileExst);
const canWebEdit = docserviceStore.canWebEdit(item.fileExst);
const isVideo = mediaViewersFormatsStore.isVideo(item.fileExst);
const isImage = iconFormatsStore.isImage(item.fileExst);
const isSound = iconFormatsStore.isSound(item.fileExst);
return {
culture,
@ -515,17 +522,18 @@ export default inject(({ auth, mainFilesStore, formatsStore }, { item }) => {
isTrashFolder: isRecycleBinFolder,
filter,
dragging,
canWebEdit,
isVideo,
isImage,
isSound,
newRowItems,
canWebEdit,
isVideo,
isImage,
isSound,
newRowItems,
setIsLoading,
fetchFiles,
setTreeFolders,
createFile,
updateFile,
renameFolder,
createFile,
updateFile,
renameFolder,
};
})(withRouter(withTranslation()(observer(FilesTileContent))));
}
)(withRouter(withTranslation()(observer(FilesTileContent))));

View File

@ -2204,13 +2204,19 @@ SectionBodyContent.defaultProps = {
export default inject(
({
auth,
mainFilesStore,
initFilesStore,
filesStore,
settingsStore,
mediaViewerDataStore,
formatsStore,
versionHistoryStore,
uploadDataStore,
dialogsStore,
treeFoldersStore,
}) => {
const { providers, capabilities } = settingsStore.thirdPartyStore;
const { mediaViewersFormatsStore } = formatsStore;
const { secondaryProgressDataStore } = uploadDataStore;
const {
homepage,
culture,
@ -2222,14 +2228,13 @@ export default inject(
const {
dragging,
setDragging,
filesStore,
setIsLoading,
viewAs,
dragItem,
setDragItem,
privacyInstructions,
tooltipValue,
} = mainFilesStore;
} = initFilesStore;
const {
files,
folders,
@ -2244,10 +2249,6 @@ export default inject(
deselectFile,
filter,
fileActionStore,
treeFoldersStore,
secondaryProgressDataStore,
dialogsStore,
versionHistoryStore,
selectedFolderStore,
addFileToRecentlyViewed,
updateFile,

View File

@ -6,11 +6,11 @@ import React from "react";
// setIsLoading,
// } from "../../../../../store/files/actions";
// import {
//getFilter,
//getSelectedFolderId,
//getViewAs,
//getFilter,
//getSelectedFolderId,
//getViewAs,
// getFilterSelectedItem,
//getFirstLoad,
//getFirstLoad,
// } from "../../../../../store/files/selectors";
import find from "lodash/find";
import result from "lodash/result";
@ -333,14 +333,14 @@ class SectionFilterContent extends React.Component {
// function mapStateToProps(state) {
// return {
//user: getCurrentUser(state),
//customNames: getSettingsCustomNames(state),
//language: getLanguage(state),
//firstLoad: getFirstLoad(state),
//filter: getFilter(state),
//selectedFolderId: getSelectedFolderId(state),
//user: getCurrentUser(state),
//customNames: getSettingsCustomNames(state),
//language: getLanguage(state),
//firstLoad: getFirstLoad(state),
//filter: getFilter(state),
//selectedFolderId: getSelectedFolderId(state),
// selectedItem: getFilterSelectedItem(state),
//viewAs: getViewAs(state),
//viewAs: getViewAs(state),
// };
// }
@ -350,28 +350,28 @@ class SectionFilterContent extends React.Component {
// setIsLoading,
// })(withRouter(withLayoutSize(withTranslation()(SectionFilterContent))));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading, setViewAs, viewAs } = mainFilesStore;
const { firstLoad, fetchFiles, filter, selectedFolderStore } = filesStore;
export default inject(({ auth, initFilesStore, filesStore }) => {
const { setIsLoading, setViewAs, viewAs } = initFilesStore;
const { firstLoad, fetchFiles, filter, selectedFolderStore } = filesStore;
const { user } = auth.userStore;
const { customNames, culture } = auth.settingsStore;
const language = (user && user.cultureName) || culture || "en-US";
const { user } = auth.userStore;
const { customNames, culture } = auth.settingsStore;
const language = (user && user.cultureName) || culture || "en-US";
return {
customNames,
user,
language,
firstLoad,
selectedFolderId: selectedFolderStore.id,
return {
customNames,
user,
language,
firstLoad,
selectedFolderId: selectedFolderStore.id,
selectedItem: filter.selectedItem,
filter,
viewAs,
filter,
viewAs,
setIsLoading,
fetchFiles,
setViewAs,
};
})(
setIsLoading,
fetchFiles,
setViewAs,
};
})(
withRouter(withLayoutSize(withTranslation()(observer(SectionFilterContent))))
);

View File

@ -38,22 +38,22 @@ import { OperationsPanel } from "../../../../panels";
// import {
// getUserAccess,
// getWebEditSelected,
//getIsRecycleBinFolder,
//getIsRecycleBinFolder,
// canCreate,
//getSelectedFolderTitle,
//getFilter,
//getSelectedFolderId,
//getSelection,
//getSelectedFolderParentId,
//getIsRootFolder,
//getSelectedFolderTitle,
//getFilter,
//getSelectedFolderId,
//getSelection,
//getSelectedFolderParentId,
//getIsRootFolder,
// getHeaderVisible,
// getHeaderIndeterminate,
// getHeaderChecked,
// getAccessedSelected,
// getSelectionLength,
//getSharePanelVisible,
//getSharePanelVisible,
// getIsThirdPartySelection,
//getIsPrivacyFolder,
//getIsPrivacyFolder,
// getOnlyFoldersSelected,
// } from "../../../../../store/files/selectors";
import { inject, observer } from "mobx-react";
@ -695,17 +695,17 @@ class SectionHeaderContent extends React.Component {
// const mapStateToProps = (state) => {
// return {
//isRootFolder: getIsRootFolder(state),
//isAdmin: isAdmin(state),
//isRecycleBin: getIsRecycleBinFolder(state),
//isPrivacy: getIsPrivacyFolder(state),
//isDesktop: isDesktopClient(state),
//parentId: getSelectedFolderParentId(state),
//selection: getSelection(state),
//title: getSelectedFolderTitle(state),
//filter: getFilter(state),
//isRootFolder: getIsRootFolder(state),
//isAdmin: isAdmin(state),
//isRecycleBin: getIsRecycleBinFolder(state),
//isPrivacy: getIsPrivacyFolder(state),
//isDesktop: isDesktopClient(state),
//parentId: getSelectedFolderParentId(state),
//selection: getSelection(state),
//title: getSelectedFolderTitle(state),
//filter: getFilter(state),
// deleteDialogVisible: getUserAccess(state),
//currentFolderId: getSelectedFolderId(state),
//currentFolderId: getSelectedFolderId(state),
// canCreate: canCreate(state),
// isWebEditSelected: getWebEditSelected(state),
// isHeaderVisible: getHeaderVisible(state),
@ -713,7 +713,7 @@ class SectionHeaderContent extends React.Component {
// isHeaderChecked: getHeaderChecked(state),
// isAccessedSelected: getAccessedSelected(state),
// isItemsSelected: getSelectionLength(state),
//sharingPanelVisible: getSharePanelVisible(state),
//sharingPanelVisible: getSharePanelVisible(state),
// isThirdPartySelection: getIsThirdPartySelection(state),
// isOnlyFoldersSelected: getOnlyFoldersSelected(state),
// };
@ -729,27 +729,33 @@ class SectionHeaderContent extends React.Component {
// setSharingPanelVisible,
// })(withTranslation()(withRouter(SectionHeaderContent)));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading } = mainFilesStore;
export default inject(
({
auth,
initFilesStore,
filesStore,
uploadDataStore,
dialogsStore,
treeFoldersStore,
}) => {
const { setIsLoading } = initFilesStore;
const { secondaryProgressDataStore } = uploadDataStore;
const {
setSelected,
fileActionStore,
fetchFiles,
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
dialogsStore,
canCreate,
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,
userAccess,
isAccessedSelected,
isOnlyFoldersSelected,
isThirdPartySelection,
isWebEditSelected,
canCreate,
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,
userAccess,
isAccessedSelected,
isOnlyFoldersSelected,
isThirdPartySelection,
isWebEditSelected,
} = filesStore;
const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore;
const { setAction } = fileActionStore;
@ -771,16 +777,16 @@ export default inject(({ auth, mainFilesStore }) => {
isPrivacy: isPrivacyFolder,
filter,
sharingPanelVisible,
canCreate,
isItemsSelected: selection.length,
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,
deleteDialogVisible: userAccess,
isAccessedSelected,
isOnlyFoldersSelected,
isThirdPartySelection,
isWebEditSelected,
canCreate,
isItemsSelected: selection.length,
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,
deleteDialogVisible: userAccess,
isAccessedSelected,
isOnlyFoldersSelected,
isThirdPartySelection,
isWebEditSelected,
setSelected,
setAction,
@ -790,4 +796,5 @@ export default inject(({ auth, mainFilesStore }) => {
setSharingPanelVisible,
clearSecondaryProgressData,
};
})(withTranslation()(withRouter(observer(SectionHeaderContent))));
}
)(withTranslation()(withRouter(observer(SectionHeaderContent))));

View File

@ -185,8 +185,8 @@ const SectionPagingContent = ({
// SectionPagingContent
// );
export default inject(({ mainFilesStore }) => {
const { filesStore, setIsLoading } = mainFilesStore;
export default inject(({ initFilesStore, filesStore }) => {
const { setIsLoading } = initFilesStore;
const {
files,
folders,

View File

@ -362,76 +362,84 @@ Home.propTypes = {
// };
// };
export default inject(({ auth, mainFilesStore }) => {
const {
dragging,
setDragging,
setIsLoading,
export default inject(
({
auth,
initFilesStore,
filesStore,
isLoading,
viewAs,
} = mainFilesStore;
const {
firstLoad,
setFirstLoad,
fetchFiles,
filter,
fileActionStore,
treeFoldersStore,
primaryProgressDataStore,
secondaryProgressDataStore,
dialogsStore,
uploadDataStore,
selection,
selectionTitle,
setSelections,
} = filesStore;
dialogsStore,
treeFoldersStore,
}) => {
const {
dragging,
setDragging,
setIsLoading,
isLoading,
viewAs,
} = initFilesStore;
const {
secondaryProgressDataStore,
primaryProgressDataStore,
} = uploadDataStore;
const {
firstLoad,
setFirstLoad,
fetchFiles,
filter,
fileActionStore,
selection,
selectionTitle,
setSelections,
} = filesStore;
const { treeFolders } = treeFoldersStore;
const { treeFolders } = treeFoldersStore;
const { id } = fileActionStore;
const { id } = fileActionStore;
const { visible, percent, icon, alert } = primaryProgressDataStore;
const primaryProgressData = { visible, percent, icon, alert };
const { visible, percent, icon, alert } = primaryProgressDataStore;
const primaryProgressData = { visible, percent, icon, alert };
const secondaryProgressData = {
visible: secondaryProgressDataStore.visible,
percent: secondaryProgressDataStore.percent,
icon: secondaryProgressDataStore.icon,
alert: secondaryProgressDataStore.alert,
};
const secondaryProgressData = {
visible: secondaryProgressDataStore.visible,
percent: secondaryProgressDataStore.percent,
icon: secondaryProgressDataStore.icon,
alert: secondaryProgressDataStore.alert,
};
const {
convertDialogVisible,
ownerPanelVisible: showOwnerChangePanel,
} = dialogsStore;
const {
convertDialogVisible,
ownerPanelVisible: showOwnerChangePanel,
} = dialogsStore;
const { setUploadPanelVisible, startUpload } = uploadDataStore;
const { setUploadPanelVisible, startUpload } = uploadDataStore;
return {
homepage: auth.settingsStore.homepage,
firstLoad,
dragging,
fileActionId: id,
currentFolderId: filesStore.selectedFolderStore.id,
isLoading,
treeFolders,
filter,
viewAs,
primaryProgressData,
secondaryProgressData,
convertDialogVisible,
showOwnerChangePanel,
selectionLength: selection.length,
isProgressFinished: secondaryProgressDataStore.isSecondaryProgressFinished,
selectionTitle,
return {
homepage: auth.settingsStore.homepage,
firstLoad,
dragging,
fileActionId: id,
currentFolderId: filesStore.selectedFolderStore.id,
isLoading,
treeFolders,
filter,
viewAs,
primaryProgressData,
secondaryProgressData,
convertDialogVisible,
showOwnerChangePanel,
selectionLength: selection.length,
isProgressFinished:
secondaryProgressDataStore.isSecondaryProgressFinished,
selectionTitle,
setFirstLoad,
setDragging,
setIsLoading,
fetchFiles,
setUploadPanelVisible,
setSelections,
startUpload,
};
})(withRouter(observer(Home)));
setFirstLoad,
setDragging,
setIsLoading,
fetchFiles,
setUploadPanelVisible,
setSelections,
startUpload,
};
}
)(withRouter(observer(Home)));

View File

@ -21,8 +21,8 @@ import { Trans } from "react-i18next";
// openConnectWindow,
// setConnectItem,
// setShowThirdPartyPanel,
//fetchFiles,
//setSelectedNode,
//fetchFiles,
//setSelectedNode,
// } from "../../../../../store/files/actions";
import //getThirdPartyCapabilities,
//getGoogleConnect,
@ -40,7 +40,7 @@ import //getThirdPartyCapabilities,
//getThirdPartyProviders,
//getMyDirectoryFolders,
//getCommonDirectoryFolders,
//getFilter,
//getFilter,
"../../../../../store/files/selectors";
import { DeleteThirdPartyDialog, ConnectDialog } from "../../../../dialogs";
import { inject, observer } from "mobx-react";
@ -166,7 +166,7 @@ class ConnectClouds extends React.Component {
this.props
.getOAuthToken(modal)
.then((token) => this.showOAuthModal(token, selectedServiceData))
);
);
}
this.setState({
@ -546,7 +546,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),
@ -563,7 +563,7 @@ class ConnectClouds extends React.Component {
// providers: getThirdPartyProviders(state),
// myDirectoryFolders: getMyDirectoryFolders(state),
// commonDirectoryFolders: getCommonDirectoryFolders(state),
//filter: getFilter(state),
//filter: getFilter(state),
// };
// }
@ -574,54 +574,55 @@ class ConnectClouds extends React.Component {
// setSelectedNode,
// })(withTranslation()(ConnectClouds));
export default inject(({ auth, mainFilesStore, settingsStore }) => {
const { filesStore } = mainFilesStore;
const {
providers,
connectItem,
capabilities,
setConnectItem,
showThirdPartyPanel,
setShowThirdPartyPanel,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
kDriveConnectItem,
yandexConnectItem,
ownCloudConnectItem,
webDavConnectItem,
getOAuthToken,
openConnectWindow,
} = settingsStore.thirdPartyStore;
const { fetchFiles, treeFoldersStore, filter } = filesStore;
const { setSelectedNode, myFolder, commonFolder } = treeFoldersStore;
export default inject(
({ auth, filesStore, settingsStore, treeFoldersStore }) => {
const {
providers,
connectItem,
capabilities,
setConnectItem,
showThirdPartyPanel,
setShowThirdPartyPanel,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
kDriveConnectItem,
yandexConnectItem,
ownCloudConnectItem,
webDavConnectItem,
getOAuthToken,
openConnectWindow,
} = settingsStore.thirdPartyStore;
const { fetchFiles, filter } = filesStore;
const { setSelectedNode, myFolder, commonFolder } = treeFoldersStore;
return {
isAdmin: auth.isAdmin,
filter,
providers,
showThirdPartyPanel,
connectItem,
capabilities,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
kDriveConnectItem,
yandexConnectItem,
ownCloudConnectItem,
webDavConnectItem,
myDirectoryFolders: myFolder && myFolder.folders,
commonDirectoryFolders: commonFolder && commonFolder.folders,
providers,
showThirdPartyPanel,
connectItem,
capabilities,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
oneDriveConnectItem,
nextCloudConnectItem,
kDriveConnectItem,
yandexConnectItem,
ownCloudConnectItem,
webDavConnectItem,
myDirectoryFolders: myFolder && myFolder.folders,
commonDirectoryFolders: commonFolder && commonFolder.folders,
fetchFiles,
setSelectedNode,
setConnectItem,
setShowThirdPartyPanel,
getOAuthToken,
openConnectWindow,
setConnectItem,
setShowThirdPartyPanel,
getOAuthToken,
openConnectWindow,
};
})(withTranslation()(observer(ConnectClouds)));
}
)(withTranslation()(observer(ConnectClouds)));

View File

@ -12,8 +12,8 @@ import { Error403, Error520 /* store */ } from "asc-web-common";
// setForceSave,
// } from "../../../../../store/files/actions";
// import {
//getIsLoading,
//getSettingsSelectedTreeNode,
//getIsLoading,
//getSettingsSelectedTreeNode,
// getSettingsTreeStoreOriginalFiles,
// getSettingsTreeConfirmDelete,
// getSettingsTreeUpdateIfExist,
@ -182,15 +182,15 @@ const SectionBodyContent = ({
// function mapStateToProps(state) {
// return {
//isAdmin: isAdmin(state),
//selectedTreeNode: getSettingsSelectedTreeNode(state),
//isAdmin: isAdmin(state),
//selectedTreeNode: getSettingsSelectedTreeNode(state),
// storeOriginalFiles: getSettingsTreeStoreOriginalFiles(state),
// confirmDelete: getSettingsTreeConfirmDelete(state),
// updateIfExist: getSettingsTreeUpdateIfExist(state),
// forceSave: getSettingsTreeForceSave(state),
// storeForceSave: getSettingsTreeStoreForceSave(state),
// enableThirdParty: getSettingsTreeEnableThirdParty(state),
//isLoading: getIsLoading(state),
//isLoading: getIsLoading(state),
// settingsTree: getSettingsTree(state),
// };
// }
@ -204,45 +204,46 @@ const SectionBodyContent = ({
// setForceSave,
// })(SectionBodyContent);
export default inject(({ auth, mainFilesStore, settingsStore }) => {
const { isLoading, filesStore } = mainFilesStore;
const { treeFoldersStore } = filesStore;
const { selectedTreeNode } = treeFoldersStore;
const {
settingsTree: settings,
storeOriginalFiles,
confirmDelete,
updateIfExist,
forcesave,
storeForcesave,
enableThirdParty,
setUpdateIfExist,
setStoreOriginal,
setEnableThirdParty,
setConfirmDelete,
setStoreForceSave,
setForceSave,
} = settingsStore;
export default inject(
({ auth, initFilesStore, settingsStore, treeFoldersStore }) => {
const { isLoading } = initFilesStore;
const { selectedTreeNode } = treeFoldersStore;
const {
settingsTree: settings,
storeOriginalFiles,
confirmDelete,
updateIfExist,
forcesave,
storeForcesave,
enableThirdParty,
setUpdateIfExist,
setStoreOriginal,
setEnableThirdParty,
setConfirmDelete,
setStoreForceSave,
setForceSave,
} = settingsStore;
const settingsTree = Object.keys(settings).length !== 0 ? settings : {};
const settingsTree = Object.keys(settings).length !== 0 ? settings : {};
return {
isAdmin: auth.isAdmin,
isLoading,
selectedTreeNode,
settingsTree,
storeOriginalFiles,
confirmDelete,
updateIfExist,
forceSave: forcesave,
storeForceSave: storeForcesave,
enableThirdParty,
settingsTree,
storeOriginalFiles,
confirmDelete,
updateIfExist,
forceSave: forcesave,
storeForceSave: storeForcesave,
enableThirdParty,
setUpdateIfExist,
setStoreOriginal,
setEnableThirdParty,
setConfirmDelete,
setStoreForceSave,
setForceSave,
setUpdateIfExist,
setStoreOriginal,
setEnableThirdParty,
setConfirmDelete,
setStoreForceSave,
setForceSave,
};
})(observer(SectionBodyContent));
}
)(observer(SectionBodyContent));

View File

@ -12,8 +12,8 @@ import { withTranslation, I18nextProvider } from "react-i18next";
import { createI18N } from "../../../helpers/i18n";
// import {
// getFilesSettings,
//setFirstLoad,
//setSelectedNode,
//setFirstLoad,
//setSelectedNode,
// } from "../../../store/files/actions";
//import { getSettingsTree, getIsLoading } from "../../../store/files/selectors";
@ -129,7 +129,7 @@ const Settings = (props) => {
// function mapStateToProps(state) {
// return {
//isLoading: getIsLoading(state),
//isLoading: getIsLoading(state),
// settingsTree: getSettingsTree(state),
// };
// }
@ -137,8 +137,8 @@ const Settings = (props) => {
// const mapDispatchToProps = (dispatch) => {
// return {
// getFilesSettings: () => dispatch(getFilesSettings()),
//setFirstLoad: (firstLoad) => dispatch(setFirstLoad(firstLoad)),
//setSelectedNode: (node) => dispatch(setSelectedNode(node)),
//setFirstLoad: (firstLoad) => dispatch(setFirstLoad(firstLoad)),
//setSelectedNode: (node) => dispatch(setSelectedNode(node)),
// };
// };
@ -147,20 +147,22 @@ const Settings = (props) => {
// mapDispatchToProps
// )(withRouter(Settings));
export default inject(({ mainFilesStore, settingsStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const { setFirstLoad, treeFoldersStore } = filesStore;
export default inject(
({ initFilesStore, filesStore, settingsStore, treeFoldersStore }) => {
const { isLoading } = initFilesStore;
const { setFirstLoad } = filesStore;
const { setSelectedNode } = treeFoldersStore;
const { getFilesSettings, settingsTree: settings } = settingsStore;
const { getFilesSettings, settingsTree: settings } = settingsStore;
const settingsTree = Object.keys(settings).length !== 0 ? settings : {};
const settingsTree = Object.keys(settings).length !== 0 ? settings : {};
return {
isLoading,
settingsTree,
settingsTree,
setFirstLoad,
setSelectedNode,
getFilesSettings,
getFilesSettings,
};
})(withRouter(observer(Settings)));
}
)(withRouter(observer(Settings)));

View File

@ -255,22 +255,22 @@ const VersionRow = (props) => {
// mapDispatchToProps
// )(withRouter(withTranslation()(VersionRow)));
export default inject(({ auth, mainFilesStore }) => {
export default inject(({ auth, versionHistoryStore }) => {
const { user } = auth.userStore;
const { culture } = auth.settingsStore;
const language = (user && user.cultureName) || culture || "en-US";
const language = (user && user.cultureName) || culture || "en-US";
const {
markAsVersion,
restoreVersion,
updateCommentVersion,
} = mainFilesStore.filesStore.versionHistoryStore;
} = versionHistoryStore;
return {
culture: language,
return {
culture: language,
markAsVersion,
restoreVersion,
updateCommentVersion,
};
};
})(withRouter(withTranslation()(observer(VersionRow))));

View File

@ -87,18 +87,20 @@ class SectionBodyContent extends React.Component {
// mapDispatchToProps
// )(withRouter(SectionBodyContent));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
const { setFirstLoad, versionHistoryStore } = filesStore;
const { versions, fetchFileVersions } = versionHistoryStore;
export default inject(
({ auth, initFilesStore, filesStore, versionHistoryStore }) => {
const { setIsLoading, isLoading } = initFilesStore;
const { setFirstLoad } = filesStore;
const { versions, fetchFileVersions } = versionHistoryStore;
return {
culture: auth.settingsStore.culture,
isLoading,
versions,
return {
culture: auth.settingsStore.culture,
isLoading,
versions,
setFirstLoad,
setIsLoading,
fetchFileVersions,
};
})(withRouter(observer(SectionBodyContent)));
setFirstLoad,
setIsLoading,
fetchFileVersions,
};
}
)(withRouter(observer(SectionBodyContent)));

View File

@ -137,26 +137,26 @@ VersionHistory.propTypes = {
// mapDispatchToProps
// )(withRouter(VersionHistory));
export default inject(({ auth, mainFilesStore }) => {
const { isLoading, filesStore } = mainFilesStore;
const { filter, setFilesFilter, versionHistoryStore } = filesStore;
export default inject(
({ auth, initFilesStore, filesStore, versionHistoryStore }) => {
const { isLoading } = initFilesStore;
const { filter, setFilesFilter } = filesStore;
const {
setIsVerHistoryPanel,
setVerHistoryFileId,
versions,
} = versionHistoryStore;
const {
setIsVerHistoryPanel,
setVerHistoryFileId,
versions,
} = versionHistoryStore;
console.log("versions", versions);
return {
isTabletView: auth.settingsStore.isTabletView,
isLoading,
filter,
versions,
return {
isTabletView: auth.settingsStore.isTabletView,
isLoading,
filter,
versions,
setFilesFilter,
setIsVerHistoryPanel,
setVerHistoryFileId,
};
})(withRouter(observer(VersionHistory)));
setFilesFilter,
setIsVerHistoryPanel,
setVerHistoryFileId,
};
}
)(withRouter(observer(VersionHistory)));

View File

@ -12,11 +12,11 @@ import {
import { withTranslation } from "react-i18next";
import { utils, /* store, */ toastr } from "asc-web-common";
// import {
//setIsLoading,
//setIsLoading,
// setFilesOwner,
// setFiles,
// setFolders,
//setChangeOwnerPanelVisible,
//setChangeOwnerPanelVisible,
// } from "../../../store/files/actions";
// import {
// getSelection,
@ -220,15 +220,14 @@ const ChangeOwnerPanel = (props) => (
// setChangeOwnerPanelVisible,
// })(withRouter(ChangeOwnerPanel));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
export default inject(({ auth, initFilesStore, filesStore, dialogsStore }) => {
const { setIsLoading, isLoading } = initFilesStore;
const {
files,
folders,
selection,
dialogsStore,
setFiles,
setFolders,
setFiles,
setFolders,
setFilesOwner,
} = filesStore;
const { ownerPanelVisible, setChangeOwnerPanelVisible } = dialogsStore;

View File

@ -33,12 +33,12 @@ import {
//getIsPrivacyFolder,
} from "../../../store/files/selectors";
// import {
//fetchFiles,
//setMediaViewerData,
//setTreeFolders,
//fetchFiles,
//setMediaViewerData,
//setTreeFolders,
// setUpdateTree,
// setNewRowItems,
//setIsLoading,
//setIsLoading,
// addFileToRecentlyViewed,
// } from "../../../store/files/actions";
import { createI18N } from "../../../helpers/i18n";
@ -332,32 +332,33 @@ const NewFilesPanel = (props) => (
// setIsLoading,
// })(withRouter(NewFilesPanel));
export default inject(({ mainFilesStore, mediaViewerDataStore }) => {
const { filesStore, setIsLoading } = mainFilesStore;
const {
files,
folders,
fetchFiles,
treeFoldersStore,
filter,
addFileToRecentlyViewed,
setNewRowItems,
} = filesStore;
const { treeFolders, setTreeFolders, isPrivacyFolder } = treeFoldersStore;
const { setMediaViewerData } = mediaViewerDataStore;
export default inject(
({ initFilesStore, filesStore, mediaViewerDataStore, treeFoldersStore }) => {
const { setIsLoading } = initFilesStore;
const {
files,
folders,
fetchFiles,
filter,
addFileToRecentlyViewed,
setNewRowItems,
} = filesStore;
const { treeFolders, setTreeFolders, isPrivacyFolder } = treeFoldersStore;
const { setMediaViewerData } = mediaViewerDataStore;
return {
files,
folders,
treeFolders,
isPrivacy: isPrivacyFolder,
filter,
return {
files,
folders,
treeFolders,
isPrivacy: isPrivacyFolder,
filter,
setIsLoading,
fetchFiles,
setTreeFolders,
setMediaViewerData,
addFileToRecentlyViewed,
setNewRowItems,
};
})(withRouter(observer(NewFilesPanel)));
setIsLoading,
fetchFiles,
setTreeFolders,
setMediaViewerData,
addFileToRecentlyViewed,
setNewRowItems,
};
}
)(withRouter(observer(NewFilesPanel)));

View File

@ -8,15 +8,15 @@ import { utils as commonUtils, toastr } from "asc-web-common";
import { StyledAsidePanel } from "../StyledPanels";
import TreeFolders from "../../Article/Body/TreeFolders";
// import {
//setSecondaryProgressBarData,
//setSecondaryProgressBarData,
// itemOperationToFolder,
// } from "../../../store/files/actions";
// import {
//getFilter,
//getSelection,
//getPathParts,
//getSelectedFolderId,
//getIsRecycleBinFolder,
//getFilter,
//getSelection,
//getPathParts,
//getSelectedFolderId,
//getIsRecycleBinFolder,
// getOperationsFolders,
// } from "../../../store/files/selectors";
import { ThirdPartyMoveDialog } from "../../dialogs";
@ -208,11 +208,11 @@ const OperationsPanel = (props) => (
// const mapStateToProps = (state) => {
// return {
//filter: getFilter(state),
//selection: getSelection(state),
//expandedKeys: getPathParts(state),
//currentFolderId: getSelectedFolderId(state),
//isRecycleBin: getIsRecycleBinFolder(state),
//filter: getFilter(state),
//selection: getSelection(state),
//expandedKeys: getPathParts(state),
//currentFolderId: getSelectedFolderId(state),
//isRecycleBin: getIsRecycleBinFolder(state),
// operationsFolders: getOperationsFolders(state),
// };
// };
@ -222,17 +222,16 @@ const OperationsPanel = (props) => (
// itemOperationToFolder,
// })(withRouter(OperationsPanel));
export default inject(({ auth, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
export default inject(
({ auth, filesStore, uploadDataStore, treeFoldersStore }) => {
const { secondaryProgressDataStore } = uploadDataStore;
const {
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
itemOperationToFolder,
itemOperationToFolder,
} = filesStore;
const { isRecycleBinFolder, operationsFolders } = treeFoldersStore;
const { isRecycleBinFolder, operationsFolders } = treeFoldersStore;
const { setSecondaryProgressBarData } = secondaryProgressDataStore;
return {
@ -241,9 +240,10 @@ export default inject(({ auth, mainFilesStore }) => {
selection,
isRecycleBin: isRecycleBinFolder,
filter,
operationsFolders,
operationsFolders,
setSecondaryProgressBarData,
itemOperationToFolder,
itemOperationToFolder,
};
})(withRouter(observer(OperationsPanel)));
}
)(withRouter(observer(OperationsPanel)));

View File

@ -21,24 +21,24 @@ import {
// import {
// getShareUsers,
// setShareFiles,
//setSharingPanelVisible,
//setIsLoading,
//setSharingPanelVisible,
//setIsLoading,
// setFiles,
// setFolders,
//selectUploadedFile,
//selectUploadedFile,
// updateUploadedItem,
// } from "../../../store/files/actions";
// import {
// getAccessOption,
// getExternalAccessOption,
//getSelection,
//getSharePanelVisible,
//getSelection,
//getSharePanelVisible,
// getCanShareOwnerChange,
//getIsLoading,
//getFiles,
//getFolders,
//getIsPrivacyFolder,
//getUploadSelection,
//getIsLoading,
//getFiles,
//getFolders,
//getIsPrivacyFolder,
//getUploadSelection,
// } from "../../../store/files/selectors";
import {
StyledAsidePanel,
@ -628,28 +628,28 @@ const SharingPanel = (props) => (
);
// const mapStateToProps = (state, ownProps) => {
//const selection = getSelection(state);
//const uploadSelection = getUploadSelection(state);
// const selectedFile = ownProps.uploadPanelVisible
// ? uploadSelection
// : selection; // TODO: take out this implementation from this component
//const selection = getSelection(state);
//const uploadSelection = getUploadSelection(state);
// const selectedFile = ownProps.uploadPanelVisible
// ? uploadSelection
// : selection; // TODO: take out this implementation from this component
// return {
// getAccessOption: (selection) => getAccessOption(state, selection),
// getExternalAccessOption: (selection) =>
// getExternalAccessOption(state, selection),
//isMyId: getCurrentUserId(state),
//selection: selectedFile,
//isPrivacy: getIsPrivacyFolder(state),
//isDesktop: isDesktopClient(state),
//groupsCaption: getSettingsCustomNamesGroupsCaption(state),
//sharingPanelVisible: getSharePanelVisible(state),
//isMyId: getCurrentUserId(state),
//selection: selectedFile,
//isPrivacy: getIsPrivacyFolder(state),
//isDesktop: isDesktopClient(state),
//groupsCaption: getSettingsCustomNamesGroupsCaption(state),
//sharingPanelVisible: getSharePanelVisible(state),
// canShareOwnerChange: getCanShareOwnerChange(state),
//isLoading: getIsLoading(state),
//files: getFiles(state),
//folders: getFolders(state),
//settings: getSettings(state),
//uploadSelection,
//isLoading: getIsLoading(state),
//files: getFiles(state),
//folders: getFolders(state),
//settings: getSettings(state),
//uploadSelection,
// };
// };
@ -663,32 +663,40 @@ const SharingPanel = (props) => (
// updateUploadedItem,
// })(withRouter(SharingPanel));
export default inject(({ auth, mainFilesStore }, { uploadPanelVisible }) => {
const { replaceFileStream, setEncryptionAccess } = auth;
const { customNames, isDesktopClient, homepage } = auth.settingsStore;
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
export default inject(
(
{
auth,
initFilesStore,
filesStore,
uploadDataStore,
dialogsStore,
treeFoldersStore,
},
{ uploadPanelVisible }
) => {
const { replaceFileStream, setEncryptionAccess } = auth;
const { customNames, isDesktopClient, homepage } = auth.settingsStore;
const { setIsLoading, isLoading } = initFilesStore;
const {
files,
folders,
selection,
treeFoldersStore,
dialogsStore,
uploadDataStore,
canShareOwnerChange,
getAccessOption,
getExternalAccessOption,
setFiles,
setFolders,
getShareUsers,
setShareFiles,
canShareOwnerChange,
getAccessOption,
getExternalAccessOption,
setFiles,
setFolders,
getShareUsers,
setShareFiles,
} = filesStore;
const { isPrivacyFolder } = treeFoldersStore;
const { sharingPanelVisible, setSharingPanelVisible } = dialogsStore;
const {
uploadSelection,
selectUploadedFile,
updateUploadedItem,
} = uploadDataStore;
const {
uploadSelection,
selectUploadedFile,
updateUploadedItem,
} = uploadDataStore;
return {
isMyId: auth.userStore.user.id,
@ -702,19 +710,20 @@ export default inject(({ auth, mainFilesStore }, { uploadPanelVisible }) => {
isPrivacy: isPrivacyFolder,
sharingPanelVisible,
uploadSelection,
canShareOwnerChange,
canShareOwnerChange,
setIsLoading,
setSharingPanelVisible,
selectUploadedFile,
updateUploadedItem,
replaceFileStream,
setEncryptionAccess,
getAccessOption,
getExternalAccessOption,
setFiles,
setFolders,
getShareUsers,
setShareFiles,
updateUploadedItem,
replaceFileStream,
setEncryptionAccess,
getAccessOption,
getExternalAccessOption,
setFiles,
setFolders,
getShareUsers,
setShareFiles,
};
})(withRouter(observer(SharingPanel)));
}
)(withRouter(observer(SharingPanel)));

View File

@ -34,9 +34,7 @@ const FileList = ({ uploadDataFiles }) => {
// };
// };
export default inject(({ mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const { uploadDataStore } = filesStore;
export default inject(({ uploadDataStore }) => {
const { files } = uploadDataStore;
return {

View File

@ -199,46 +199,45 @@ const FileRow = (props) => {
// };
// };
export default inject(({ mainFilesStore, formatsStore }, { item }) => {
let ext;
let name;
let splitted;
if (item.file) {
splitted = item.file.name.split(".");
ext = splitted.length > 1 ? "." + splitted.pop() : "";
name = splitted[0];
} else {
ext = item.fileInfo.fileExst;
splitted = item.fileInfo.title.split(".");
name = splitted[0];
export default inject(
({ filesStore, formatsStore, uploadDataStore }, { item }) => {
let ext;
let name;
let splitted;
if (item.file) {
splitted = item.file.name.split(".");
ext = splitted.length > 1 ? "." + splitted.pop() : "";
name = splitted[0];
} else {
ext = item.fileInfo.fileExst;
splitted = item.fileInfo.title.split(".");
name = splitted[0];
}
const { iconFormatsStore, mediaViewersFormatsStore } = formatsStore;
const { cancelCurrentUpload } = filesStore;
const { uploaded, primaryProgressDataStore } = uploadDataStore;
const { loadingFile: file } = primaryProgressDataStore;
const isMedia = mediaViewersFormatsStore.isMediaOrImage(ext);
const fileIcon = iconFormatsStore.getIconSrc(ext, 24);
const loadingFile = !file || !file.uniqueId ? null : file;
const currentFileUploadProgress =
file && loadingFile.uniqueId === item.uniqueId
? loadingFile.percent
: null;
return {
currentFileUploadProgress,
uploaded,
isMedia,
fileIcon,
ext,
name,
loadingFile,
cancelCurrentUpload,
};
}
const { filesStore } = mainFilesStore;
const { iconFormatsStore, mediaViewersFormatsStore } = formatsStore;
const {
uploadDataStore,
cancelCurrentUpload,
primaryProgressDataStore,
} = filesStore;
const { uploaded } = uploadDataStore;
const { loadingFile } = primaryProgressDataStore;
const isMedia = mediaViewersFormatsStore.isMediaOrImage(ext);
const fileIcon = iconFormatsStore.getIconSrc(ext, 24);
const currentFileUploadProgress =
loadingFile && loadingFile.uniqueId === item.uniqueId
? loadingFile.percent
: null;
return {
currentFileUploadProgress,
uploaded,
isMedia,
fileIcon,
ext,
name,
loadingFile,
cancelCurrentUpload,
};
})(observer(FileRow));
)(observer(FileRow));

View File

@ -53,9 +53,7 @@ const ShareButton = (props) => {
// };
// };
export default inject(({ mainFilesStore }, { uniqueId }) => {
const { filesStore } = mainFilesStore;
const { dialogsStore, uploadDataStore } = filesStore;
export default inject(({ dialogsStore, uploadDataStore }, { uniqueId }) => {
const { sharingPanelVisible, setSharingPanelVisible } = dialogsStore;
const { selectUploadedFile, getUploadedFile } = uploadDataStore;

View File

@ -153,9 +153,7 @@ const UploadPanel = (props) => (
// };
// };
export default inject(({ mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const { dialogsStore, uploadDataStore } = filesStore;
export default inject(({ dialogsStore, uploadDataStore }) => {
const { sharingPanelVisible } = dialogsStore;
const {

View File

@ -141,9 +141,9 @@ VersionHistoryPanelContainer.propTypes = {
// mapDispatchToProps
// )(VersionHistoryPanel);
export default inject(({ auth, mainFilesStore }) => {
const { isLoading, filesStore } = mainFilesStore;
const { versionHistoryStore } = filesStore;
export default inject(({ auth, initFilesStore, versionHistoryStore }) => {
const { isTabletView, homepage } = auth.settingsStore;
const { isLoading } = initFilesStore;
const {
fileId,
versions,
@ -152,8 +152,8 @@ export default inject(({ auth, mainFilesStore }) => {
} = versionHistoryStore;
return {
isTabletView: auth.settingsStore.isTabletView,
homepage: auth.settingsStore.homepage,
isTabletView,
homepage,
isLoading,
fileId,
versions,

View File

@ -11,24 +11,34 @@ import App from "./App";
import * as serviceWorker from "./serviceWorker";
import { ErrorBoundary, store as commonStore } from "asc-web-common";
import { Provider as MobxProvider } from "mobx-react";
import mainFilesStore from "./store/MainFilesStore";
import initFilesStore from "./store/InitFilesStore";
import filesStore from "./store/FilesStore";
import settingsStore from "./store/SettingsStore";
import mediaViewerDataStore from "./store/MediaViewerDataStore";
import formatsStore from "./store/FormatsStore";
import versionHistoryStore from "./store/VersionHistoryStore";
import uploadDataStore from "./store/UploadDataStore";
import dialogsStore from "./store/DialogsStore";
import treeFoldersStore from "./store/TreeFoldersStore";
const { authStore } = commonStore;
ReactDOM.render(
<MobxProvider
auth={authStore}
mainFilesStore={mainFilesStore}
initFilesStore={initFilesStore}
filesStore={filesStore}
settingsStore={settingsStore}
mediaViewerDataStore={mediaViewerDataStore}
formatsStore={formatsStore}
versionHistoryStore={versionHistoryStore}
uploadDataStore={uploadDataStore}
dialogsStore={dialogsStore}
treeFoldersStore={treeFoldersStore}
>
<ErrorBoundary>
<App />
</ErrorBoundary>
<ErrorBoundary>
<App />
</ErrorBoundary>
</MobxProvider>,
document.getElementById("root")
);

View File

@ -24,4 +24,4 @@ class DialogsStore {
};
}
export default DialogsStore;
export default new DialogsStore();

View File

@ -3,15 +3,16 @@ import { api, constants, store } from "asc-web-common";
import axios from "axios";
import FileActionStore from "./FileActionStore";
import SelectedFolderStore from "./SelectedFolderStore";
import TreeFoldersStore from "./TreeFoldersStore";
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 treeFoldersStore from "./TreeFoldersStore";
import { createTreeFolders } from "./files/selectors";
const { FilesFilter } = api;
const { FolderType, FilterType, FileType } = constants;
const { authStore } = store;
const { settingsStore, userStore, isAdmin } = authStore;
const { isEncryptionSupport, isDesktopClient } = settingsStore;
const {
iconFormatsStore,
mediaViewersFormatsStore,
@ -27,21 +28,18 @@ const {
canWebFilterEditing,
} = docserviceStore;
const { FilesFilter } = api;
const { FolderType, FilterType, FileType } = constants;
const { authStore } = store;
const { settingsStore, userStore, isAdmin } = authStore;
const { isEncryptionSupport, isDesktopClient } = settingsStore;
const {
privacyFolder,
isRecycleBinFolder,
isPrivacyFolder,
isRecentFolder,
//isFavoritesFolder,
commonFolder,
} = treeFoldersStore;
class FilesStore {
fileActionStore = null;
selectedFolderStore = null;
treeFoldersStore = null;
primaryProgressDataStore = null;
secondaryProgressDataStore = null;
dialogsStore = null;
versionHistoryStore = null;
uploadDataStore = null;
firstLoad = true;
files = [];
@ -56,12 +54,6 @@ class FilesStore {
makeObservable(this, {
fileActionStore: observable,
selectedFolderStore: observable,
treeFoldersStore: observable,
primaryProgressDataStore: observable, //TODO: MainFiles?
secondaryProgressDataStore: observable, //TODO: MainFiles?
dialogsStore: observable, //TODO: MainFiles?
versionHistoryStore: observable, //TODO: MainFiles?
uploadDataStore: observable, //TODO: MainFiles?
firstLoad: observable,
files: observable,
@ -115,12 +107,6 @@ class FilesStore {
this.fileActionStore = new FileActionStore();
this.selectedFolderStore = new SelectedFolderStore();
this.treeFoldersStore = new TreeFoldersStore();
this.primaryProgressDataStore = new PrimaryProgressDataStore();
this.secondaryProgressDataStore = new SecondaryProgressDataStore();
this.dialogsStore = new DialogsStore();
this.versionHistoryStore = new VersionHistoryStore();
this.uploadDataStore = new UploadDataStore();
}
setFirstLoad = (firstLoad) => {
@ -241,8 +227,6 @@ class FilesStore {
const filterData = filter ? filter.clone() : FilesFilter.getDefault();
filterData.folder = folderId;
const { privacyFolder } = this.treeFoldersStore;
if (privacyFolder && privacyFolder.id === +folderId) {
if (!isEncryptionSupport) {
filterData.treeFolders = createTreeFolders(
@ -347,13 +331,6 @@ class FilesStore {
};
getFilesContextOptions = (item, canOpenPlayer, canShare) => {
const {
isRecycleBinFolder,
isPrivacyFolder,
isRecentFolder,
//isFavoritesFolder
} = this.treeFoldersStore;
const options = [];
const isVisitor = (userStore.user && userStore.user.isVisitor) || false;
@ -530,8 +507,6 @@ class FilesStore {
}
get canShareOwnerChange() {
const { commonFolder } = this.treeFoldersStore;
const pathParts = this.selectedFolderStore.pathParts;
const userId = userStore.user.id;
return (
@ -640,7 +615,7 @@ class FilesStore {
const draggable =
selectedItem &&
!this.treeFoldersStore.isRecycleBinFolder &&
isRecycleBinFolder &&
selectedItem.id !== this.fileActionStore.id;
let value = fileExst ? `file_${id}` : `folder_${id}`;
@ -1022,8 +997,7 @@ class FilesStore {
};
loopFilesOperations = (id, destFolderId, isCopy) => {
/*const { isRecycleBinFolder } = this.treeFoldersStore;
/*
const progressData = getSecondaryProgressData(state);
const treeFolders = getTreeFolders(state);
@ -1148,4 +1122,4 @@ class FilesStore {
};
}
export default FilesStore;
export default new FilesStore();

View File

@ -1,6 +1,7 @@
import { makeObservable, action, observable, computed } from "mobx";
import { store, utils } from "asc-web-common";
import FilesStore from "./FilesStore";
import filesStore from "./FilesStore";
import treeFoldersStore from "./TreeFoldersStore";
import config from "../../package.json";
const { authStore } = store;
@ -12,18 +13,13 @@ class MainFilesStore {
viewAs = "row";
dragging = false;
dragItem = null;
filesStore = null;
privacyInstructions = "https://www.onlyoffice.com/private-rooms.aspx";
constructor() {
this.filesStore = new FilesStore();
const pathname = window.location.pathname.toLowerCase();
this.isEditor = pathname.indexOf("doceditor") !== -1;
makeObservable(this, {
filesStore: observable,
isLoaded: observable,
isLoading: observable,
viewAs: observable,
@ -65,11 +61,11 @@ class MainFilesStore {
get tooltipValue() {
if (!this.dragging) return null;
const selectionLength = this.filesStore.selection.length;
const elementTitle = selectionLength && this.filesStore.selection[0].title;
const selectionLength = filesStore.selection.length;
const elementTitle = selectionLength && filesStore.selection[0].title;
const singleElement = selectionLength === 1;
const filesCount = singleElement ? elementTitle : selectionLength;
const { isShareFolder, isCommonFolder } = this.filesStore.treeFoldersStore;
const { isShareFolder, isCommonFolder } = treeFoldersStore;
let operationName;
@ -112,10 +108,7 @@ class MainFilesStore {
}
if (!this.isEditor) {
requests.push(
getPortalCultures(),
this.filesStore.treeFoldersStore.fetchTreeFolders()
);
requests.push(getPortalCultures(), treeFoldersStore.fetchTreeFolders());
if (isDesktopClient) {
requests.push(getIsEncryptionSupport(), getEncryptionKeys());

View File

@ -6,6 +6,7 @@ class PrimaryProgressDataStore {
visible = false;
icon = "upload";
alert = false;
loadingFile = null;
constructor() {
makeObservable(this, {
@ -14,26 +15,29 @@ class PrimaryProgressDataStore {
visible: observable,
icon: observable,
alert: observable,
loadingFile: computed,
loadingFile: observable,
setPrimaryProgressBarData: action,
clearPrimaryProgressData: action,
});
}
setPrimaryProgressBarData = (primaryProgressData) => {
const progressDataItems = Object.keys(primaryProgressData);
for (let key of progressDataItems) {
if (key in this) {
this[key] = primaryProgressData[key];
}
this[key] = primaryProgressData[key];
}
};
//TODO: loadingFile
get loadingFile() {
if (!this.loadingFile || !this.loadingFile.uniqueId) return null;
return this.loadingFile;
}
clearPrimaryProgressData = () => {
this.setPrimaryProgressBarData({
visible: false,
percent: 0,
label: "",
icon: "",
alert: false,
});
};
}
export default PrimaryProgressDataStore;

View File

@ -60,6 +60,88 @@ class TreeFoldersStore {
}
};
renameTreeFolder = (folders, newItems, currentFolder) => {
const newItem = folders.find((x) => x.id === currentFolder.id);
const oldItemIndex = newItems.folders.findIndex(
(x) => x.id === currentFolder.id
);
newItem.folders = newItems.folders[oldItemIndex].folders;
newItems.folders[oldItemIndex] = newItem;
return;
};
removeTreeFolder = (folders, newItems, foldersCount) => {
const newFolders = JSON.parse(JSON.stringify(newItems.folders));
for (let folder of newFolders) {
let currentFolder;
if (folders) {
currentFolder = folders.find((x) => x.id === folder.id);
}
if (!currentFolder) {
const arrayFolders = newItems.folders.filter((x) => x.id !== folder.id);
newItems.folders = arrayFolders;
newItems.foldersCount = foldersCount;
}
}
};
addTreeFolder = (folders, newItems, foldersCount) => {
let array;
let newItemFolders = newItems.folders ? newItems.folders : [];
for (let folder of folders) {
let currentFolder;
if (newItemFolders) {
currentFolder = newItemFolders.find((x) => x.id === folder.id);
}
if (folders.length < 1 || !currentFolder) {
array = [...newItemFolders, ...[folder]].sort((prev, next) =>
prev.title.toLowerCase() < next.title.toLowerCase() ? -1 : 1
);
newItems.folders = array;
newItemFolders = array;
newItems.foldersCount = foldersCount;
}
}
};
loopTreeFolders = (path, item, folders, foldersCount, currentFolder) => {
const newPath = path;
while (path.length !== 0) {
const newItems = item.find((x) => x.id === path[0]);
if (!newItems) {
return;
}
newPath.shift();
if (path.length === 0) {
let foldersLength = newItems.folders ? newItems.folders.length : 0;
if (folders.length > foldersLength) {
this.addTreeFolder(folders, newItems, foldersCount);
} else if (folders.length < foldersLength) {
this.removeTreeFolder(folders, newItems, foldersCount);
} else if (
folders.length > 0 &&
newItems.folders.length > 0 &&
currentFolder
) {
this.renameTreeFolder(folders, newItems, currentFolder);
} else {
return;
}
return;
}
this.loopTreeFolders(
newPath,
newItems.folders,
folders,
foldersCount,
currentFolder
);
}
};
/////////////////////////////////////TODO: FOLDER
get myFolder() {
@ -178,4 +260,4 @@ class TreeFoldersStore {
}
}
export default TreeFoldersStore;
export default new TreeFoldersStore();

View File

@ -1,8 +1,26 @@
import { makeObservable, action, observable } from "mobx";
import { api } from "asc-web-common";
import { TIMEOUT } from "../helpers/constants";
import SecondaryProgressDataStore from "./SecondaryProgressDataStore";
import PrimaryProgressDataStore from "./PrimaryProgressDataStore";
import formatsStore from "./FormatsStore";
import treeFoldersStore from "./TreeFoldersStore";
import filesStore from "./FilesStore";
import uniqueid from "lodash/uniqueId";
import throttle from "lodash/throttle";
import sumBy from "lodash/sumBy";
const { docserviceStore } = formatsStore;
const { canConvert } = docserviceStore;
const { loopTreeFolders, setTreeFolders } = treeFoldersStore;
const { fetchFiles, filter, selectedFolderStore } = filesStore;
const chunkSize = 1024 * 1023; //~0.999mb
class UploadDataStore {
secondaryProgressDataStore = null;
primaryProgressDataStore = null;
files = [];
filesSize = 0;
convertFiles = [];
@ -20,6 +38,9 @@ class UploadDataStore {
constructor() {
makeObservable(this, {
secondaryProgressDataStore: observable,
primaryProgressDataStore: observable,
files: observable,
filesSize: observable,
convertFiles: observable,
@ -40,7 +61,11 @@ class UploadDataStore {
setUploadData: action,
updateUploadedItem: action,
setConvertDialogVisible: action,
startUpload: action,
});
this.secondaryProgressDataStore = new SecondaryProgressDataStore();
this.primaryProgressDataStore = new PrimaryProgressDataStore();
}
selectUploadedFile = (file) => {
@ -124,67 +149,161 @@ class UploadDataStore {
this.convertDialogVisible = convertDialogVisible;
};
getFilesToConvert = (files) => {
const filesToConvert = files.filter((f) => f.action === "convert");
return filesToConvert;
};
setDialogVisible = (t) => {
/*return (dispatch, getState) => {
const { uploadData } = getState().files;
const { files, uploadStatus, uploadedFiles, percent } = uploadData;
this.setConvertDialogVisible(false);
const label = t("UploadingLabel", {
file: uploadedFiles,
totalFiles: files.length,
this.setConvertDialogVisible(false);
const label = t("UploadingLabel", {
file: this.uploadedFiles,
totalFiles: this.files.length,
});
if (this.uploadStatus === null) {
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "upload",
label,
percent: 100,
visible: true,
alert: false,
});
if (uploadStatus === null) {
dispatch(
setPrimaryProgressBarData({
icon: "upload",
label,
percent: 100,
visible: true,
alert: false,
})
);
uploadData.uploadedFiles = 0;
uploadData.percent = 0;
dispatch(setUploadData(uploadData));
} else if (!files.length) {
dispatch(clearPrimaryProgressData());
} else {
dispatch(
setPrimaryProgressBarData({
icon: "upload",
label,
percent,
visible: true,
alert: false,
})
);
uploadData.uploadStatus = "cancel";
dispatch(setUploadData(uploadData));
this.uploadData.uploadedFiles = 0;
this.uploadData.percent = 0;
//setUploadData(uploadData);
} else if (!this.files.length) {
this.primaryProgressDataStore.clearPrimaryProgressData();
} else {
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "upload",
label,
percent: this.percent,
visible: true,
alert: false,
});
this.uploadData.uploadStatus = "cancel";
//setUploadData(uploadData);
}
};
getNewPercent = (uploadedSize, indexOfFile) => {
const newTotalSize = sumBy(this.files, (f) => f.file.size);
const totalUploadedFiles = this.files.filter((_, i) => i < indexOfFile);
const totalUploadedSize = sumBy(totalUploadedFiles, (f) => f.file.size);
const newPercent =
((uploadedSize + totalUploadedSize) / newTotalSize) * 100;
/*console.log(
`newPercent=${newPercent} (newTotalSize=${newTotalSize} totalUploadedSize=${totalUploadedSize} indexOfFile=${indexOfFile})`
);*/
return newPercent;
};
getConversationProgress = async (fileId) => {
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
try {
api.files.getFileConversationProgress(fileId).then((res) => {
console.log(res);
resolve(res);
});
} catch (error) {
console.error(error);
reject(error);
}
}, 1000);
});
return promise;
};
startConvertFiles = async (files, t) => {
const total = files.length;
this.setConvertDialogVisible(false);
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "file",
label: t("ConvertingLabel", {
file: 0,
totalFiles: total,
}),
percent: 0,
visible: true,
});
for (let index = 0; index < total; index++) {
const fileId = this.files[index].fileId;
const data = await api.files.convertFile(fileId);
if (data && data[0] && data[0].progress !== 100) {
let progress = data[0].progress;
let error = null;
while (progress < 100) {
const res = await this.getConversationProgress(fileId);
progress = res && res[0] && res[0].progress;
error = res && res[0] && res[0].error;
if (error.length) {
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "file",
visible: true,
alert: true,
});
return;
}
if (progress === 100) {
break;
} else {
//TODO: calculate local progress
// const percent = (progress) + (index / total) * 100;
// dispatch(
// this.primaryProgressDataStore.setPrimaryProgressBarData({
// icon: "file",
// label: t("ConvertingLabel", {
// file: index + 1,
// totalFiles: total,
// }),
// percent: newPercent,
// visible: true,
// })
// );
}
//setTimeout(() => { console.log("Wait for a second...") }, 1000);
}
}
};*/
const newPercent = (index + 1 / total) * 100;
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "file",
label: t("ConvertingLabel", {
file: index + 1,
totalFiles: total,
}),
percent: newPercent,
visible: true,
});
}
};
convertUploadedFiles = (t) => {
/*return (dispatch, getState) => {
const state = getState();
const { uploadData } = state.files;
const filesToConvert = getFilesToConvert(uploadData.files);
if (filesToConvert.length > 0) {
startConvertFiles(filesToConvert, t, dispatch, getState).then(() =>
finishUploadFiles(getState, dispatch)
);
} else {
finishUploadFiles(getState, dispatch);
}
};*/
const filesToConvert = this.getFilesToConvert(this.files);
if (filesToConvert.length > 0) {
this.startConvertFiles(filesToConvert, t).then(() =>
this.finishUploadFiles()
);
} else {
this.finishUploadFiles();
}
};
startUpload = (uploadFiles, folderId, t) => {
/*let newFiles = this.files;
let newFiles = this.files;
let filesSize = 0;
for (let index of Object.keys(uploadFiles)) {
@ -192,7 +311,7 @@ class UploadDataStore {
const parts = file.name.split(".");
const ext = parts.length > 1 ? "." + parts.pop() : "";
const needConvert = canConvert(ext)(state);
const needConvert = canConvert(ext);
newFiles.push({
file: file,
@ -218,52 +337,264 @@ class UploadDataStore {
uploaded: false,
};
this.setUploadData(newUploadData);
if (this.uploaded) {
startUploadFiles(t, dispatch, getState);
}*/
this.setUploadData(newUploadData);
this.startUploadFiles(t);
}
};
// startUploadFiles = async (t, dispatch, getState) => {
// let state = getState();
refreshFiles = (folderId) => {
if (
selectedFolderStore.id === folderId &&
window.location.pathname.indexOf("/history") === -1
) {
return fetchFiles(selectedFolderStore.id, filter.clone(), false).then(
(data) => {
const path = data.selectedFolder.pathParts;
const newTreeFolders = treeFoldersStore.treeFolders;
const folders = data.selectedFolder.folders;
const foldersCount = data.selectedFolder.foldersCount;
loopTreeFolders(path, newTreeFolders, folders, foldersCount);
console.log("newTreeFolders", newTreeFolders);
setTreeFolders(newTreeFolders);
//dispatch(setUpdateTree(true));
}
);
} else {
return api.files.getFolder(folderId, filter.clone()).then((data) => {
const path = data.pathParts;
const newTreeFolders = treeFoldersStore.treeFolders;
const folders = data.folders;
const foldersCount = data.count;
loopTreeFolders(path, newTreeFolders, folders, foldersCount);
console.log("newTreeFolders", newTreeFolders);
setTreeFolders(newTreeFolders);
//dispatch(setUpdateTree(true));
});
}
};
// let { files, percent, filesSize } = state.files.uploadData;
throttleRefreshFiles = throttle((toFolderId) => {
return this.refreshFiles(toFolderId).catch((err) => {
console.log("RefreshFiles failed", err);
return Promise.resolve();
});
}, 1000);
// if (files.length === 0 || filesSize === 0)
// return finishUploadFiles(getState, dispatch);
uploadFileChunks = async (
location,
requestsDataArray,
fileSize,
indexOfFile,
file,
t
) => {
const length = requestsDataArray.length;
for (let index = 0; index < length; index++) {
if (
this.uploaded ||
!this.files.some((f) => f.file === file) ||
this.files[indexOfFile].cancel
) {
return Promise.resolve();
}
// const progressData = {
// visible: true,
// percent,
// icon: "upload",
// alert: false,
// };
const res = await api.files.uploadFile(
location,
requestsDataArray[index]
);
// dispatch(setPrimaryProgressBarData(progressData));
//console.log(`Uploaded chunk ${index}/${length}`, res);
// let index = 0;
// let len = files.length;
//let isLatestFile = indexOfFile === newFilesLength - 1;
const fileId = res.data.data.id;
// while (index < len) {
// await startSessionFunc(index, t, dispatch, getState);
// index++;
const { uploaded } = res.data.data;
// state = getState();
// files = state.files.uploadData.files;
// len = files.length;
// }
const uploadedSize = uploaded ? fileSize : index * chunkSize;
// //TODO: Uncomment after fix conversation
// /*const filesToConvert = getFilesToConvert(files);
// if (filesToConvert.length > 0) {
// // Ask to convert options
// return dispatch(setConvertDialogVisible(true));
// }*/
const newPercent = this.getNewPercent(uploadedSize, indexOfFile);
// // All files has been uploaded and nothing to convert
// finishUploadFiles(getState, dispatch);
// };
const percentCurrentFile = (index / length) * 100;
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "upload",
percent: newPercent,
visible: true,
loadingFile: {
uniqueId: this.files[indexOfFile].uniqueId,
percent: percentCurrentFile,
},
});
if (uploaded) {
this.files[indexOfFile].fileId = fileId;
this.files[indexOfFile].fileInfo = await api.files.getFileInfo(fileId);
this.percent = newPercent;
//setUploadData(uploadData);
}
}
// All chuncks are uploaded
const currentFile = this.files[indexOfFile];
if (!currentFile) return Promise.resolve();
const { toFolderId } = currentFile;
return this.throttleRefreshFiles(toFolderId);
};
startUploadFiles = async (t) => {
let files = this.files;
if (files.length === 0 || this.filesSize === 0)
return this.finishUploadFiles();
const progressData = {
visible: true,
percent: this.percent,
icon: "upload",
alert: false,
};
this.primaryProgressDataStore.setPrimaryProgressBarData(progressData);
let index = 0;
let len = files.length;
while (index < len) {
await this.startSessionFunc(index, t);
index++;
files = this.files;
len = files.length;
}
//TODO: Uncomment after fix conversation
/*const filesToConvert = this.getFilesToConvert(files);
if (filesToConvert.length > 0) {
// Ask to convert options
return dispatch(setConvertDialogVisible(true));
}*/
// All files has been uploaded and nothing to convert
this.finishUploadFiles();
};
startSessionFunc = (indexOfFile, t) => {
//console.log("START UPLOAD SESSION FUNC", uploadData);
if (!this.uploaded && this.files.length === 0) {
this.uploaded = true;
//setUploadData(uploadData);
return;
}
const item = this.files[indexOfFile];
if (!item) {
console.error("Empty files");
return Promise.resolve();
}
const { file, toFolderId /*, action*/ } = item;
const chunks = Math.ceil(file.size / chunkSize, chunkSize);
const fileName = file.name;
const fileSize = file.size;
const relativePath = file.path
? file.path.slice(1, -file.name.length)
: file.webkitRelativePath
? file.webkitRelativePath.slice(0, -file.name.length)
: "";
return api.files
.startUploadSession(toFolderId, fileName, fileSize, relativePath)
.then((res) => {
const location = res.data.location;
const requestsDataArray = [];
let chunk = 0;
while (chunk < chunks) {
const offset = chunk * chunkSize;
const formData = new FormData();
formData.append("file", file.slice(offset, offset + chunkSize));
requestsDataArray.push(formData);
chunk++;
}
return { location, requestsDataArray, fileSize };
})
.then(({ location, requestsDataArray, fileSize }) => {
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "upload",
visible: true,
percent: this.percent,
loadingFile: {
uniqueId: this.files[indexOfFile].uniqueId,
percent: chunks < 2 ? 50 : 0,
},
});
return this.uploadFileChunks(
location,
requestsDataArray,
fileSize,
indexOfFile,
file,
t
);
})
.catch((err) => {
if (this.files[indexOfFile] === undefined) {
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "upload",
percent: 100,
visible: true,
alert: true,
});
return Promise.resolve();
}
this.files[indexOfFile].error = err;
//dispatch(setUploadData(uploadData));
const newPercent = this.getNewPercent(fileSize, indexOfFile);
this.primaryProgressDataStore.setPrimaryProgressBarData({
icon: "upload",
percent: newPercent,
visible: true,
alert: true,
});
return Promise.resolve();
});
};
finishUploadFiles = () => {
const totalErrorsCount = sumBy(this.files, (f) => (f.error ? 1 : 0));
if (totalErrorsCount > 0) console.log("Errors: ", totalErrorsCount);
const uploadData = {
files: this.uploadPanelVisible ? this.files : [],
filesSize: 0,
uploadStatus: null,
uploadedFiles: 0,
percent: 0,
uploaded: true,
};
setTimeout(() => {
this.primaryProgressDataStore.clearPrimaryProgressData();
this.setUploadData(uploadData);
}, TIMEOUT);
};
}
export default UploadDataStore;
export default new UploadDataStore();

View File

@ -75,4 +75,4 @@ class VersionHistoryStore {
};
}
export default VersionHistoryStore;
export default new VersionHistoryStore();