Merge branch 'feature/mobx' of https://github.com/ONLYOFFICE/AppServer into feature/mobx

# Conflicts:
#	products/ASC.Files/Client/src/components/Article/Header/index.js
#	products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRowContent.js
#	products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesTileContent.js
#	products/ASC.Files/Client/src/components/pages/Home/Section/Body/index.js
#	products/ASC.Files/Client/src/components/panels/NewFilesPanel/index.js
This commit is contained in:
Nikita Gopienko 2021-02-16 12:16:13 +03:00
commit 52c9e4daac
133 changed files with 2064 additions and 2643 deletions

View File

@ -239,19 +239,19 @@ 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,
isEncryption: store.settingsStore.isEncryptionSupport,
export default inject(({ auth, mainFilesStore }) => ({
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,
setIsLoaded: mainFilesStore.setIsLoaded,
setEncryptionKeys: store.settingsStore.setEncryptionKeys,
setEncryptionKeys: auth.settingsStore.setEncryptionKeys,
loadFilesInfo: async () => {
await store.init();
await auth.init();
await mainFilesStore.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";
@ -252,9 +252,9 @@ const ThirdPartyList = (props) => {
// })(ThirdPartyList);
export default inject(({ mainFilesStore, settingsStore }) => {
const { setIsLoading, filesStore } = mainFilesStore;
const { setSelectedFolder } = filesStore.selectedFolderStore;
const { setSelectedNode } = filesStore.treeFoldersStore;
const { setIsLoading, filesStore } = mainFilesStore;
const { setSelectedFolder } = filesStore.selectedFolderStore;
const { setSelectedNode } = filesStore.treeFoldersStore;
const {
setConnectItem,
setShowThirdPartyPanel,
@ -268,7 +268,7 @@ export default inject(({ mainFilesStore, settingsStore }) => {
openConnectWindow,
} = settingsStore.thirdPartyStore;
return {
return {
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
@ -276,12 +276,12 @@ export default inject(({ mainFilesStore, settingsStore }) => {
nextCloudConnectItem,
webDavConnectItem,
setIsLoading,
setSelectedFolder,
setSelectedNode,
setIsLoading,
setSelectedFolder,
setSelectedNode,
setConnectItem,
setShowThirdPartyPanel,
getOAuthToken,
openConnectWindow,
};
};
})(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,76 +503,76 @@ 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(({ store, mainFilesStore }) => {
const {
filesStore,
setIsLoading,
dragging,
setDragging,
setDragItem,
} = mainFilesStore;
const {
treeFoldersStore,
selectedFolderStore,
filter,
setFilter,
export default inject(({ auth, mainFilesStore }) => {
const {
filesStore,
setIsLoading,
dragging,
setDragging,
setDragItem,
} = mainFilesStore;
const {
treeFoldersStore,
selectedFolderStore,
filter,
setFilter,
selection,
} = filesStore;
} = filesStore;
const {
treeFolders,
setTreeFolders,
myFolderId,
commonFolderId,
isPrivacyFolder,
} = treeFoldersStore;
const { pathParts, id } = selectedFolderStore;
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,
filter,
return {
isAdmin: auth.isAdmin,
isDesktop: auth.settingsStore.isDesktopClient,
dragging,
rootFolderId: pathParts,
currentId: id,
treeFolders,
myId: myFolderId,
commonId: commonFolderId,
isPrivacy: isPrivacyFolder,
filter,
draggableItems: dragging ? selection : false,
setDragging,
setIsLoading,
setTreeFolders,
setFilter,
setDragItem,
};
setDragging,
setIsLoading,
setTreeFolders,
setFilter,
setDragItem,
};
})(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,10 +223,10 @@ const TreeSettings = (props) => {
// setIsLoading,
// })(withRouter(TreeSettings));
export default inject(({ store, mainFilesStore, settingsStore }) => {
const { setIsLoading, filesStore, isLoading } = mainFilesStore;
const { setSelectedFolder } = filesStore.selectedFolderStore;
const { selectedTreeNode, setSelectedNode } = filesStore.treeFoldersStore;
export default inject(({ auth, mainFilesStore, settingsStore }) => {
const { setIsLoading, filesStore, isLoading } = mainFilesStore;
const { setSelectedFolder } = filesStore.selectedFolderStore;
const { selectedTreeNode, setSelectedNode } = filesStore.treeFoldersStore;
const {
getFilesSettings,
enableThirdParty,
@ -234,17 +234,17 @@ export default inject(({ store, mainFilesStore, settingsStore }) => {
setExpandSettingsTree,
} = settingsStore;
return {
isAdmin: store.isAdmin,
isLoading,
selectedTreeNode,
return {
isAdmin: auth.isAdmin,
isLoading,
selectedTreeNode,
enableThirdParty,
expandedSetting,
setIsLoading,
setSelectedFolder,
setSelectedNode,
setIsLoading,
setSelectedFolder,
setSelectedNode,
getFilesSettings,
setExpandSettingsTree,
};
};
})(withRouter(observer(TreeSettings)));

View File

@ -157,7 +157,7 @@ class ArticleBodyContent extends React.Component {
// };
//export default connect(mapStateToProps, mapDispatchToProps)(ArticleBodyContent);
export default inject(({ store, mainFilesStore }) => {
export default inject(({ auth, mainFilesStore }) => {
const { setIsLoading, filesStore } = mainFilesStore;
const {
fetchFiles,

View File

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

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,16 +185,16 @@ 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(({ store, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
export default inject(({ auth, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const {
firstLoad,
fileActionStore,
@ -203,19 +203,19 @@ export default inject(({ store, mainFilesStore }) => {
canCreate,
uploadDataStore,
} = filesStore;
const { isPrivacyFolder } = treeFoldersStore;
const { id } = filesStore.selectedFolderStore;
const { isPrivacyFolder } = treeFoldersStore;
const { id } = filesStore.selectedFolderStore;
const { startUpload } = uploadDataStore;
return {
homepage: store.settingsStore.homepage,
firstLoad,
selectedFolderId: id,
isPrivacy: isPrivacyFolder,
filter,
return {
homepage: auth.settingsStore.homepage,
firstLoad,
selectedFolderId: id,
isPrivacy: isPrivacyFolder,
filter,
canCreate,
setAction: fileActionStore.setAction,
startUpload,
};
};
})(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),
// };
// };
@ -380,33 +380,33 @@ export default inject(({ mainFilesStore, settingsStore }) => {
getOAuthToken,
saveThirdParty,
openConnectWindow,
fetchThirdPartyProviders,
fetchThirdPartyProviders,
} = settingsStore.thirdPartyStore;
const { fetchFiles, treeFoldersStore } = filesStore;
const { fetchFiles, treeFoldersStore } = 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";
@ -126,13 +126,13 @@ const ConvertDialog = (props) => (
// })(withRouter(ConvertDialog));
export default inject(({ mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const { setTreeFolders } = filesStore.treeFoldersStore;
const { filesStore } = mainFilesStore;
const { setTreeFolders } = filesStore.treeFoldersStore;
const { setDialogVisible, convertUploadedFiles } = filesStore.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,42 +323,42 @@ const DeleteDialog = (props) => (
// fetchFiles,
// })(withRouter(DeleteDialog));
export default inject(({ store, mainFilesStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const {
fetchFiles,
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
} = filesStore;
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const {
fetchFiles,
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
} = filesStore;
const {
treeFolders,
setTreeFolders,
isRecycleBinFolder,
isPrivacyFolder,
} = treeFoldersStore;
const {
treeFolders,
setTreeFolders,
isRecycleBinFolder,
isPrivacyFolder,
} = treeFoldersStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
return {
currentFolderId: selectedFolderStore.id,
selection,
isLoading,
treeFolders,
isRecycleBinFolder,
isPrivacy: isPrivacyFolder,
filter,
return {
currentFolderId: selectedFolderStore.id,
selection,
isLoading,
treeFolders,
isRecycleBinFolder,
isPrivacy: isPrivacyFolder,
filter,
isRootFolder: selectedFolderStore.isRootFolder,
fetchFiles,
setTreeFolders,
setSecondaryProgressBarData,
clearSecondaryProgressData,
};
fetchFiles,
setTreeFolders,
setSecondaryProgressBarData,
clearSecondaryProgressData,
};
})(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,
@ -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,7 +136,7 @@ const DeleteThirdPartyDialog = (props) => (
// setTreeFolders,
// })(withRouter(DeleteThirdPartyDialog));
export default inject(({ store, mainFilesStore, thirdParty }) => {
export default inject(({ auth, mainFilesStore, thirdParty }) => {
const { filesStore } = mainFilesStore;
const { providers, setThirdPartyProviders, deleteThirdParty } = thirdParty;
const { fetchFiles, treeFoldersStore } = filesStore;

View File

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

View File

@ -187,7 +187,7 @@ const EmptyTrashDialog = (props) => (
// fetchFiles,
// })(withRouter(EmptyTrashDialog));
export default inject(({ store, mainFilesStore }) => {
export default inject(({ mainFilesStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const { fetchFiles, filter, secondaryProgressDataStore } = filesStore;
const {

View File

@ -760,20 +760,20 @@ class FilesRowContent extends React.PureComponent {
// function mapStateToProps(state, props) {
// return {
// filter: getFilter(state),
// fileAction: getFileAction(state),
// parentFolder: getSelectedFolderParentId(state),
// isTrashFolder: getIsRecycleBinFolder(state),
// settings: getSettings(state),
// treeFolders: getTreeFolders(state),
// selectedFolderPathParts: getPathParts(state),
// newItems: getSelectedFolderNew(state),
// selectedFolder: getSelectedFolder(state),
// folders: getFolders(state),
//filter: getFilter(state),
//fileAction: getFileAction(state),
//parentFolder: getSelectedFolderParentId(state),
//isTrashFolder: getIsRecycleBinFolder(state),
//settings: getSettings(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),
//isLoading: getIsLoading(state),
//isPrivacy: getIsPrivacyFolder(state),
//isDesktop: isDesktopClient(state),
// canWebEdit: canWebEdit(props.item.fileExst)(state),
// canConvert: canConvert(props.item.fileExst)(state),
// isImage: isImage(props.item.fileExst)(state),
@ -797,9 +797,9 @@ class FilesRowContent extends React.PureComponent {
// replaceFileStream,
// })(withRouter(withTranslation()(FilesRowContent)));
export default inject(({ store, mainFilesStore, formatsStore }, { item }) => {
const { replaceFileStream, getEncryptionAccess, setEncryptionAccess } = store;
const { homepage, culture, isDesktopClient } = store.settingsStore;
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,

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,8 +470,8 @@ class FilesTileContent extends React.PureComponent {
// fetchFiles,
// })(withRouter(withTranslation()(FilesTileContent)));
export default inject(({ store, mainFilesStore, formatsStore }, { item }) => {
const { homepage, culture } = store.settingsStore;
export default inject(({ auth, mainFilesStore, formatsStore }, { item }) => {
const { homepage, culture } = auth.settingsStore;
const { filesStore, setIsLoading, isLoading, dragging } = mainFilesStore;
const {
iconFormatsStore,
@ -484,48 +484,48 @@ export default inject(({ store, mainFilesStore, formatsStore }, { item }) => {
treeFoldersStore,
filter,
newRowItems,
createFile,
updateFile,
renameFolder,
createFile,
updateFile,
renameFolder,
} = filesStore;
const { treeFolders, setTreeFolders, isRecycleBinFolder } = treeFoldersStore;
const { type, extension, id } = filesStore.fileActionStore;
const { type, extension, id } = filesStore.fileActionStore;
const fileAction = { type, extension, id };
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);
return {
culture,
homepage,
fileAction,
folders,
rootFolderId: filesStore.selectedFolderStore.pathParts,
selectedFolderId: filesStore.selectedFolderStore.id,
selectedFolderPathParts: filesStore.selectedFolderStore.pathParts,
newItems: filesStore.selectedFolderStore.new,
parentFolder: filesStore.selectedFolderStore.parentId,
isLoading,
treeFolders,
isTrashFolder: isRecycleBinFolder,
filter,
dragging,
return {
culture,
homepage,
fileAction,
folders,
rootFolderId: filesStore.selectedFolderStore.pathParts,
selectedFolderId: filesStore.selectedFolderStore.id,
selectedFolderPathParts: filesStore.selectedFolderStore.pathParts,
newItems: filesStore.selectedFolderStore.new,
parentFolder: filesStore.selectedFolderStore.parentId,
isLoading,
treeFolders,
isTrashFolder: isRecycleBinFolder,
filter,
dragging,
canWebEdit,
isVideo,
isImage,
isSound,
newRowItems,
setIsLoading,
fetchFiles,
setTreeFolders,
setIsLoading,
fetchFiles,
setTreeFolders,
createFile,
updateFile,
renameFolder,
};
};
})(withRouter(withTranslation()(observer(FilesTileContent))));

View File

@ -31,31 +31,31 @@ import {
//store,
} from "asc-web-common";
// import {
// clearSecondaryProgressData,
//clearSecondaryProgressData,
// loopFilesOperations,
// markItemAsFavorite,
// removeItemFromFavorite,
// fetchFavoritesFolder,
// deselectFile,
//deselectFile,
// updateFile,
// fetchFiles,
// selectFile,
// setAction,
// setDragging,
// setDragItem,
// setIsLoading,
// setMediaViewerData,
//fetchFiles,
//selectFile,
//setAction,
//setDragging,
//setDragItem,
//setIsLoading,
//setMediaViewerData,
// setUpdateTree,
// setSecondaryProgressBarData,
// setSelected,
// setSelection,
// setTreeFolders,
//setSecondaryProgressBarData,
//setSelected,
//setSelection,
//setTreeFolders,
// getFileInfo,
// addFileToRecentlyViewed,
// setIsVerHistoryPanel,
// setVerHistoryFileId,
// setSharingPanelVisible,
// setChangeOwnerPanelVisible,
//setIsVerHistoryPanel,
//setVerHistoryFileId,
//setSharingPanelVisible,
//setChangeOwnerPanelVisible,
// } from "../../../../../store/files/actions";
import { TIMEOUT } from "../../../../../helpers/constants";
import {
@ -2127,49 +2127,49 @@ SectionBodyContent.defaultProps = {
// const mapStateToProps = (state) => {
// return {
// currentFolderCount: getCurrentFilesCount(state),
// currentMediaFileId: getMediaViewerId(state),
// dragging: getDragging(state),
// dragItem: getDragItem(state),
// fileAction: getFileAction(state),
// files: getFiles(state),
// filesList: getFilesList(state)(state),
// filter: getFilter(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),
//currentMediaFileId: getMediaViewerId(state),
//dragging: getDragging(state),
//dragItem: getDragItem(state),
//fileAction: getFileAction(state),
//files: getFiles(state),
//filesList: getFilesList(state)(state),
//filter: getFilter(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),
// mediaViewerImageFormats: getMediaViewerImageFormats(state),
// mediaViewerMediaFormats: getMediaViewerMediaFormats(state),
// mediaViewerVisible: getMediaViewerVisibility(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),
// title: getSelectedFolderTitle(state),
// treeFolders: getTreeFolders(state),
// viewAs: getViewAs(state),
// viewer: getCurrentUser(state),
//mediaViewerVisible: getMediaViewerVisibility(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),
//title: getSelectedFolderTitle(state),
//treeFolders: getTreeFolders(state),
//viewAs: getViewAs(state),
//viewer: getCurrentUser(state),
// tooltipValue: getTooltipLabel(state),
// iconOfDraggedFile: getIconOfDraggedFile(state)(state),
// sharingPanelVisible: getSharePanelVisible(state),
//sharingPanelVisible: getSharePanelVisible(state),
// isRootFolder: isRootFolder(state),
// providers: getThirdPartyProviders(state),
// capabilities: getThirdPartyCapabilities(state),
// isVersionHistoryPanel: getIsVerHistoryPanel(state),
// isTabletView: getIsTabletView(state),
//isVersionHistoryPanel: getIsVerHistoryPanel(state),
//isTabletView: getIsTabletView(state),
// };
// };
@ -2203,7 +2203,7 @@ SectionBodyContent.defaultProps = {
export default inject(
({
store,
auth,
mainFilesStore,
settingsStore,
mediaViewerDataStore,
@ -2218,7 +2218,7 @@ export default inject(
isTabletView,
organizationName,
isDesktopClient,
} = store.settingsStore;
} = auth.settingsStore;
const {
dragging,
setDragging,
@ -2301,12 +2301,12 @@ export default inject(
} = mediaViewerDataStore;
return {
isAdmin: store.isAdmin,
isAdmin: auth.isAdmin,
homepage,
culture,
isEncryptionSupport,
isTabletView,
viewer: store.userStore.user,
viewer: auth.userStore.user,
organizationName,
isDesktop: isDesktopClient,
dragging,

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(({ store, mainFilesStore }) => {
const { filesStore, setIsLoading, setViewAs, viewAs } = mainFilesStore;
const { firstLoad, fetchFiles, filter, selectedFolderStore } = filesStore;
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading, setViewAs, viewAs } = mainFilesStore;
const { firstLoad, fetchFiles, filter, selectedFolderStore } = filesStore;
const { user } = store.userStore;
const { customNames, culture } = store.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,18 +729,18 @@ class SectionHeaderContent extends React.Component {
// setSharingPanelVisible,
// })(withTranslation()(withRouter(SectionHeaderContent)));
export default inject(({ store, mainFilesStore }) => {
const { filesStore, setIsLoading } = mainFilesStore;
const {
setSelected,
fileActionStore,
fetchFiles,
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
dialogsStore,
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading } = mainFilesStore;
const {
setSelected,
fileActionStore,
fetchFiles,
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
dialogsStore,
canCreate,
isHeaderVisible,
isHeaderIndeterminate,
@ -750,27 +750,27 @@ export default inject(({ store, mainFilesStore }) => {
isOnlyFoldersSelected,
isThirdPartySelection,
isWebEditSelected,
} = filesStore;
const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore;
const { setAction } = fileActionStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const { sharingPanelVisible, setSharingPanelVisible } = dialogsStore;
} = filesStore;
const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore;
const { setAction } = fileActionStore;
const {
setSecondaryProgressBarData,
clearSecondaryProgressData,
} = secondaryProgressDataStore;
const { sharingPanelVisible, setSharingPanelVisible } = dialogsStore;
return {
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,
filter,
sharingPanelVisible,
return {
isAdmin: auth.isAdmin,
isDesktop: auth.settingsStore.isDesktopClient,
isRootFolder: selectedFolderStore.parentId === 0,
title: selectedFolderStore.title,
parentId: selectedFolderStore.parentId,
currentFolderId: selectedFolderStore.id,
selection,
isRecycleBin: isRecycleBinFolder,
isPrivacy: isPrivacyFolder,
filter,
sharingPanelVisible,
canCreate,
isItemsSelected: selection.length,
isHeaderVisible,
@ -782,12 +782,12 @@ export default inject(({ store, mainFilesStore }) => {
isThirdPartySelection,
isWebEditSelected,
setSelected,
setAction,
setIsLoading,
fetchFiles,
setSecondaryProgressBarData,
setSharingPanelVisible,
clearSecondaryProgressData,
};
setSelected,
setAction,
setIsLoading,
fetchFiles,
setSecondaryProgressBarData,
setSharingPanelVisible,
clearSecondaryProgressData,
};
})(withTranslation()(withRouter(observer(SectionHeaderContent))));

View File

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

View File

@ -362,7 +362,7 @@ Home.propTypes = {
// };
// };
export default inject(({ store, mainFilesStore }) => {
export default inject(({ auth, mainFilesStore }) => {
const {
dragging,
setDragging,
@ -409,7 +409,7 @@ export default inject(({ store, mainFilesStore }) => {
const { setUploadPanelVisible, startUpload } = uploadDataStore;
return {
homepage: store.settingsStore.homepage,
homepage: auth.settingsStore.homepage,
firstLoad,
dragging,
fileActionId: id,

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,15 +574,15 @@ class ConnectClouds extends React.Component {
// setSelectedNode,
// })(withTranslation()(ConnectClouds));
export default inject(({ store, mainFilesStore, settingsStore }) => {
export default inject(({ auth, mainFilesStore, settingsStore }) => {
const { filesStore } = mainFilesStore;
const {
providers,
connectItem,
capabilities,
setConnectItem,
setConnectItem,
showThirdPartyPanel,
setShowThirdPartyPanel,
setShowThirdPartyPanel,
googleConnectItem,
boxConnectItem,
dropboxConnectItem,
@ -595,12 +595,12 @@ export default inject(({ store, mainFilesStore, settingsStore }) => {
getOAuthToken,
openConnectWindow,
} = settingsStore.thirdPartyStore;
const { fetchFiles, treeFoldersStore, filter } = filesStore;
const { fetchFiles, treeFoldersStore, filter } = filesStore;
const { setSelectedNode, myFolder, commonFolder } = treeFoldersStore;
return {
isAdmin: store.isAdmin,
filter,
return {
isAdmin: auth.isAdmin,
filter,
providers,
showThirdPartyPanel,
connectItem,
@ -617,11 +617,11 @@ export default inject(({ store, mainFilesStore, settingsStore }) => {
myDirectoryFolders: myFolder && myFolder.folders,
commonDirectoryFolders: commonFolder && commonFolder.folders,
fetchFiles,
setSelectedNode,
fetchFiles,
setSelectedNode,
setConnectItem,
setShowThirdPartyPanel,
getOAuthToken,
openConnectWindow,
};
};
})(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,7 +204,7 @@ const SectionBodyContent = ({
// setForceSave,
// })(SectionBodyContent);
export default inject(({ store, mainFilesStore, settingsStore }) => {
export default inject(({ auth, mainFilesStore, settingsStore }) => {
const { isLoading, filesStore } = mainFilesStore;
const { treeFoldersStore } = filesStore;
const { selectedTreeNode } = treeFoldersStore;
@ -216,20 +216,20 @@ export default inject(({ store, mainFilesStore, settingsStore }) => {
forcesave,
storeForcesave,
enableThirdParty,
setUpdateIfExist,
setStoreOriginal,
setEnableThirdParty,
setConfirmDelete,
setStoreForceSave,
setForceSave,
setUpdateIfExist,
setStoreOriginal,
setEnableThirdParty,
setConfirmDelete,
setStoreForceSave,
setForceSave,
} = settingsStore;
const settingsTree = Object.keys(settings).length !== 0 ? settings : {};
return {
isAdmin: store.isAdmin,
isLoading,
selectedTreeNode,
return {
isAdmin: auth.isAdmin,
isLoading,
selectedTreeNode,
settingsTree,
storeOriginalFiles,
confirmDelete,
@ -244,5 +244,5 @@ export default inject(({ store, mainFilesStore, settingsStore }) => {
setConfirmDelete,
setStoreForceSave,
setForceSave,
};
};
})(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)),
// };
// };
@ -148,19 +148,19 @@ const Settings = (props) => {
// )(withRouter(Settings));
export default inject(({ mainFilesStore, settingsStore }) => {
const { filesStore, isLoading } = mainFilesStore;
const { setFirstLoad, treeFoldersStore } = filesStore;
const { setSelectedNode } = treeFoldersStore;
const { filesStore, isLoading } = mainFilesStore;
const { setFirstLoad, treeFoldersStore } = filesStore;
const { setSelectedNode } = treeFoldersStore;
const { getFilesSettings, settingsTree: settings } = settingsStore;
const settingsTree = Object.keys(settings).length !== 0 ? settings : {};
return {
isLoading,
return {
isLoading,
settingsTree,
setFirstLoad,
setSelectedNode,
setFirstLoad,
setSelectedNode,
getFilesSettings,
};
};
})(withRouter(observer(Settings)));

View File

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

View File

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

View File

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

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,21 +220,21 @@ const ChangeOwnerPanel = (props) => (
// setChangeOwnerPanelVisible,
// })(withRouter(ChangeOwnerPanel));
export default inject(({ store, mainFilesStore }) => {
export default inject(({ auth, mainFilesStore }) => {
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
const {
files,
folders,
selection,
dialogsStore,
setFiles,
setFolders,
setFiles,
setFolders,
setFilesOwner,
} = filesStore;
const { ownerPanelVisible, setChangeOwnerPanelVisible } = dialogsStore;
return {
groupsCaption: store.settingsStore.customNames.groupsCaption,
groupsCaption: auth.settingsStore.customNames.groupsCaption,
files,
folders,
selection,

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";

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,28 +222,28 @@ const OperationsPanel = (props) => (
// itemOperationToFolder,
// })(withRouter(OperationsPanel));
export default inject(({ store, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const {
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
export default inject(({ auth, mainFilesStore }) => {
const { filesStore } = mainFilesStore;
const {
selection,
selectedFolderStore,
treeFoldersStore,
filter,
secondaryProgressDataStore,
itemOperationToFolder,
} = filesStore;
} = filesStore;
const { isRecycleBinFolder, operationsFolders } = treeFoldersStore;
const { setSecondaryProgressBarData } = secondaryProgressDataStore;
const { setSecondaryProgressBarData } = secondaryProgressDataStore;
return {
expandedKeys: selectedFolderStore.pathParts,
currentFolderId: selectedFolderStore.id,
selection,
isRecycleBin: isRecycleBinFolder,
filter,
return {
expandedKeys: selectedFolderStore.pathParts,
currentFolderId: selectedFolderStore.id,
selection,
isRecycleBin: isRecycleBinFolder,
filter,
operationsFolders,
setSecondaryProgressBarData,
setSecondaryProgressBarData,
itemOperationToFolder,
};
};
})(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,17 +663,17 @@ const SharingPanel = (props) => (
// updateUploadedItem,
// })(withRouter(SharingPanel));
export default inject(({ store, mainFilesStore }, { uploadPanelVisible }) => {
const { replaceFileStream, setEncryptionAccess } = store;
const { customNames, isDesktopClient, homepage } = store.settingsStore;
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
const {
files,
folders,
selection,
treeFoldersStore,
dialogsStore,
uploadDataStore,
export default inject(({ auth, mainFilesStore }, { uploadPanelVisible }) => {
const { replaceFileStream, setEncryptionAccess } = auth;
const { customNames, isDesktopClient, homepage } = auth.settingsStore;
const { filesStore, setIsLoading, isLoading } = mainFilesStore;
const {
files,
folders,
selection,
treeFoldersStore,
dialogsStore,
uploadDataStore,
canShareOwnerChange,
getAccessOption,
getExternalAccessOption,
@ -681,32 +681,32 @@ export default inject(({ store, mainFilesStore }, { uploadPanelVisible }) => {
setFolders,
getShareUsers,
setShareFiles,
} = filesStore;
const { isPrivacyFolder } = treeFoldersStore;
const { sharingPanelVisible, setSharingPanelVisible } = dialogsStore;
} = filesStore;
const { isPrivacyFolder } = treeFoldersStore;
const { sharingPanelVisible, setSharingPanelVisible } = dialogsStore;
const {
uploadSelection,
selectUploadedFile,
updateUploadedItem,
} = uploadDataStore;
return {
isMyId: store.userStore.user.id,
groupsCaption: customNames.groupsCaption,
isDesktop: isDesktopClient,
homepage,
files,
folders,
selection: uploadPanelVisible ? uploadSelection : selection,
isLoading,
isPrivacy: isPrivacyFolder,
sharingPanelVisible,
uploadSelection,
return {
isMyId: auth.userStore.user.id,
groupsCaption: customNames.groupsCaption,
isDesktop: isDesktopClient,
homepage,
files,
folders,
selection: uploadPanelVisible ? uploadSelection : selection,
isLoading,
isPrivacy: isPrivacyFolder,
sharingPanelVisible,
uploadSelection,
canShareOwnerChange,
setIsLoading,
setSharingPanelVisible,
selectUploadedFile,
setIsLoading,
setSharingPanelVisible,
selectUploadedFile,
updateUploadedItem,
replaceFileStream,
setEncryptionAccess,
@ -716,5 +716,5 @@ export default inject(({ store, mainFilesStore }, { uploadPanelVisible }) => {
setFolders,
getShareUsers,
setShareFiles,
};
};
})(withRouter(observer(SharingPanel)));

View File

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

View File

@ -20,15 +20,15 @@ const { authStore } = commonStore;
ReactDOM.render(
<MobxProvider
store={authStore}
auth={authStore}
mainFilesStore={mainFilesStore}
settingsStore={settingsStore}
mediaViewerDataStore={mediaViewerDataStore}
formatsStore={formatsStore}
>
<ErrorBoundary>
<App />
</ErrorBoundary>
<ErrorBoundary>
<App />
</ErrorBoundary>
</MobxProvider>,
document.getElementById("root")
);

View File

@ -271,15 +271,15 @@ const App = (props) => {
// };
// };
*/
export default inject(({ store, peopleStore }) => ({
homepage: store.settingsStore.homepage || config.homepage,
export default inject(({ auth, peopleStore }) => ({
homepage: auth.settingsStore.homepage || config.homepage,
loadBaseInfo: () => {
store.init();
store.settingsStore.setModuleInfo(
auth.init();
auth.settingsStore.setModuleInfo(
config.homepage,
"f4d98afd-d336-4332-8778-3c6945c81ea0"
);
peopleStore.init();
},
isLoaded: store.isLoaded,
isLoaded: auth.isLoaded,
}))(observer(App));

View File

@ -229,16 +229,16 @@ const BodyContent = (props) => {
);
};
export default inject(({ store, peopleStore }) => {
export default inject(({ auth, peopleStore }) => {
const groups = peopleStore.groupsStore.groups;
const { groupsCaption } = store.settingsStore.customNames;
const { groupsCaption } = auth.settingsStore.customNames;
const data = getTreeGroups(groups, groupsCaption);
const selectedKeys = peopleStore.selectedGroupStore.selectedGroup
? [peopleStore.selectedGroupStore.selectedGroup]
: ["root"];
return {
isLoaded: store.isLoaded,
isAdmin: store.isAdmin,
isLoaded: auth.isLoaded,
isAdmin: auth.isAdmin,
groups,
data,
selectedKeys,

View File

@ -10,6 +10,6 @@ const ArticleHeaderContent = ({ currentModuleName }) => {
);
};
export default inject(({ store }) => ({
currentModuleName: store.product.title,
export default inject(({ auth }) => ({
currentModuleName: auth.product.title,
}))(observer(ArticleHeaderContent));

View File

@ -129,8 +129,8 @@ ArticleMainButtonContent.propTypes = {
language: PropTypes.string,
};
export default inject(({ store }) => ({
settings: store.settingsStore,
isLoaded: store.isLoaded,
language: store.language,
export default inject(({ auth }) => ({
settings: auth.settingsStore,
isLoaded: auth.isLoaded,
language: auth.language,
}))(observer(withRouter(ArticleMainButtonContent)));

View File

@ -197,7 +197,7 @@ ChangeUserStatusDialog.propTypes = {
};
const mapStateToProps = (state, ownProps) => {
const { selection } = state.people;
// const { selection } = state.people;
const { userStatus } = ownProps;
return {

View File

@ -191,7 +191,7 @@ ChangeUserTypeDialog.propTypes = {
};
const mapStateToProps = (state, ownProps) => {
const { selection } = state.people;
// const { selection } = state.people;
const { userType } = ownProps;
return {

View File

@ -114,7 +114,7 @@ DeleteProfileEverDialog.propTypes = {
history: PropTypes.object.isRequired,
};
export default inject(({ store, peopleStore }) => ({
userCaption: store.settingsStore.customNames.userCaption,
export default inject(({ auth, peopleStore }) => ({
userCaption: auth.settingsStore.customNames.userCaption,
fetchPeople: peopleStore.usersStore.getUsersList,
}))(observer(withRouter(DeleteProfileEverDialog)));

View File

@ -196,7 +196,7 @@ const mapStateToProps = (state) => {
return {
//filter,
userIds: usersToRemoveIds,
selectedUsers: selection,
//selectedUsers: selection,
};
};

View File

@ -252,9 +252,9 @@ export default connect(
mapStateToProps
//mapDispatchToProps
)(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
guestsCaption: store.settingsStore.customNames.guestsCaption,
inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
guestsCaption: auth.settingsStore.customNames.guestsCaption,
getPortalInviteLinks: peopleStore.inviteLinksStore.getPortalInviteLinks,
userInvitationLink: peopleStore.inviteLinksStore.inviteLinks.userLink,
guestInvitationLink: peopleStore.inviteLinksStore.inviteLinks.guestLink,

View File

@ -524,16 +524,16 @@ export default connect(mapStateToProps, {
// selectGroup,
// setFilter,
})(
inject(({ store, peopleStore }) => {
inject(({ auth, peopleStore }) => {
const groups = convertGroups(peopleStore.groupsStore.groups);
return {
settings: store.settingsStore,
groupCaption: store.settingsStore.customNames.groupCaption,
groupsCaption: store.settingsStore.customNames.groupsCaption,
groupHeadCaption: store.settingsStore.customNames.groupHeadCaption,
isLoaded: store.isLoaded,
currentModuleName: store.product.title,
me: store.userStore.user,
settings: auth.settingsStore,
groupCaption: auth.settingsStore.customNames.groupCaption,
groupsCaption: auth.settingsStore.customNames.groupsCaption,
groupHeadCaption: auth.settingsStore.customNames.groupHeadCaption,
isLoaded: auth.isLoaded,
currentModuleName: auth.product.title,
me: auth.userStore.user,
groups,
filter: peopleStore.filterStore.filter,
setFilter: peopleStore.filterStore.setFilterParams,

View File

@ -95,8 +95,8 @@ function mapStateToProps(state) {
// });
export default connect(mapStateToProps)(
inject(({ store, peopleStore }) => ({
groupCaption: store.settingsStore.customNames.groupCaption,
inject(({ auth, peopleStore }) => ({
groupCaption: auth.settingsStore.customNames.groupCaption,
filter: peopleStore.filterStore.filter,
setFilter: peopleStore.filterStore.setFilterParams,
group: peopleStore.selectedGroupStore.targetedGroup,

View File

@ -1,7 +1,6 @@
import React, { useEffect } from "react";
import { connect } from "react-redux";
import { Loader } from "asc-web-components";
import { PageLayout, utils, store } from "asc-web-common";
import { PageLayout, utils } from "asc-web-common";
import {
ArticleHeaderContent,
ArticleMainButtonContent,
@ -9,7 +8,6 @@ import {
} from "../../Article";
import { SectionHeaderContent, SectionBodyContent } from "./Section";
import { I18nextProvider, withTranslation } from "react-i18next";
import { fetchGroup, resetGroup } from "../../../store/group/actions";
import { createI18N } from "../../../helpers/i18n";
import { setDocumentTitle } from "../../../helpers/utils";
import { withRouter } from "react-router";
@ -19,7 +17,6 @@ const i18n = createI18N({
localesPath: "pages/GroupAction",
});
const { changeLanguage } = utils;
const { isAdmin } = store.auth.selectors;
class GroupAction extends React.Component {
componentDidMount() {
@ -122,14 +119,9 @@ function mapStateToProps(state) {
};
}
export default connect(mapStateToProps, {
//fetchGroup,
//resetGroup,
})(
inject(({ store, peopleStore }) => ({
isAdmin: store.isAdmin,
fetchGroup: peopleStore.selectedGroupStore.setTargetedGroup,
group: peopleStore.selectedGroupStore.targetedGroup,
resetGroup: peopleStore.selectedGroupStore.resetGroup,
}))(observer(GroupActionContainer))
);
export default inject(({ auth, peopleStore }) => ({
isAdmin: auth.isAdmin,
fetchGroup: peopleStore.selectedGroupStore.setTargetedGroup,
group: peopleStore.selectedGroupStore.targetedGroup,
resetGroup: peopleStore.selectedGroupStore.resetGroup,
}))(observer(GroupActionContainer));

View File

@ -14,17 +14,6 @@ import {
Grid,
} from "asc-web-components";
import UserContent from "./userContent";
import {
selectUser,
deselectUser,
setSelection,
updateUserStatus,
resetFilter,
fetchPeople,
selectGroup,
} from "../../../../../store/people/actions";
import { getPeopleList } from "../../../../../store/people/selectors";
import equal from "fast-deep-equal/react";
import { store, api, constants, toastr, Loaders } from "asc-web-common";
import {
@ -43,16 +32,10 @@ const i18n = createI18N({
});
const { Consumer } = utils.context;
const { isArrayEqual } = utils.array;
const {
//getSettings,
getIsLoadedSection,
isAdmin,
getCurrentUserId,
} = store.auth.selectors;
const { getIsLoadedSection } = store.auth.selectors;
const { setIsLoadedSection } = store.auth.actions;
const { resendUserInvites } = api.people;
const { EmployeeStatus } = constants;
const { settingsStore } = store;
const isRefetchPeople = true;
@ -541,35 +524,17 @@ class SectionBodyContent extends React.PureComponent {
}
const mapStateToProps = (state) => {
const { isLoaded } = state.auth;
const { filter, isLoading } = state.people;
return {
// isLoaded,
isLoadedSection: getIsLoadedSection(state),
//filter,
isLoading,
//peopleList: getPeopleList(state),
//settings: getSettings(state),
// isAdmin: isAdmin(state),
// currentUserId: getCurrentUserId(state),
};
};
export default connect(mapStateToProps, {
// selectUser,
// deselectUser,
// setSelection,
// updateUserStatus,
// resetFilter,
//fetchPeople,
// selectGroup,
setIsLoadedSection,
})(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
isLoaded: store.isLoaded,
isAdmin: store.isAdmin,
currentUserId: store.userStore.user.id,
export default connect(mapStateToProps, { setIsLoadedSection })(
inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
isLoaded: auth.isLoaded,
isAdmin: auth.isAdmin,
currentUserId: auth.userStore.user.id,
fetchPeople: peopleStore.usersStore.getUsersList,
peopleList: peopleStore.usersStore.composePeopleList(),
filter: peopleStore.filterStore.filter,
@ -578,5 +543,6 @@ export default connect(mapStateToProps, {
deselectUser: peopleStore.selectionStore.deselectUser,
selectGroup: peopleStore.selectedGroupStore.selectGroup,
updateUserStatus: peopleStore.usersStore.updateUserStatus,
isLoading: peopleStore.isLoading,
}))(observer(withRouter(withTranslation()(SectionBodyContent))))
);

View File

@ -8,12 +8,8 @@ import {
Text,
Box,
} from "asc-web-components";
//import { connect } from "react-redux";
//import { store } from "asc-web-common";
import { inject, observer } from "mobx-react";
//const { settingsStore } = store;
const getFormattedGroups = (user, selectGroup) => {
let temp = [];
const groups = user.groups;
@ -170,6 +166,6 @@ const UserContent = ({
);
};
export default inject(({ store }) => ({
settings: store.settingsStore,
export default inject(({ auth }) => ({
settings: auth.settingsStore,
}))(observer(withRouter(UserContent)));

View File

@ -1,25 +1,12 @@
import React from "react";
import { connect } from "react-redux";
import { fetchPeople } from "../../../../../store/people/actions";
import find from "lodash/find";
import result from "lodash/result";
import { withTranslation } from "react-i18next";
import { withRouter } from "react-router";
//import { getFilterByLocation } from "../../../../../helpers/converters";
import { store, FilterInput, Loaders, utils } from "asc-web-common";
import { FilterInput, Loaders, utils } from "asc-web-common";
import { isMobileOnly } from "react-device-detect";
import { getFilter, getGroups } from "../../../../../store/people/selectors";
import { inject, observer } from "mobx-react";
const {
isAdmin,
getCurrentUser,
getLanguage,
//getSettings,
getIsLoaded,
} = store.auth.selectors;
const { settingsStore } = store;
const { withLayoutSize } = utils;
const getEmployeeStatus = (filterValues) => {
@ -264,13 +251,13 @@ class SectionFilterContent extends React.Component {
}
}
export default inject(({ store, peopleStore }) => {
export default inject(({ auth, peopleStore }) => {
return {
settings: store.settingsStore,
isLoaded: store.isLoaded,
isAdmin: store.isAdmin,
language: store.language,
user: store.userStore.user,
settings: auth.settingsStore,
isLoaded: auth.isLoaded,
isAdmin: auth.isAdmin,
language: auth.language,
user: auth.userStore.user,
groups: peopleStore.groupsStore.groups,
fetchPeople: peopleStore.usersStore.getUsersList,
filter: peopleStore.filterStore.filter,

View File

@ -7,10 +7,9 @@ import {
ContextMenuButton,
utils,
} from "asc-web-components";
import { Headline, toastr, Loaders, store, constants } from "asc-web-common";
import { Headline, toastr, Loaders, constants } from "asc-web-common";
import { connect } from "react-redux";
import {
getSelectedGroup,
hasAnybodySelected,
hasUsersToMakeEmployees,
hasUsersToMakeGuests,
@ -20,13 +19,6 @@ import {
hasUsersToRemove,
} from "../../../../../store/people/selectors";
import { withTranslation } from "react-i18next";
import {
updateUserStatus,
fetchPeople,
removeUser,
//setSelected,
} from "../../../../../store/people/actions";
import { deleteGroup } from "../../../../../store/group/actions";
import {
InviteDialog,
DeleteUsersDialog,
@ -39,8 +31,6 @@ import { inject, observer } from "mobx-react";
const { tablet, desktop } = utils.device;
const { Consumer } = utils.context;
const { isAdmin } = store.auth.selectors;
const { settingsStore } = store;
const { EmployeeType, EmployeeStatus } = constants;
const StyledContainer = styled.div`
@ -111,9 +101,9 @@ const SectionHeaderContent = (props) => {
isHeaderVisible,
isHeaderIndeterminate,
isHeaderChecked,
onCheck,
onSelect,
onClose,
//onCheck,
//onSelect,
clearSelection,
group,
isAdmin,
t,
@ -130,6 +120,8 @@ const SectionHeaderContent = (props) => {
hasUsersToInvite,
hasUsersToRemove,
isLoaded,
selectAll,
selectByStatus,
} = props;
const {
@ -140,7 +132,13 @@ const SectionHeaderContent = (props) => {
} = customNames;
//console.log("SectionHeaderContent render");
console.log(isHeaderVisible, isHeaderIndeterminate, isHeaderChecked);
const onCheck = () => {
return isHeaderChecked ? clearSelection() : selectAll();
};
const onSelect = useCallback((status) => selectByStatus(status), [
selectByStatus,
]);
const toggleEmployeeDialog = useCallback(
() => setEmployeeDialogVisible(!employeeDialogVisible),
@ -183,7 +181,7 @@ const SectionHeaderContent = (props) => {
const onSelectorSelect = useCallback(
(item) => {
console.log("onSelectorSelect", item);
onSelect && onSelect(item.key);
onSelect && onSelect(item.props.statusId);
},
[onSelect]
);
@ -197,13 +195,24 @@ const SectionHeaderContent = (props) => {
isSelect: true,
fontWeight: "bold",
children: [
<DropDownItem key="active" label={t("LblActive")} data-index={0} />,
<DropDownItem
key="active"
label={t("LblActive")}
data-index={0}
statusId={1}
/>,
<DropDownItem
key="disabled"
label={t("LblTerminated")}
data-index={1}
statusId={2}
/>,
<DropDownItem
key="invited"
label={t("LblInvited")}
data-index={2}
statusId={0}
/>,
<DropDownItem key="invited" label={t("LblInvited")} data-index={2} />,
],
onSelect: onSelectorSelect,
},
@ -414,7 +423,7 @@ const SectionHeaderContent = (props) => {
visible={isHeaderVisible}
moreLabel={t("More")}
closeTitle={t("CloseButton")}
onClose={onClose}
onClose={clearSelection}
selected={menuItems[0].label}
sectionWidth={context.sectionWidth}
/>
@ -486,39 +495,38 @@ const SectionHeaderContent = (props) => {
};
const mapStateToProps = (state) => {
// const { isLoaded /* settings */ } = state.auth;
// const { groups, selection, selectedGroup } = state.people;
//const { homepage, customNames } = settings;
return {
//group: getSelectedGroup(groups, selectedGroup),
// isAdmin: isAdmin(state),
//homepage,
//customNames,
//selection,
// isLoaded,
hasAnybodySelected: hasAnybodySelected(state),
hasUsersToMakeEmployees: hasUsersToMakeEmployees(state),
hasUsersToMakeGuests: hasUsersToMakeGuests(state),
hasUsersToActivate: hasUsersToActivate(state),
hasUsersToDisable: hasUsersToDisable(state),
hasUsersToInvite: hasUsersToInvite(state),
hasUsersToRemove: hasUsersToRemove(state),
// hasAnybodySelected: hasAnybodySelected(state),
// hasUsersToMakeEmployees: hasUsersToMakeEmployees(state),
// hasUsersToMakeGuests: hasUsersToMakeGuests(state),
// hasUsersToActivate: hasUsersToActivate(state),
// hasUsersToDisable: hasUsersToDisable(state),
// hasUsersToInvite: hasUsersToInvite(state),
// hasUsersToRemove: hasUsersToRemove(state),
};
};
export default connect(mapStateToProps)(
inject(({ store, peopleStore }) => ({
customNames: store.settingsStore.customNames,
homepage: store.settingsStore.homepage,
isLoaded: store.isLoaded,
isAdmin: store.isAdmin,
inject(({ auth, peopleStore }) => ({
customNames: auth.settingsStore.customNames,
homepage: auth.settingsStore.homepage,
isLoaded: auth.isLoaded,
isAdmin: auth.isAdmin,
fetchPeople: peopleStore.usersStore.getUsersList,
selection: peopleStore.selectionStore.selection,
selectByStatus: peopleStore.selectionStore.selectByStatus,
isHeaderVisible: peopleStore.headerMenuStore.isHeaderVisible,
isHeaderIndeterminate: peopleStore.headerMenuStore.isHeaderIndeterminate,
isHeaderChecked: peopleStore.headerMenuStore.isHeaderChecked,
onClose: peopleStore.selectionStore.clearSelection,
clearSelection: peopleStore.selectionStore.clearSelection,
selectAll: peopleStore.selectionStore.selectAll,
hasAnybodySelected: peopleStore.selectionStore.hasAnybodySelected,
hasUsersToMakeEmployees: peopleStore.selectionStore.hasUsersToMakeEmployees,
hasUsersToMakeGuests: peopleStore.selectionStore.hasUsersToMakeGuests,
hasUsersToActivate: peopleStore.selectionStore.hasUsersToActivate,
hasUsersToDisable: peopleStore.selectionStore.hasUsersToDisable,
hasUsersToInvite: peopleStore.selectionStore.hasUsersToInvite,
hasUsersToRemove: peopleStore.selectionStore.hasUsersToRemove,
deleteGroup: peopleStore.groupsStore.deleteGroup,
removeUser: peopleStore.usersStore.removeUser,
updateUserStatus: peopleStore.usersStore.updateUserStatus,

View File

@ -1,13 +1,9 @@
import React, { useCallback, useMemo } from "react";
import { connect } from "react-redux";
import { isMobile } from "react-device-detect";
import { fetchPeople } from "../../../../../store/people/actions";
import { Paging } from "asc-web-components";
import { useTranslation } from "react-i18next";
import { getFilter } from "../../../../../store/people/selectors";
import { store, Loaders } from "asc-web-common";
import { Loaders } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { getIsLoaded } = store.auth.selectors;
const SectionPagingContent = ({
fetchPeople,
@ -159,10 +155,8 @@ function mapStateToProps(state) {
};
}
export default connect(mapStateToProps)(
inject(({ store, peopleStore }) => ({
isLoaded: store.isLoaded,
fetchPeople: peopleStore.usersStore.getUsersList,
filter: peopleStore.filterStore.filter,
}))(observer(SectionPagingContent))
);
export default inject(({ auth, peopleStore }) => ({
isLoaded: auth.isLoaded,
fetchPeople: peopleStore.usersStore.getUsersList,
filter: peopleStore.filterStore.filter,
}))(observer(SectionPagingContent));

View File

@ -1,9 +1,8 @@
import React, { useEffect } from "react";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { withRouter } from "react-router";
//import { RequestLoader } from "asc-web-components";
import { PageLayout, utils, store } from "asc-web-common";
import { PageLayout, utils } from "asc-web-common";
import { withTranslation, I18nextProvider } from "react-i18next";
import {
ArticleHeaderContent,
@ -16,17 +15,14 @@ import {
SectionFilterContent,
SectionPagingContent,
} from "./Section";
import { setSelected, setIsLoading } from "../../../store/people/actions";
import { createI18N } from "../../../helpers/i18n";
import { isMobile } from "react-device-detect";
import { getIsLoading } from "../../../store/people/selectors";
import { inject, observer } from "mobx-react";
const i18n = createI18N({
page: "Home",
localesPath: "pages/Home",
});
const { changeLanguage } = utils;
const { isAdmin, getIsLoaded, getOrganizationName } = store.auth.selectors;
class PureHome extends React.Component {
// constructor(props) {
@ -76,15 +72,15 @@ class PureHome extends React.Component {
}
}
onSectionHeaderContentCheck = (checked) => {
console.log("onSectionHeaderContentCheck");
this.props.setSelected(checked ? "all" : "none");
};
// onSectionHeaderContentCheck = (checked) => {
// console.log("onSectionHeaderContentCheck");
// this.props.setSelected(checked ? "all" : "none");
// };
onSectionHeaderContentSelect = (selected) => {
console.log("onSectionHeaderContentSelect");
this.props.setSelected(selected);
};
// onSectionHeaderContentSelect = (selected) => {
// console.log("onSectionHeaderContentSelect");
// this.props.setSelected(selected);
// };
// onClose = () => {
// const { clearSelection } = this.props;
@ -131,8 +127,8 @@ class PureHome extends React.Component {
// isHeaderVisible={isHeaderVisible}
// isHeaderIndeterminate={isHeaderIndeterminate}
// isHeaderChecked={isHeaderChecked}
onCheck={this.onSectionHeaderContentCheck}
onSelect={this.onSectionHeaderContentSelect}
// onCheck={this.onSectionHeaderContentCheck}
// onSelect={this.onSectionHeaderContentSelect}
// onClose={this.onClose}
onLoading={this.onLoading}
/>
@ -195,19 +191,17 @@ function mapStateToProps(state) {
};
}
export default connect(mapStateToProps)(
inject(({ store, peopleStore }) => ({
isLoaded: store.isLoaded,
isAdmin: store.isAdmin,
organizationName: store.settingsStore.organizationName,
users: peopleStore.usersStore.users,
groups: peopleStore.groupsStore.groups,
selectedGroup: peopleStore.selectedGroupStore.selectedGroup,
clearSelection: peopleStore.selectionStore.clearSelection,
isLoading: peopleStore.isLoading,
setIsLoading: peopleStore.setIsLoading,
selection: peopleStore.selectionStore.selection,
setSelected: peopleStore.selectionStore.setSelected,
selected: peopleStore.selectionStore.selected,
}))(observer(withRouter(Home)))
);
export default inject(({ auth, peopleStore }) => ({
isLoaded: auth.isLoaded,
isAdmin: auth.isAdmin,
organizationName: auth.settingsStore.organizationName,
users: peopleStore.usersStore.users,
groups: peopleStore.groupsStore.groups,
selectedGroup: peopleStore.selectedGroupStore.selectedGroup,
clearSelection: peopleStore.selectionStore.clearSelection,
isLoading: peopleStore.isLoading,
setIsLoading: peopleStore.setIsLoading,
selection: peopleStore.selectionStore.selection,
setSelected: peopleStore.selectionStore.setSelected,
selected: peopleStore.selectionStore.selected,
}))(observer(withRouter(Home)));

View File

@ -9,17 +9,9 @@ import {
} from "asc-web-components";
import styled from "styled-components";
import { api, toastr, Loaders, store } from "asc-web-common";
import { connect } from "react-redux";
import { updateProfileCulture } from "../../../../../../store/profile/actions";
import { getFilter } from "../../../../../../store/people/selectors";
import {
fetchPeople,
setIsLoading,
} from "../../../../../../store/people/actions";
import { inject, observer } from "mobx-react";
const { resendUserInvites } = api.people;
const { settingsStore } = store;
const InfoContainer = styled.div`
margin-bottom: 24px;
@ -344,22 +336,17 @@ const mapDispatchToProps = (dispatch) => {
};
};
export default connect(
null,
mapDispatchToProps
)(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
groupCaption: store.settingsStore.customNames.groupCaption,
regDateCaption: store.settingsStore.customNames.regDateCaption,
userPostCaption: store.settingsStore.customNames.userPostCaption,
userCaption: store.settingsStore.customNames.userCaption,
guestCaption: store.settingsStore.customNames.guestCaption,
fetchPeople: peopleStore.usersStore.getUsersList,
filter: peopleStore.filterStore.filter,
setIsLoading: peopleStore.setIsLoading,
updateProfileCulture: peopleStore.targetUserStore.updateProfileCulture,
}))(observer(ProfileInfo))
);
export default inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
groupCaption: auth.settingsStore.customNames.groupCaption,
regDateCaption: auth.settingsStore.customNames.regDateCaption,
userPostCaption: auth.settingsStore.customNames.userPostCaption,
userCaption: auth.settingsStore.customNames.userCaption,
guestCaption: auth.settingsStore.customNames.guestCaption,
fetchPeople: peopleStore.usersStore.getUsersList,
filter: peopleStore.filterStore.filter,
setIsLoading: peopleStore.setIsLoading,
updateProfileCulture: peopleStore.targetUserStore.updateProfileCulture,
}))(observer(ProfileInfo));
//export default connect(mapStateToProps, mapDispatchToProps)(ProfileInfoWrapper);

View File

@ -13,7 +13,6 @@ import {
import ProfileInfo from "./ProfileInfo/ProfileInfo";
import React from "react";
import { connect } from "react-redux";
import { store } from "asc-web-common";
import styled from "styled-components";
@ -21,8 +20,7 @@ import { withRouter } from "react-router";
import { withTranslation } from "react-i18next";
import { inject, observer } from "mobx-react";
const { isAdmin, isMe } = store.auth.selectors;
const { settingsStore } = store;
const { isMe } = store.auth.selectors;
const ProfileWrapper = styled.div`
display: flex;
@ -196,14 +194,12 @@ const mapStateToProps = (state) => {
// return <SectionBodyContent settings={settingsStore.settings} {...props} />;
// });
export default connect(mapStateToProps)(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
isAdmin: store.isAdmin,
profile: peopleStore.targetUserStore.targetUser,
viewer: store.userStore.user,
}))(observer(withRouter(withTranslation()(SectionBodyContent))))
);
export default inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
isAdmin: auth.isAdmin,
profile: peopleStore.targetUserStore.targetUser,
viewer: auth.userStore.user,
}))(observer(withRouter(withTranslation()(SectionBodyContent))));
// export default connect(mapStateToProps)(
// withRouter(withTranslation()(SectionBodyContentWrapper))

View File

@ -1,5 +1,4 @@
import React from "react";
import { connect } from "react-redux";
import {
IconButton,
ContextMenuButton,
@ -12,15 +11,6 @@ import {
toEmployeeWrapper,
} from "../../../../../store/people/selectors";
import { withTranslation, Trans } from "react-i18next";
import {
updateUserStatus,
// setFilter,
} from "../../../../../store/people/actions";
import { updateProfile } from "../../../../../store/profile/actions";
import {
fetchProfile,
// getUserPhoto,
} from "../../../../../store/profile/actions";
import styled from "styled-components";
import { store, api, constants } from "asc-web-common";
import {
@ -37,7 +27,6 @@ const i18n = createI18N({
localesPath: "pages/Profile",
});
const { isAdmin, isMe } = store.auth.selectors;
const { settingsStore } = store;
const {
resendUserInvites,
createThumbnailsAvatar,
@ -520,26 +509,19 @@ const mapStateToProps = (state) => {
// return <SectionHeaderContent settings={settingsStore.settings} {...props} />;
// });
export default connect(mapStateToProps, {
// updateUserStatus,
// fetchProfile,
// updateProfile,
//setFilter,
})(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
isAdmin: store.isAdmin,
viewer: store.userStore.user,
filter: peopleStore.filterStore.filter,
setFilter: peopleStore.filterStore.setFilterParams,
updateUserStatus: peopleStore.usersStore.updateUserStatus,
resetProfile: peopleStore.targetUserStore.resetTargetUser,
fetchProfile: peopleStore.targetUserStore.getTargetUser,
profile: peopleStore.targetUserStore.targetUser,
updateProfile: peopleStore.targetUserStore.updateProfile,
getUserPhoto: peopleStore.targetUserStore.getUserPhoto,
}))(observer(withRouter(withTranslation()(SectionHeaderContent))))
);
export default inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
isAdmin: auth.isAdmin,
viewer: auth.userStore.user,
filter: peopleStore.filterStore.filter,
setFilter: peopleStore.filterStore.setFilterParams,
updateUserStatus: peopleStore.usersStore.updateUserStatus,
resetProfile: peopleStore.targetUserStore.resetTargetUser,
fetchProfile: peopleStore.targetUserStore.getTargetUser,
profile: peopleStore.targetUserStore.targetUser,
updateProfile: peopleStore.targetUserStore.updateProfile,
getUserPhoto: peopleStore.targetUserStore.getUserPhoto,
}))(observer(withRouter(withTranslation()(SectionHeaderContent))));
// export default connect(mapStateToProps, {
// updateUserStatus,

View File

@ -118,25 +118,17 @@ Profile.propTypes = {
};
function mapStateToProps(state) {
const { isLoaded } = state.auth;
//const { targetUser } = state.profile;
return {
// profile: targetUser,
// isLoaded,
isVisitor: isVisitor(state),
// isAdmin: isAdmin(state),
//language: getLanguage(state),
//isVisitor: isVisitor(state),
};
}
export default connect(mapStateToProps, {
// fetchProfile,
// resetProfile,
})(
inject(({ store, peopleStore }) => ({
isLoaded: store.isLoaded,
isAdmin: store.isAdmin,
language: store.language,
export default connect(mapStateToProps)(
inject(({ auth, peopleStore }) => ({
isVisitor: auth.userStore.user.isVisitor,
isLoaded: auth.isLoaded,
isAdmin: auth.isAdmin,
language: auth.language,
resetProfile: peopleStore.targetUserStore.resetTargetUser,
fetchProfile: peopleStore.targetUserStore.getTargetUser,
profile: peopleStore.targetUserStore.targetUser,

View File

@ -5,14 +5,8 @@ import styled from "styled-components";
import { withTranslation } from "react-i18next";
import { AvatarEditor, utils, Loader } from "asc-web-components";
import { api, toastr } from "asc-web-common";
import {
fetchProfile,
updateProfile,
// getUserPhoto,
setAvatarMax,
} from "../../../../../store/profile/actions";
import { toEmployeeWrapper } from "../../../../../store/people/selectors";
import { toggleAvatarEditor } from "../../../../../store/people/actions";
import { setDocumentTitle } from "../../../../../helpers/utils";
import { isMobile } from "react-device-detect";
import { inject, observer } from "mobx-react";
@ -317,29 +311,17 @@ class AvatarEditorPage extends React.PureComponent {
function mapStateToProps(state) {
return {
profile: state.profile.targetUser,
avatarMax: state.profile.avatarMax,
//settings: state.auth.settings,
// profile: state.profile.targetUser,
// avatarMax: state.profile.avatarMax,
};
}
// export default connect(mapStateToProps, {
// fetchProfile,
// updateProfile,
// toggleAvatarEditor,
// setAvatarMax,
// })(withTranslation()(withRouter(AvatarEditorPage)));
export default connect(mapStateToProps, {
// fetchProfile,
// updateProfile,
//toggleAvatarEditor,
// setAvatarMax,
})(
export default connect(mapStateToProps)(
inject(({ peopleStore }) => ({
toggleAvatarEditor: peopleStore.avatarEditorStore.toggleAvatarEditor,
fetchProfile: peopleStore.targetUserStore.getTargetUser,
profile: peopleStore.targetUserStore.targetUser,
avatarMax: peopleStore.avatarEditorStore.avatarMax,
setAvatarMax: peopleStore.avatarEditorStore.setAvatarMax,
updateProfile: peopleStore.targetUserStore.updateProfile,
getUserPhoto: peopleStore.targetUserStore.getUserPhoto,

View File

@ -293,9 +293,9 @@ class CreateAvatarEditorPage extends React.PureComponent {
function mapStateToProps(state) {
return {
// profile: state.profile.targetUser,
avatarMax: state.profile.avatarMax,
createdAvatar: state.profile.createdAvatar,
croppedAvatar: state.profile.croppedAvatar,
// avatarMax: state.profile.avatarMax,
// createdAvatar: state.profile.createdAvatar,
// croppedAvatar: state.profile.croppedAvatar,
//settings: state.auth.settings,
//editingForm: state.people.editingForm,
};
@ -325,6 +325,9 @@ export default connect(mapStateToProps, {
updateProfile: peopleStore.targetUserStore.updateProfile,
updateCreatedAvatar: peopleStore.targetUserStore.updateCreatedAvatar,
getUserPhoto: peopleStore.targetUserStore.getUserPhoto,
createdAvatar: peopleStore.avatarEditorStore.createdAvatar,
avatarMax: peopleStore.avatarEditorStore.avatarMax,
croppedAvatar: peopleStore.avatarEditorStore.croppedAvatar,
}))(observer(withRouter(withTranslation()(CreateAvatarEditorPage))))
);

View File

@ -657,14 +657,14 @@ class CreateUserForm extends React.Component {
const mapStateToProps = (state) => {
//const { settings } = state.auth;
// const { groups, filter, editingForm } = state.people;
const { createdAvatar, croppedAvatar } = state.profile;
// const { createdAvatar, croppedAvatar } = state.profile;
return {
//settings,
//groups,
//filter,
//editingForm,
createdAvatar,
croppedAvatar,
// createdAvatar,
// croppedAvatar,
};
};
@ -684,8 +684,8 @@ export default connect(mapStateToProps, {
// setCroppedAvatar,
// resetProfile,
})(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
editingForm: peopleStore.editingFormStore,
groups: peopleStore.groupsStore.groups,
setIsVisibleDataLossDialog:
@ -696,7 +696,9 @@ export default connect(mapStateToProps, {
toggleAvatarEditor: peopleStore.avatarEditorStore.toggleAvatarEditor,
resetProfile: peopleStore.targetUserStore.resetTargetUser,
createProfile: peopleStore.usersStore.createUser,
createdAvatar: peopleStore.avatarEditorStore.createdAvatar,
setCreatedAvatar: peopleStore.avatarEditorStore.setCreatedAvatar,
croppedAvatar: peopleStore.avatarEditorStore.croppedAvatar,
setCroppedAvatar: peopleStore.avatarEditorStore.setCroppedAvatar,
updateProfileInUsers: peopleStore.usersStore.updateProfileInUsers,
updateCreatedAvatar: peopleStore.targetUserStore.updateCreatedAvatar,

View File

@ -927,9 +927,9 @@ const mapStateToProps = (state) => {
};
export default connect(mapStateToProps)(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
isAdmin: store.isAdmin,
inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
isAdmin: auth.isAdmin,
groups: peopleStore.groupsStore.groups,
editingForm: peopleStore.editingFormStore,
setIsVisibleDataLossDialog:

View File

@ -129,8 +129,8 @@ export default connect(mapStateToProps, {
// toggleAvatarEditor,
// resetProfile,
})(
inject(({ store, peopleStore }) => ({
settings: store.settingsStore,
inject(({ auth, peopleStore }) => ({
settings: auth.settingsStore,
editingForm: peopleStore.editingFormStore,
setIsVisibleDataLossDialog:
peopleStore.editingFormStore.setIsVisibleDataLossDialog,

View File

@ -142,7 +142,7 @@ const ProfileActionContainer = (props) => {
function mapStateToProps(state) {
return {
isVisitor: state.auth.user.isVisitor,
// isVisitor: state.auth.user.isVisitor,
// profile: state.profile.targetUser,
// isAdmin: isAdmin(state),
//isEdit: state.people.editingForm.isEdit,
@ -154,8 +154,9 @@ export default connect(mapStateToProps, {
/*fetchProfile*/
/*setIsEditingForm*/
})(
inject(({ store, peopleStore }) => ({
isAdmin: store.isAdmin,
inject(({ auth, peopleStore }) => ({
isAdmin: auth.isAdmin,
isVisitor: auth.userStore.user.isVisitor,
isEdit: peopleStore.editingFormStore.isEdit,
setIsEditingForm: peopleStore.editingFormStore.setIsEditingForm,
fetchProfile: peopleStore.targetUserStore.getTargetUser,

View File

@ -69,8 +69,8 @@ function mapStateToProps(state) {
// });
export default connect(mapStateToProps)(
inject(({ store }) => ({
settings: store.settingsStore,
inject(({ auth }) => ({
settings: auth.settingsStore,
}))(observer(withRouter(SectionHeaderContent)))
);

View File

@ -96,6 +96,6 @@ Reassign.propTypes = {
// export default connect(mapStateToProps, {})(Reassign);
export default inject(({ store }) => ({
isAdmin: store.isAdmin,
export default inject(({ auth }) => ({
isAdmin: auth.isAdmin,
}))(observer(Reassign));

View File

@ -13,7 +13,7 @@ const { authStore } = commonStore;
ReactDOM.render(
<Provider store={store}>
<MobxProvider store={authStore} peopleStore={peopleStore}>
<MobxProvider auth={authStore} peopleStore={peopleStore}>
<ErrorBoundary>
<App />
</ErrorBoundary>

View File

@ -1,4 +1,6 @@
import { action, makeObservable, observable } from "mobx";
import { action, computed, makeObservable, observable } from "mobx";
import { store } from "asc-web-common";
import GroupsStore from "./GroupsStore";
import UsersStore from "./UsersStore";
import { getFilterByLocation } from "../helpers/converters";
@ -12,6 +14,8 @@ import HeaderMenuStore from "./HeaderMenuStore";
import AvatarEditorStore from "./AvatarEditorStore";
import InviteLinksStore from "./InviteLinksStore";
const { authStore } = store;
class PeopleStore {
groupsStore = null;
usersStore = null;
@ -51,9 +55,17 @@ class PeopleStore {
setAvatarEditorStore: action,
setInviteLinksStore: action,
init: action,
isPeoplesAdmin: computed,
});
}
get isPeoplesAdmin() {
return (
authStore.userStore.user &&
authStore.userStore.user.listAdminModules.includes("people")
);
}
init = async () => {
const re = new RegExp(`${config.homepage}((/?)$|/filter)`, "gm");
const match = window.location.pathname.match(re);

View File

@ -1,7 +1,12 @@
import { action, makeObservable, observable } from "mobx";
import { constants, store } from "asc-web-common";
const { EmployeeStatus, EmployeeActivationStatus } = constants;
const { authStore } = store;
class SelectionStore {
selection = [];
selected = "none";
constructor(peopleStore) {
this.peopleStore = peopleStore;
@ -15,19 +20,100 @@ class SelectionStore {
selectUser = (user) => {
const u = user;
this.selection.push(u);
console.log(this.selection);
return this.selection.push(u);
};
deselectUser = (user) => {
const newData = this.selection.filter((el) => el.id !== user.id);
this.selection = newData;
console.log(this.selection);
return (this.selection = newData);
};
selectAll = () => {
const list = this.peopleStore.usersStore.composePeopleList();
this.selection = list;
};
clearSelection = () => {
this.selection = [];
return (this.selection = []);
};
selectByStatus = (status) => {
const list = this.peopleStore.usersStore
.composePeopleList()
.filter((u) => u.status === status);
return (this.selection = list);
};
setSelected = (selected) => {
return (this.selected = selected);
};
get hasAnybodySelected() {
return this.selection.length > 0;
}
get hasUsersToMakeEmployees() {
const users = this.selection.filter((x) => {
return (
!x.isAdmin &&
!x.isOwner &&
x.isVisitor &&
x.status !== EmployeeStatus.Disabled &&
x.id !== authStore.userStore.user.id
);
});
return !!users.length;
}
get hasUsersToMakeGuests() {
const users = this.selection.filter((x) => {
return (
!x.isAdmin &&
!x.isOwner &&
!x.isVisitor &&
x.status !== EmployeeStatus.Disabled &&
x.id !== authStore.userStore.user.id
);
});
return !!users.length;
}
get hasUsersToActivate() {
const users = this.selection.filter(
(x) =>
!x.isOwner &&
x.status !== EmployeeStatus.Active &&
x.id !== authStore.userStore.user.id
);
return !!users.length;
}
get hasUsersToDisable() {
const users = this.selection.filter(
(x) =>
!x.isOwner &&
x.status !== EmployeeStatus.Disabled &&
x.id !== authStore.userStore.user.id
);
return !!users.length;
}
get hasUsersToInvite() {
const users = this.selection.filter(
(x) =>
x.activationStatus === EmployeeActivationStatus.Pending &&
x.status === EmployeeStatus.Active
);
return !!users.length;
}
get hasUsersToRemove() {
const users = this.selection.filter(
(x) => x.status === EmployeeStatus.Disabled
);
return !!users.length;
}
}
export default SelectionStore;

View File

@ -1,19 +1,32 @@
import { api, store } from "asc-web-common";
import { action, makeObservable, observable } from "mobx";
import { action, computed, makeObservable, observable } from "mobx";
const { authStore } = store;
class TargetUserStore {
targetUser = null;
constructor() {
constructor(peopleStore) {
this.peopleStore = peopleStore;
makeObservable(this, {
targetUser: observable,
getTargetUser: action,
resetTargetUser: action,
getDisableProfileType: computed,
});
}
get getDisableProfileType() {
const res =
authStore.userStore.user.id === this.targetUser.id ||
!authStore.isAdmin ||
this.peopleStore.isPeoplesAdmin
? false
: true;
return res;
}
getTargetUser = async (userName) => {
if (authStore.userStore.user.userName === userName) {
return (this.targetUser = authStore.userStore.user);
@ -23,9 +36,46 @@ class TargetUserStore {
}
};
setTargetUser = (user) => {
return (this.targetUser = user);
};
resetTargetUser = () => {
this.targetUser = null;
};
updateProfile = async (profile) => {
const member = this.peopleStore.usersStore.employeeWrapperToMemberModel(
profile
);
let result;
const res = await api.people.updateUser(member);
result = res;
this.setTargetUser(res);
return Promise.resolve(result);
};
updateCreatedAvatar = (avatar) => {
const { big, max, medium, small } = avatar;
this.targetUser.avatarMax = max;
this.targetUser.avatarMedium = medium;
this.targetUser.avatar = big;
this.targetUser.avatarSmall = small;
};
updateProfileCulture = async (id, culture) => {
const res = await api.people.updateUserCulture(id, culture);
authStore.userStore.setUser(res);
this.setTargetUser(res);
caches.delete("api-cache");
await authStore.settingsStore.init();
};
getUserPhoto = async (id) => {
const res = await api.people.getUserPhoto(id);
return res;
};
}
export default TargetUserStore;

View File

@ -1,4 +1,4 @@
import { api, /*history,*/ constants } from "asc-web-common";
// import { api, /*history,*/ constants } from "asc-web-common";
// import config from "../../../package.json";
// import {
// EMPLOYEE_STATUS,
@ -11,26 +11,26 @@ import { api, /*history,*/ constants } from "asc-web-common";
// PAGE,
// PAGE_COUNT,
// } from "../../helpers/constants";
import { getUserByUserName } from "../people/selectors";
// import { getUserByUserName } from "../people/selectors";
const { EmployeeStatus } = constants;
const { Filter } = api;
// const { EmployeeStatus } = constants;
// const { Filter } = api;
export const SET_GROUPS = "SET_GROUPS";
export const SET_USERS = "SET_USERS";
export const SET_USER = "SET_USER";
export const SET_SELECTION = "SET_SELECTION";
export const SELECT_USER = "SELECT_USER";
export const DESELECT_USER = "DESELECT_USER";
export const SET_SELECTED = "SET_SELECTED";
export const SET_FILTER = "SET_FILTER";
export const SELECT_GROUP = "SELECT_GROUP";
export const SET_SELECTOR_USERS = "SET_SELECTOR_USERS";
export const SET_IS_VISIBLE_DATA_LOSS_DIALOG =
"SET_IS_VISIBLE_DATA_LOSS_DIALOG";
export const SET_IS_EDITING_FORM = "SET_IS_EDITING_FORM";
export const SET_IS_LOADING = "SET_IS_LOADING";
export const TOGGLE_AVATAR_EDITOR = "TOGGLE_AVATAR_EDITOR";
// export const SET_GROUPS = "SET_GROUPS";
// export const SET_USERS = "SET_USERS";
// export const SET_USER = "SET_USER";
// export const SET_SELECTION = "SET_SELECTION";
// export const SELECT_USER = "SELECT_USER";
// export const DESELECT_USER = "DESELECT_USER";
// export const SET_SELECTED = "SET_SELECTED";
// export const SET_FILTER = "SET_FILTER";
// export const SELECT_GROUP = "SELECT_GROUP";
// export const SET_SELECTOR_USERS = "SET_SELECTOR_USERS";
// export const SET_IS_VISIBLE_DATA_LOSS_DIALOG =
// "SET_IS_VISIBLE_DATA_LOSS_DIALOG";
// export const SET_IS_EDITING_FORM = "SET_IS_EDITING_FORM";
// export const SET_IS_LOADING = "SET_IS_LOADING";
// export const TOGGLE_AVATAR_EDITOR = "TOGGLE_AVATAR_EDITOR";
// export function setIsLoading(isLoading) {
// return {
@ -67,12 +67,12 @@ export const TOGGLE_AVATAR_EDITOR = "TOGGLE_AVATAR_EDITOR";
// };
// }
export function setSelected(selected) {
return {
type: SET_SELECTED,
selected,
};
}
// export function setSelected(selected) {
// return {
// type: SET_SELECTED,
// selected,
// };
// }
// export function selectGroup(groupId) {
// return (dispatch, getState) => {

View File

@ -1,20 +1,20 @@
import {
SET_GROUPS,
SET_USERS,
SET_SELECTION,
SELECT_USER,
DESELECT_USER,
SET_SELECTED,
SET_FILTER,
SELECT_GROUP,
SET_USER,
SET_SELECTOR_USERS,
SET_IS_VISIBLE_DATA_LOSS_DIALOG,
SET_IS_EDITING_FORM,
SET_IS_LOADING,
TOGGLE_AVATAR_EDITOR,
} from "./actions";
import { isUserSelected, skipUser, getUsersBySelected } from "./selectors";
// import {
// SET_GROUPS,
// SET_USERS,
// SET_SELECTION,
// SELECT_USER,
// DESELECT_USER,
// SET_SELECTED,
// SET_FILTER,
// SELECT_GROUP,
// SET_USER,
// SET_SELECTOR_USERS,
// SET_IS_VISIBLE_DATA_LOSS_DIALOG,
// SET_IS_EDITING_FORM,
// SET_IS_LOADING,
// TOGGLE_AVATAR_EDITOR,
// } from "./actions";
// import { isUserSelected, skipUser, getUsersBySelected } from "./selectors";
import { api } from "asc-web-common";
const { Filter } = api;
@ -37,78 +37,78 @@ const initialState = {
};
const peopleReducer = (state = initialState, action) => {
switch (action.type) {
case SET_GROUPS:
return Object.assign({}, state, {
groups: action.groups,
});
case SET_USERS:
return Object.assign({}, state, {
users: action.users,
});
case SET_USER:
return Object.assign({}, state, {
users: state.users.map((user) =>
user.id === action.user.id ? action.user : user
),
});
case SET_SELECTION:
return Object.assign({}, state, {
selection: action.selection,
});
case SELECT_USER:
if (!isUserSelected(state.selection, action.user.id)) {
return Object.assign({}, state, {
selection: [...state.selection, action.user],
});
} else return state;
case DESELECT_USER:
if (isUserSelected(state.selection, action.user.id)) {
return Object.assign({}, state, {
selection: skipUser(state.selection, action.user.id),
});
} else return state;
case SET_SELECTED:
return Object.assign({}, state, {
selected: action.selected,
selection: getUsersBySelected(state.users, action.selected),
});
case SET_FILTER:
return Object.assign({}, state, {
filter: action.filter,
});
case SELECT_GROUP:
return Object.assign({}, state, {
selectedGroup: action.groupId,
});
case SET_SELECTOR_USERS:
return Object.assign({}, state, {
selector: Object.assign({}, state.selector, {
users: action.users,
}),
});
case SET_IS_VISIBLE_DATA_LOSS_DIALOG:
return Object.assign({}, state, {
editingForm: {
...state.editingForm,
isVisibleDataLossDialog: action.isVisible,
callback: action.callback,
},
});
case SET_IS_EDITING_FORM:
return Object.assign({}, state, {
editingForm: {
...state.editingForm,
isEdit: action.isEdit,
},
});
case TOGGLE_AVATAR_EDITOR:
return Object.assign({}, state, {
avatarEditorIsOpen: action.avatarEditorIsOpen,
});
case SET_IS_LOADING:
return Object.assign({}, state, {
isLoading: action.isLoading,
});
// case SET_GROUPS:
// return Object.assign({}, state, {
// groups: action.groups,
// });
// case SET_USERS:
// return Object.assign({}, state, {
// users: action.users,
// });
// case SET_USER:
// return Object.assign({}, state, {
// users: state.users.map((user) =>
// user.id === action.user.id ? action.user : user
// ),
// });
// case SET_SELECTION:
// return Object.assign({}, state, {
// selection: action.selection,
// });
// case SELECT_USER:
// if (!isUserSelected(state.selection, action.user.id)) {
// return Object.assign({}, state, {
// selection: [...state.selection, action.user],
// });
// } else return state;
// case DESELECT_USER:
// if (isUserSelected(state.selection, action.user.id)) {
// return Object.assign({}, state, {
// selection: skipUser(state.selection, action.user.id),
// });
// } else return state;
// case SET_SELECTED:
// return Object.assign({}, state, {
// selected: action.selected,
// selection: getUsersBySelected(state.users, action.selected),
// });
// case SET_FILTER:
// return Object.assign({}, state, {
// filter: action.filter,
// });
// case SELECT_GROUP:
// return Object.assign({}, state, {
// selectedGroup: action.groupId,
// });
// case SET_SELECTOR_USERS:
// return Object.assign({}, state, {
// selector: Object.assign({}, state.selector, {
// users: action.users,
// }),
// });
// case SET_IS_VISIBLE_DATA_LOSS_DIALOG:
// return Object.assign({}, state, {
// editingForm: {
// ...state.editingForm,
// isVisibleDataLossDialog: action.isVisible,
// callback: action.callback,
// },
// });
// case SET_IS_EDITING_FORM:
// return Object.assign({}, state, {
// editingForm: {
// ...state.editingForm,
// isEdit: action.isEdit,
// },
// });
// case TOGGLE_AVATAR_EDITOR:
// return Object.assign({}, state, {
// avatarEditorIsOpen: action.avatarEditorIsOpen,
// });
// case SET_IS_LOADING:
// return Object.assign({}, state, {
// isLoading: action.isLoading,
// });
default:
return state;
}

View File

@ -1,20 +1,20 @@
// import { updateUserList } from "../people/actions";
import { store, api } from "asc-web-common";
const { setCurrentUser } = store.auth.actions;
// import { store, api } from "asc-web-common";
// const { setCurrentUser } = store.auth.actions;
// const { isMe } = store.auth.selectors;
export const SET_PROFILE = "SET_PROFILE";
export const CLEAN_PROFILE = "CLEAN_PROFILE";
export const SET_AVATAR_MAX = "SET_AVATAR_MAX";
export const SET_CREATED_AVATAR = "SET_CREATED_AVATAR";
export const SET_CROPPED_AVATAR = "SET_CROPPED_AVATAR";
// export const SET_PROFILE = "SET_PROFILE";
// export const CLEAN_PROFILE = "CLEAN_PROFILE";
// export const SET_AVATAR_MAX = "SET_AVATAR_MAX";
// export const SET_CREATED_AVATAR = "SET_CREATED_AVATAR";
// export const SET_CROPPED_AVATAR = "SET_CROPPED_AVATAR";
export function setProfile(targetUser) {
return {
type: SET_PROFILE,
targetUser,
};
}
// export function setProfile(targetUser) {
// return {
// type: SET_PROFILE,
// targetUser,
// };
// }
// export function resetProfile() {
// return {
@ -22,15 +22,15 @@ export function setProfile(targetUser) {
// };
// }
export function employeeWrapperToMemberModel(profile) {
const comment = profile.notes;
const department = profile.groups
? profile.groups.map((group) => group.id)
: [];
const worksFrom = profile.workFrom;
// export function employeeWrapperToMemberModel(profile) {
// const comment = profile.notes;
// const department = profile.groups
// ? profile.groups.map((group) => group.id)
// : [];
// const worksFrom = profile.workFrom;
return { ...profile, comment, department, worksFrom };
}
// return { ...profile, comment, department, worksFrom };
// }
// export function fetchProfile(userName) {
// return (dispatch, getState) => {
@ -68,66 +68,67 @@ export function employeeWrapperToMemberModel(profile) {
// };
// }
export function updateProfile(profile) {
return (dispatch) => {
const member = employeeWrapperToMemberModel(profile);
let result;
// export function updateProfile(profile) {
// debugger;
// return (dispatch) => {
// const member = employeeWrapperToMemberModel(profile);
// let result;
return api.people
.updateUser(member)
.then((user) => {
result = user;
return Promise.resolve(dispatch(setProfile(user)));
})
.then(() => {
return Promise.resolve(result);
});
};
}
export function updateProfileCulture(id, culture) {
return (dispatch, getState) => {
return api.people
.updateUserCulture(id, culture)
.then((user) => {
dispatch(setCurrentUser(user));
return dispatch(setProfile(user));
})
.then(() => caches.delete("api-cache"))
.then(() => {
const { getCurrentCustomSchema, getModules } = store.auth.actions;
const state = getState();
const { nameSchemaId } = state.auth.settings;
// return api.people
// .updateUser(member)
// .then((user) => {
// result = user;
// return Promise.resolve(dispatch(setProfile(user)));
// })
// .then(() => {
// return Promise.resolve(result);
// });
// };
// }
// export function updateProfileCulture(id, culture) {
// return (dispatch, getState) => {
// return api.people
// .updateUserCulture(id, culture)
// .then((user) => {
// dispatch(setCurrentUser(user));
// return dispatch(setProfile(user));
// })
// .then(() => caches.delete("api-cache"))
// .then(() => {
// const { getCurrentCustomSchema, getModules } = store.auth.actions;
// const state = getState();
// const { nameSchemaId } = state.auth.settings;
if (!nameSchemaId) return getModules();
// if (!nameSchemaId) return getModules();
const requests = [
getModules(dispatch),
getCurrentCustomSchema(dispatch, nameSchemaId),
];
// const requests = [
// getModules(dispatch),
// getCurrentCustomSchema(dispatch, nameSchemaId),
// ];
return Promise.all(requests);
});
};
}
// return Promise.all(requests);
// });
// };
// }
export function getUserPhoto(id) {
return api.people.getUserPhoto(id);
}
// export function getUserPhoto(id) {
// return api.people.getUserPhoto(id);
// }
export function updateCreatedAvatar(avatar) {
return (dispatch, getState) => {
const { big, max, medium, small } = avatar;
const { profile } = getState();
const newProfile = {
...profile.targetUser,
avatarMax: max,
avatarMedium: medium,
avatar: big,
avatarSmall: small,
};
return dispatch(setProfile(newProfile));
};
}
// export function updateCreatedAvatar(avatar) {
// return (dispatch, getState) => {
// const { big, max, medium, small } = avatar;
// const { profile } = getState();
// const newProfile = {
// ...profile.targetUser,
// avatarMax: max,
// avatarMedium: medium,
// avatar: big,
// avatarSmall: small,
// };
// return dispatch(setProfile(newProfile));
// };
// }
// export function setAvatarMax(avatarMax) {
// return {

View File

@ -1,50 +1,50 @@
import {
SET_PROFILE,
CLEAN_PROFILE,
SET_AVATAR_MAX,
SET_CREATED_AVATAR,
SET_CROPPED_AVATAR,
} from "./actions";
// import {
// SET_PROFILE,
// CLEAN_PROFILE,
// SET_AVATAR_MAX,
// SET_CREATED_AVATAR,
// SET_CROPPED_AVATAR,
// } from "./actions";
const initialState = {
targetUser: null,
avatarMax: null,
createdAvatar: {
tmpFile: "",
image: null,
defaultWidth: 0,
defaultHeight: 0,
x: 0,
y: 0,
width: 0,
height: 0,
},
croppedAvatar: null,
};
// const initialState = {
// targetUser: null,
// avatarMax: null,
// createdAvatar: {
// tmpFile: "",
// image: null,
// defaultWidth: 0,
// defaultHeight: 0,
// x: 0,
// y: 0,
// width: 0,
// height: 0,
// },
// croppedAvatar: null,
// };
const profileReducer = (state = initialState, action) => {
switch (action.type) {
case SET_PROFILE:
return Object.assign({}, state, {
targetUser: action.targetUser,
});
case CLEAN_PROFILE:
return initialState;
case SET_AVATAR_MAX:
return Object.assign({}, state, {
avatarMax: action.avatarMax,
});
case SET_CREATED_AVATAR:
return Object.assign({}, state, {
createdAvatar: action.avatar,
});
case SET_CROPPED_AVATAR:
return Object.assign({}, state, {
croppedAvatar: action.croppedAvatar,
});
default:
return state;
}
};
// const profileReducer = (state = initialState, action) => {
// switch (action.type) {
// case SET_PROFILE:
// return Object.assign({}, state, {
// targetUser: action.targetUser,
// });
// case CLEAN_PROFILE:
// return initialState;
// case SET_AVATAR_MAX:
// return Object.assign({}, state, {
// avatarMax: action.avatarMax,
// });
// case SET_CREATED_AVATAR:
// return Object.assign({}, state, {
// createdAvatar: action.avatar,
// });
// case SET_CROPPED_AVATAR:
// return Object.assign({}, state, {
// croppedAvatar: action.croppedAvatar,
// });
// default:
// return state;
// }
// };
export default profileReducer;
// export default profileReducer;

View File

@ -5,15 +5,15 @@ const { isAdmin, getCurrentUserId } = store.auth.selectors;
const getProfileId = (state) =>
state.profile.targetUser && state.profile.targetUser.id;
const getIsAdminProfile = (state) =>
state.profile.targetUser.listAdminModules &&
state.profile.targetUser.listAdminModules.includes("people");
const getIsAdminProfile = (state) => true;
// state.profile.targetUser.listAdminModules &&
//state.profile.targetUser.listAdminModules.includes("people");
export const getDisableProfileType = createSelector(
[isAdmin, getCurrentUserId, getProfileId, getIsAdminProfile],
(isAdmin, currentUserId, profileId, isAdminProfile) => {
return currentUserId === profileId || !isAdmin || isAdminProfile
? true
: false;
}
);
// export const getDisableProfileType = createSelector(
// [isAdmin, getCurrentUserId, getProfileId, getIsAdminProfile],
// (isAdmin, currentUserId, profileId, isAdminProfile) => {
// return currentUserId === profileId || !isAdmin || isAdminProfile
// ? true
// : false;
// }
// );

View File

@ -23,13 +23,9 @@
"react": "^16.14.0",
"react-dom": "^16.14.0",
"react-i18next": "11.3.0",
"react-redux": "7.1.3",
"react-router": "5.1.2",
"react-router-dom": "5.1.2",
"react-string-format": "^0.1.0",
"redux": "4.0.5",
"redux-thunk": "2.3.0",
"reselect": "^4.0.0",
"styled-components": "^5.2.1"
},
"devDependencies": {
@ -38,7 +34,6 @@
"prettier": "2.1.2",
"react-app-rewired": "^2.1.8",
"react-scripts": "4.0.1",
"redux-devtools-extension": "^2.13.8",
"rimraf": "3.0.2",
"webpack-bundle-analyzer": "^3.9.0",
"workbox-build": "^5.1.4"

View File

@ -1,8 +1,6 @@
import React, { Suspense, lazy /*useEffect*/, useEffect } from "react";
import React, { Suspense, lazy, useEffect } from "react";
import { Router, Route, Switch } from "react-router-dom";
//import { connect } from "react-redux";
import {
//store as CommonStore,
history,
PrivateRoute,
PublicRoute,
@ -24,14 +22,6 @@ const Settings = lazy(() => import("./components/pages/Settings"));
const Wizard = lazy(() => import("./components/pages/Wizard"));
const Payments = lazy(() => import("./components/pages/Payments"));
const ThirdPartyResponse = lazy(() => import("./components/pages/ThirdParty"));
// const {
// setIsLoaded,
// //getUser,
// //getPortalSettings,
// //getModules,
// getIsAuthenticated,
// } = CommonStore.auth.actions;
//const { userStore, settingsStore } = CommonStore;
const App = (props) => {
//constructor(props) {
@ -133,8 +123,8 @@ const App = (props) => {
);
};
export default inject(({ store }) => {
const { init, isLoaded } = store;
export default inject(({ auth }) => {
const { init, isLoaded } = auth;
const pathname = window.location.pathname.toLowerCase();
const isThirdPartyResponse = pathname.indexOf("thirdparty") !== -1;

View File

@ -2,11 +2,9 @@ import React, { Suspense, lazy, useEffect } from "react";
import { Route, Switch } from "react-router-dom";
import ConfirmRoute from "../../../helpers/confirmRoute";
import { I18nextProvider } from "react-i18next";
import { Error404, utils, store, PageLayout, Loaders } from "asc-web-common";
import { Error404, utils, PageLayout, Loaders } from "asc-web-common";
import { createI18N } from "../../../helpers/i18n";
import { connect } from "react-redux";
const { getIsLoaded } = store.auth.selectors;
import { inject, observer } from "mobx-react";
const i18n = createI18N({
page: "Confirm",
@ -89,10 +87,9 @@ const Confirm = ({ match, isLoaded }) => {
);
};
function mapStateToProps(state) {
export default inject(({ auth }) => {
const { isLoaded } = auth;
return {
isLoaded: getIsLoaded(state),
isLoaded,
};
}
export default connect(mapStateToProps)(Confirm);
})(observer(Confirm));

View File

@ -3,11 +3,9 @@ import { withRouter } from "react-router";
import { withTranslation } from "react-i18next";
import { Loader } from "asc-web-components";
import { PageLayout } from "asc-web-common";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { store, utils as commonUtils } from "asc-web-common";
import { changeEmail } from "../../../../store/confirm/actions";
const { logout } = store.auth.actions;
import { utils as commonUtils } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { tryRedirectTo } = commonUtils;
class ActivateEmail extends React.PureComponent {
@ -47,7 +45,10 @@ const ActivateEmailForm = (props) => (
</PageLayout>
);
export default connect(null, {
logout,
changeEmail,
})(withRouter(withTranslation()(ActivateEmailForm)));
export default inject(({ auth }) => {
const { logout, userStore } = auth;
return {
logout,
changeEmail: userStore.changeEmail,
};
})(withRouter(withTranslation()(observer(ActivateEmailForm))));

View File

@ -11,14 +11,9 @@ import {
} from "asc-web-components";
import { PageLayout } from "asc-web-common";
import styled from "styled-components";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { constants, utils as commonUtils } from "asc-web-common";
import {
getConfirmationInfo,
activateConfirmUser,
} from "../../../../store/confirm/actions";
import { inject } from "mobx-react";
import { constants, utils as commonUtils, api } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { EmployeeActivationStatus } = constants;
const { createPasswordHash, tryRedirectTo } = commonUtils;
@ -67,6 +62,7 @@ class Confirm extends React.PureComponent {
super(props);
this.state = {
isConfirmLoaded: false,
email: props.linkData.email,
firstName: props.linkData.firstname,
firstNameValid: true,
@ -85,7 +81,7 @@ class Confirm extends React.PureComponent {
onSubmit = (e) => {
this.setState({ isLoading: true }, function () {
const { activateConfirmUser, hashSettings, defaultPage } = this.props;
const { hashSettings, defaultPage } = this.props;
this.setState({ errorText: "" });
@ -127,7 +123,8 @@ class Confirm extends React.PureComponent {
firstname: this.state.firstName,
lastname: this.state.lastName,
};
activateConfirmUser(
this.activateConfirmUser(
personalData,
loginData,
this.state.key,
@ -145,6 +142,56 @@ class Confirm extends React.PureComponent {
});
};
activateConfirmUser = async (
personalData,
loginData,
key,
userId,
activationStatus
) => {
const changedData = {
id: userId,
FirstName: personalData.firstname,
LastName: personalData.lastname,
};
const res1 = await api.people.changePassword(
userId,
loginData.passwordHash,
key
);
const res2 = await api.people.updateActivationStatus(
activationStatus,
userId,
key
);
//TODO: Fix working process
// .then((data) => {
// const promise = new Promise((resolve, reject) => {
// setTimeout(() => {
// login(
// loginData.userName,
// loginData.passwordHash
// )(dispatch)
// .then(() => {
// resolve(loadInitInfo(dispatch));
// })
// .catch((e) => {
// reject(e);
// });
// }, 1000);
// });
// return promise;
// })
// .then((data) => {
// return api.people.updateUser(changedData);
// })
// .then((user) => dispatch(setCurrentUser(user)));
};
onKeyPress = (event) => {
if (event.key === "Enter") {
this.onSubmit();
@ -156,10 +203,12 @@ class Confirm extends React.PureComponent {
validatePassword = (value) => this.setState({ passwordValid: value });
componentDidMount() {
const { getConfirmationInfo, history } = this.props;
const { getSettings, getPortalPasswordSettings, history } = this.props;
const requests = [getSettings(), getPortalPasswordSettings(this.state.key)];
getConfirmationInfo(this.state.key)
.then(function () {
Promise.all(requests)
.then(() => {
this.setState({ isConfirmLoaded: true });
console.log("get settings success");
})
.catch((e) => {
@ -341,33 +390,22 @@ const ActivateUserForm = (props) => (
</PageLayout>
);
function mapStateToProps(state) {
export default inject(({ auth }) => {
const {
greetingSettings,
hashSettings,
defaultPage,
passwordSettings,
getSettings,
getPortalPasswordSettings,
} = auth.settingsStore;
return {
isConfirmLoaded: state.confirm.isConfirmLoaded,
//settings: state.auth.settings.passwordSettings,
//greetingTitle: state.auth.settings.greetingSettings,
//hashSettings: state.auth.settings.hashSettings,
//defaultPage: state.auth.settings.defaultPage,
settings: passwordSettings,
greetingTitle: greetingSettings,
hashSettings,
defaultPage,
getSettings,
getPortalPasswordSettings,
};
}
export default connect(mapStateToProps, {
getConfirmationInfo,
activateConfirmUser,
})(
inject(({ store }) => {
const {
greetingSettings,
hashSettings,
defaultPage,
passwordSettings,
} = store.settingsStore;
return {
settings: passwordSettings,
greetingTitle: greetingSettings,
hashSettings,
defaultPage,
};
})(withRouter(withTranslation()(ActivateUserForm)))
);
})(withRouter(withTranslation()(observer(ActivateUserForm))));

View File

@ -3,10 +3,8 @@ import { withRouter } from "react-router";
import { withTranslation } from "react-i18next";
import { Loader } from "asc-web-components";
import { PageLayout, utils as commonUtils } from "asc-web-common";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { changeEmail } from "../../../../store/confirm/actions";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const { tryRedirectTo } = commonUtils;
class ChangeEmail extends React.PureComponent {
@ -65,16 +63,13 @@ const ChangeEmailForm = (props) => (
</PageLayout>
);
function mapStateToProps(state) {
export default inject(({ auth }) => {
const { logout, userStore, settingsStore, isLoaded } = auth;
return {
isLoaded: state.auth.isLoaded,
userId: state.auth.user.id,
//defaultPage: state.auth.settings.defaultPage,
isLoaded,
userId: userStore.user.id,
logout,
changeEmail: userStore.changeEmail,
defaultPage: settingsStore.defaultPage,
};
}
export default connect(mapStateToProps, { changeEmail })(
inject(({ store }) => ({
defaultPage: store.settingsStore.defaultPage,
}))(withRouter(withTranslation()(ChangeEmailForm)))
);
})(observer(withRouter(withTranslation()(ChangeEmailForm))));

View File

@ -4,7 +4,7 @@ import { withTranslation } from "react-i18next";
import styled from "styled-components";
import { Button, Text, toastr } from "asc-web-components";
import { PageLayout, utils as commonUtils } from "asc-web-common";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const { tryRedirectTo } = commonUtils;
const BodyStyle = styled.div`
@ -133,7 +133,7 @@ const ChangeOwnerForm = (props) => (
// };
// }
export default inject(({ store }) => ({
greetingTitle: store.settingsStore.greetingSettings,
defaultPage: store.settingsStore.defaultPage,
}))(withRouter(withTranslation()(ChangeOwnerForm)));
export default inject(({ auth }) => ({
greetingTitle: auth.settingsStore.greetingSettings,
defaultPage: auth.settingsStore.defaultPage,
}))(withRouter(withTranslation()(observer(ChangeOwnerForm))));

View File

@ -1,7 +1,6 @@
import React from "react";
import { withRouter } from "react-router";
import { withTranslation } from "react-i18next";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import styled from "styled-components";
import {
@ -13,15 +12,11 @@ import {
Heading,
} from "asc-web-components";
import { PageLayout } from "asc-web-common";
import { store, utils as commonUtils } from "asc-web-common";
import {
getConfirmationInfo,
changePassword,
} from "../../../../store/confirm/actions";
import { inject } from "mobx-react";
import { utils as commonUtils, api } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { createPasswordHash, tryRedirectTo } = commonUtils;
const { logout /* , getPortalSettings */ } = store.auth.actions;
const BodyStyle = styled.form`
margin: 70px auto 0 auto;
@ -50,9 +45,10 @@ class Form extends React.PureComponent {
const { linkData } = props;
this.state = {
isConfirmLoaded: false,
password: "",
passwordValid: true,
isValidConfirmLink: false,
// isValidConfirmLink: false,
isLoading: false,
passwordEmpty: false,
key: linkData.confirmHeader,
@ -76,7 +72,7 @@ class Form extends React.PureComponent {
onSubmit = (e) => {
this.setState({ isLoading: true }, function () {
const { userId, password, key } = this.state;
const { changePassword, hashSettings, defaultPage } = this.props;
const { hashSettings, defaultPage } = this.props;
let hasError = false;
if (!this.state.passwordValid) {
@ -92,7 +88,8 @@ class Form extends React.PureComponent {
}
const hash = createPasswordHash(password, hashSettings);
changePassword(userId, hash, key)
api.people
.changePassword(userId, hash, key)
.then(() => this.props.logout())
.then(() => {
toastr.success(this.props.t("ChangePasswordSuccess"));
@ -106,11 +103,19 @@ class Form extends React.PureComponent {
};
componentDidMount() {
const { getConfirmationInfo, defaultPage } = this.props;
getConfirmationInfo(this.state.key).catch((error) => {
toastr.error(this.props.t(`${error}`));
tryRedirectTo(defaultPage);
});
const { defaultPage, getSettings, getPortalPasswordSettings } = this.props;
const requests = [getSettings(), getPortalPasswordSettings(this.state.key)];
Promise.all(requests)
.then(() => {
this.setState({ isConfirmLoaded: true });
console.log("get settings success");
})
.catch((error) => {
toastr.error(this.props.t(`${error}`));
tryRedirectTo(defaultPage);
});
window.addEventListener("keydown", this.onKeyPress);
window.addEventListener("keyup", this.onKeyPress);
@ -209,35 +214,24 @@ const ChangePasswordForm = (props) => (
</PageLayout>
);
function mapStateToProps(state) {
return {
isValidConfirmLink: state.auth.isValidConfirmLink,
isConfirmLoaded: state.confirm.isConfirmLoaded,
isAuthenticated: state.auth.isAuthenticated,
//settings: state.auth.settings.passwordSettings,
//greetingTitle: state.auth.settings.greetingSettings,
//hashSettings: state.auth.settings.hashSettings,
//defaultPage: state.auth.settings.defaultPage,
};
}
export default connect(mapStateToProps, {
changePassword,
getConfirmationInfo,
logout,
});
inject(({ store }) => {
export default inject(({ auth }) => {
const { settingsStore, logout, isAuthenticated } = auth;
const {
greetingSettings,
hashSettings,
defaultPage,
passwordSettings,
} = store.settingsStore;
getSettings,
getPortalPasswordSettings,
} = settingsStore;
return {
settings: passwordSettings,
hashSettings,
greetingTitle: greetingSettings,
defaultPage,
logout,
isAuthenticated,
getSettings,
getPortalPasswordSettings,
};
})(withRouter(withTranslation()(ChangePasswordForm)));
})(withRouter(withTranslation()(observer(ChangePasswordForm))));

View File

@ -1,11 +1,10 @@
import React, { useState } from "react";
import { withRouter } from "react-router";
import { connect } from "react-redux";
import { withTranslation } from "react-i18next";
import styled from "styled-components";
import { Button, TextInput, Text } from "asc-web-components";
import { PageLayout } from "asc-web-common";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const BodyStyle = styled.div`
margin: 70px auto 0 auto;
@ -120,16 +119,8 @@ const ChangePhoneForm = (props) => {
);
};
function mapStateToProps(state) {
return {
isLoaded: state.auth.isLoaded,
currentPhone: state.auth.user.mobilePhone,
//greetingTitle: state.auth.settings.greetingSettings,
};
}
export default connect(mapStateToProps)(
inject(({ store }) => ({
greetingTitle: store.settingsStore.greetingSettings,
}))(withRouter(withTranslation()(ChangePhoneForm)))
);
export default inject(({ auth }) => ({
isLoaded: auth.isLoaded,
currentPhone: auth.userStore.mobilePhone,
greetingTitle: auth.settingsStore.greetingSettings,
}))(withRouter(withTranslation()(observer(ChangePhoneForm))));

View File

@ -11,16 +11,11 @@ import {
EmailInput,
} from "asc-web-components";
import styled from "styled-components";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { store, PageLayout, utils as commonUtils } from "asc-web-common";
import {
getConfirmationInfo,
createConfirmUser,
} from "../../../../store/confirm/actions";
import { inject } from "mobx-react";
import { api, PageLayout, utils as commonUtils } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { logout, login } = store.auth.actions;
const { createPasswordHash, tryRedirectTo } = commonUtils;
const inputWidth = "400px";
@ -66,6 +61,7 @@ class Confirm extends React.PureComponent {
super(props);
this.state = {
isConfirmLoaded: false,
email: "",
emailValid: true,
firstName: "",
@ -91,12 +87,7 @@ class Confirm extends React.PureComponent {
onSubmit = () => {
this.setState({ isLoading: true }, () => {
const {
defaultPage,
createConfirmUser,
linkData,
hashSettings,
} = this.props;
const { defaultPage, linkData, hashSettings } = this.props;
const isVisitor = parseInt(linkData.emplType) === 2;
this.setState({ errorText: "" });
@ -146,7 +137,7 @@ class Confirm extends React.PureComponent {
isVisitor: isVisitor,
});
createConfirmUser(registerData, loginData, this.state.key)
this.createConfirmUser(registerData, loginData, this.state.key)
.then(() => {
toastr.success("User has been created successfully");
tryRedirectTo(defaultPage);
@ -161,6 +152,41 @@ class Confirm extends React.PureComponent {
});
};
createConfirmUser = async (registerData, loginData, key) => {
const data = Object.assign(
{ fromInviteLink: true },
registerData,
loginData
);
const user = await api.people.createUser(data, key);
return user;
//TODO: Fix working process
// dispatch(setCurrentUser(user));
// })
// .then(() => {
// const promise = new Promise((resolve, reject) => {
// setTimeout(() => {
// login(
// loginData.userName,
// loginData.passwordHash
// )(dispatch)
// .then(() => {
// resolve(loadInitInfo(dispatch));
// })
// .catch((e) => {
// reject(e);
// });
// }, 1000);
// });
// return promise;
// });
// };
};
onKeyPress = (event) => {
if (event.key === "Enter") {
this.onSubmit();
@ -172,12 +198,19 @@ class Confirm extends React.PureComponent {
validatePassword = (value) => this.setState({ passwordValid: value });
componentDidMount() {
const { getConfirmationInfo, history } = this.props;
const { history, getSettings, getPortalPasswordSettings } = this.props;
getConfirmationInfo(this.state.key).catch((e) => {
console.error("get settings error", e);
history.push(`/login/error=${e}`);
});
const requests = [getSettings(), getPortalPasswordSettings(this.state.key)];
Promise.all(requests)
.then(() => {
this.setState({ isConfirmLoaded: true });
console.log("get settings success");
})
.catch((e) => {
console.error("get settings error", e);
history.push(`/login/error=${e}`);
});
window.addEventListener("keydown", this.onKeyPress);
window.addEventListener("keyup", this.onKeyPress);
@ -355,8 +388,6 @@ class Confirm extends React.PureComponent {
}
Confirm.propTypes = {
getConfirmationInfo: PropTypes.func.isRequired,
createConfirmUser: PropTypes.func.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired,
};
@ -368,35 +399,26 @@ const CreateUserForm = (props) => (
</PageLayout>
);
function mapStateToProps(state) {
return {
isConfirmLoaded: state.confirm.isConfirmLoaded,
isAuthenticated: state.auth.isAuthenticated,
//settings: state.auth.settings.passwordSettings,
//greetingTitle: state.auth.settings.greetingSettings,
//hashSettings: state.auth.settings.hashSettings,
//defaultPage: state.auth.settings.defaultPage,
};
}
export default connect(mapStateToProps, {
getConfirmationInfo,
createConfirmUser,
login,
logout,
});
inject(({ store }) => {
export default inject(({ auth }) => {
const { login, logout, isAuthenticated, settingsStore } = auth;
const {
passwordSettings,
greetingSettings,
hashSettings,
defaultPage,
} = store.settingsStore.settings;
getSettings,
getPortalPasswordSettings,
} = settingsStore;
return {
settings: passwordSettings,
greetingTitle: greetingSettings,
hashSettings,
defaultPage,
isAuthenticated,
login,
logout,
getSettings,
getPortalPasswordSettings,
};
})(withRouter(withTranslation()(CreateUserForm)));
})(withRouter(withTranslation()(observer(CreateUserForm))));

View File

@ -1,15 +1,13 @@
import React from "react";
import { connect } from "react-redux";
import { withRouter } from "react-router";
import { Button, Text } from "asc-web-components";
import styled from "styled-components";
import PropTypes from "prop-types";
import { withTranslation } from "react-i18next";
import { store, api, PageLayout } from "asc-web-common";
import { inject } from "mobx-react";
import { api, PageLayout } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { logout } = store.auth.actions;
const { deleteSelf } = api.people;
const { deleteSelf } = api.people; //TODO: Move inside UserStore
const ProfileRemoveContainer = styled.div`
display: flex;
@ -119,14 +117,7 @@ const ProfileRemoveForm = (props) => (
</PageLayout>
);
function mapStateToProps(state) {
return {
greetingTitle: state.auth.settings.greetingSettings,
};
}
export default connect(mapStateToProps, { logout })(
inject(({ store }) => ({
greetingTitle: store.settingsStore.greetingSettings,
}))(withRouter(withTranslation()(ProfileRemoveForm)))
);
export default inject(({ auth }) => ({
greetingTitle: auth.settingsStore.greetingSettings,
logout: auth.logout,
}))(withRouter(withTranslation()(observer(ProfileRemoveForm))));

View File

@ -123,8 +123,8 @@ Home.propTypes = {
defaultPage: PropTypes.string,
};
export default inject(({ store }) => {
const { isLoaded, settingsStore, moduleStore } = store;
export default inject(({ auth }) => {
const { isLoaded, settingsStore, moduleStore } = auth;
const { defaultPage } = settingsStore;
const { modules } = moduleStore;
return {

View File

@ -1,9 +1,9 @@
import React from "react";
import { withRouter } from "react-router";
import { connect } from "react-redux";
import PaymentsEnterprise from "../PaymentsEnterprise";
import PaymentsSaaS from "../PaymentsSaaS";
import { inject, observer } from "mobx-react";
class Payments extends React.Component {
render() {
const { standaloneMode } = this.props;
@ -11,10 +11,6 @@ class Payments extends React.Component {
}
}
function mapStateToProps(state) {
return {
standaloneMode: state.payments.standaloneMode,
};
}
export default connect(mapStateToProps)(withRouter(Payments));
export default inject(({ payments }) => ({
standaloneMode: payments.standaloneMode,
}))(withRouter(observer(Payments)));

View File

@ -3,21 +3,20 @@ import { PageLayout, utils, store } from "asc-web-common";
import { Loader, utils as Utils } from "asc-web-components";
import styled from "styled-components";
import { withRouter } from "react-router";
import { connect } from "react-redux";
import { withTranslation } from "react-i18next";
import PropTypes from "prop-types";
import HeaderContainer from "./sub-components/headerContainer";
import AdvantagesContainer from "./sub-components/advantagesContainer";
import ButtonContainer from "./sub-components/buttonContainer";
import ContactContainer from "./sub-components/contactContainer";
import { getSettingsPayment } from "../../../store/payments/actions";
import { createI18N } from "../../../helpers/i18n";
import { setDocumentTitle } from "../../../helpers/utils";
import { inject, observer } from "mobx-react";
const i18n = createI18N({
page: "PaymentsEnterprise",
localesPath: "pages/PaymentsEnterprise",
});
const { setCurrentProductId } = store.auth.actions;
const { changeLanguage } = utils;
const { tablet, size } = Utils.device;
@ -91,13 +90,13 @@ PaymentsEnterprise.propTypes = {
isLoaded: PropTypes.bool,
};
function mapStateToProps({ auth }) {
const { isLoaded } = auth;
export default inject(({ auth, payments }) => {
const { isLoaded, settingsStore } = auth;
const { getSettingsPayment } = payments;
const { setCurrentProductId } = settingsStore;
return {
isLoaded,
setCurrentProductId,
getSettingsPayment,
};
}
export default connect(mapStateToProps, {
setCurrentProductId,
getSettingsPayment,
})(withRouter(PaymentsEnterprise));
})(withRouter(observer(PaymentsEnterprise)));

View File

@ -128,6 +128,6 @@ const AdvantagesContainer = ({ organizationName }) => {
// };
// }
export default inject(({ store }) => ({
organizationName: store.settingsStore.organizationName,
export default inject(({ auth }) => ({
organizationName: auth.settingsStore.organizationName,
}))(AdvantagesContainer);

View File

@ -1,13 +1,12 @@
import React, { useEffect, createRef } from "react";
import styled from "styled-components";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import { withRouter } from "react-router";
import { Button, utils as Utils, toastr } from "asc-web-components";
import { withTranslation, I18nextProvider } from "react-i18next";
import { createI18N } from "../../../../helpers/i18n";
import { utils } from "asc-web-common";
import { setPaymentsLicense } from "../../../../store/payments/actions";
import { inject, observer } from "mobx-react";
const { changeLanguage } = utils;
const { tablet } = Utils.device;
const i18n = createI18N({
@ -114,12 +113,11 @@ const ButtonContainer = (props) => {
ButtonContainer.propTypes = {
buyUrl: PropTypes.string,
};
function mapStateToProps(state) {
const { buyUrl } = state.payments;
export default inject(({ payments }) => {
const { buyUrl, setPaymentsLicense } = payments;
return {
buyUrl,
setPaymentsLicense,
};
}
export default connect(mapStateToProps, { setPaymentsLicense })(
ButtonContainer
);
})(withRouter(observer(ButtonContainer)));

View File

@ -1,12 +1,12 @@
import React, { useEffect } from "react";
import PropTypes from "prop-types";
import styled from "styled-components";
import { connect } from "react-redux";
import { withRouter } from "react-router";
import { Text, Link } from "asc-web-components";
import { useTranslation } from "react-i18next";
import { createI18N } from "../../../../helpers/i18n";
import { utils } from "asc-web-common";
import { inject, observer } from "mobx-react";
const { changeLanguage } = utils;
const i18n = createI18N({
@ -51,10 +51,10 @@ ContactContainer.propTypes = {
helpUrl: PropTypes.string,
};
function mapStateToProps(state) {
export default inject(({ payments }) => {
const { salesEmail, helpUrl } = payments;
return {
salesEmail: state.payments.salesEmail,
helpUrl: state.payments.helpUrl,
salesEmail,
helpUrl,
};
}
export default connect(mapStateToProps)(withRouter(ContactContainer));
})(withRouter(observer(ContactContainer)));

View File

@ -1,7 +1,6 @@
import React, { useEffect } from "react";
import PropTypes from "prop-types";
import styled from "styled-components";
import { connect } from "react-redux";
import { withRouter } from "react-router";
import { Text } from "asc-web-components";
import { utils } from "asc-web-common";
@ -9,7 +8,7 @@ import { utils } from "asc-web-common";
import { useTranslation, Trans } from "react-i18next";
import { createI18N } from "../../../../helpers/i18n";
import moment from "moment";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const { changeLanguage } = utils;
@ -106,22 +105,14 @@ HeaderContainer.propTypes = {
expiresDate: PropTypes.object,
trialMode: PropTypes.bool,
};
function mapStateToProps({ auth, payments }) {
//const { culture, organizationName } = auth.settings;
const { expiresDate, trialMode } = payments.currentLicense;
return {
//culture,
expiresDate,
trialMode,
//organizationName,
};
}
export default connect(mapStateToProps);
inject(({ store }) => {
const { organizationName, culture } = store.settingsStore;
export default inject(({ auth, payments }) => {
const { organizationName, culture } = auth.settingsStore;
const { expiresDate, trialMode } = payments;
return {
organizationName,
culture,
expiresDate,
trialMode,
};
})(withRouter(HeaderContainer));
})(withRouter(observer(HeaderContainer)));

View File

@ -1,21 +1,20 @@
import React, { useEffect } from "react";
import { connect } from "react-redux";
import { PageLayout } from "asc-web-common";
import { I18nextProvider } from "react-i18next";
import { ArticleHeaderContent, ArticleBodyContent } from "./Article";
import { SectionHeaderContent } from "./Section";
import { store, utils } from "asc-web-common";
import { utils } from "asc-web-common";
import { createI18N } from "../../../../helpers/i18n";
import { inject, observer } from "mobx-react";
const i18n = createI18N({
page: "Settings",
localesPath: "pages/Settings",
});
const { setCurrentProductId } = store.auth.actions;
const { changeLanguage } = utils;
const { getLanguage } = store.auth.selectors;
const Layout = ({
currentProductId,
setCurrentProductId,
@ -48,10 +47,10 @@ const Layout = ({
);
};
function mapStateToProps(state) {
export default inject(({ auth }) => {
const { language, settingsStore } = auth;
return {
language: getLanguage(state),
language,
setCurrentProductId: settingsStore.setCurrentProductId,
};
}
export default connect(mapStateToProps, { setCurrentProductId })(Layout);
})(observer(Layout));

View File

@ -1,5 +1,4 @@
import React from "react";
import { connect } from "react-redux";
import { withTranslation } from "react-i18next";
import {
FieldContainer,
@ -10,13 +9,9 @@ import {
SaveCancelButtons,
} from "asc-web-components";
import styled from "styled-components";
import {
setGreetingTitle,
restoreGreetingTitle,
} from "../../../../../store/settings/actions";
import { saveToSessionStorage, getFromSessionStorage } from "../../utils";
import { setDocumentTitle } from "../../../../../helpers/utils";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const StyledComponent = styled.div`
.margin-top {
@ -249,34 +244,13 @@ class CustomTitles extends React.Component {
}
}
// function mapStateToProps(state) {
// const { greetingSettings, organizationName } = state.auth.settings;
// return {
// greetingSettings,
// organizationName,
// };
// }
// const CustomTitlesWrapper = observer((props) => {
// const { greetingSettings, organizationName } = settingsStore;
// return (
// <CustomTitles
// greetingSettings={greetingSettings}
// organizationName={organizationName}
// {...props}
// />
// );
// });
export default connect(null /* mapStateToProps */, {
setGreetingTitle,
restoreGreetingTitle,
});
inject(({ store }) => {
const { greetingSettings, organizationName } = store.settingsStore;
export default inject(({ auth, setup }) => {
const { greetingSettings, organizationName } = auth.settingsStore;
const { setGreetingTitle, restoreGreetingTitle } = setup;
return {
greetingSettings,
organizationName,
setGreetingTitle,
restoreGreetingTitle,
};
})(withTranslation()(CustomTitles));
})(withTranslation()(observer(CustomTitles)));

View File

@ -1,23 +1,12 @@
import React from "react";
import { connect } from "react-redux";
import { withTranslation } from "react-i18next";
import { Text, Loader, toastr, Link, Icons } from "asc-web-components";
import styled from "styled-components";
import { store, utils } from "asc-web-common";
import {
setLanguageAndTime,
getPortalTimezones,
} from "../../../../../store/settings/actions";
import { default as clientStore } from "../../../../../store/store";
import { utils } from "asc-web-common";
import { setDocumentTitle } from "../../../../../helpers/utils";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const { changeLanguage } = utils;
const {
getPortalCultures,
//getModules,
getCurrentCustomSchema,
} = store.auth.actions;
const mapCulturesToArray = (cultures, t) => {
return cultures.map((culture) => {
@ -158,7 +147,7 @@ class Customization extends React.Component {
componentDidUpdate(prevProps, prevState) {
const { timezones, languages } = this.state;
const { i18n, language, nameSchemaId } = this.props;
const { i18n, language, nameSchemaId, getCurrentCustomSchema } = this.props;
if (timezones.length && languages.length && !prevState.isLoadedData) {
this.setState({ isLoadedData: true });
@ -182,7 +171,7 @@ class Customization extends React.Component {
});
})
//.then(() => getModules(clientStore.dispatch))
.then(() => getCurrentCustomSchema(clientStore.dispatch, nameSchemaId));
.then(() => getCurrentCustomSchema(nameSchemaId));
}
}
@ -270,33 +259,7 @@ class Customization extends React.Component {
}
}
// function mapStateToProps(state) {
// const {
// culture,
// timezone,
// timezones,
// cultures,
// nameSchemaId,
// organizationName,
// } = state.auth.settings;
// return {
// portalLanguage: culture,
// portalTimeZoneId: timezone,
// language: getLanguage(state),
// rawTimezones: timezones,
// rawCultures: cultures,
// nameSchemaId: nameSchemaId,
// organizationName,
// };
// }
export default connect(null, {
getPortalCultures,
setLanguageAndTime,
getPortalTimezones,
});
inject(({ store }) => {
export default inject(({ auth, setup }) => {
const {
culture,
timezone,
@ -304,14 +267,24 @@ inject(({ store }) => {
cultures,
nameSchemaId,
organizationName,
} = store.settingsStore;
getPortalCultures,
getCurrentCustomSchema,
getPortalTimezones,
} = auth.settingsStore;
const { setLanguageAndTime } = setup;
return {
portalLanguage: culture,
language: culture || "en-US",
language: culture,
portalTimeZoneId: timezone,
rawTimezones: timezones,
rawCultures: cultures,
nameSchemaId,
organizationName,
getPortalCultures,
setLanguageAndTime,
getPortalTimezones,
getCurrentCustomSchema,
};
})(withTranslation()(Customization));
})(withTranslation()(observer(Customization)));

View File

@ -1,5 +1,4 @@
import React from "react";
import { connect } from "react-redux";
import { withTranslation } from "react-i18next";
import {
FieldContainer,
@ -12,23 +11,11 @@ import {
} from "asc-web-components";
import styled from "styled-components";
import { Trans } from "react-i18next";
import { store, utils } from "asc-web-common";
import {
setLanguageAndTime,
getPortalTimezones,
} from "../../../../../store/settings/actions";
import { saveToSessionStorage, getFromSessionStorage } from "../../utils";
import { default as clientStore } from "../../../../../store/store";
import { setDocumentTitle } from "../../../../../helpers/utils";
import { inject } from "mobx-react";
const { getLanguage } = store.auth.selectors;
import { inject, observer } from "mobx-react";
import { utils } from "asc-web-common";
const { changeLanguage } = utils;
const {
getPortalCultures,
//getModules,
getCurrentCustomSchema,
} = store.auth.actions;
const mapCulturesToArray = (cultures, t) => {
return cultures.map((culture) => {
@ -193,7 +180,7 @@ class LanguageAndTimeZone extends React.Component {
timezoneDefault,
languageDefault,
} = this.state;
const { i18n, language, nameSchemaId } = this.props;
const { i18n, language, nameSchemaId, getCurrentCustomSchema } = this.props;
if (timezones.length && languages.length && !prevState.isLoadedData) {
this.setState({ isLoadedData: true });
}
@ -215,7 +202,7 @@ class LanguageAndTimeZone extends React.Component {
});
})
//.then(() => getModules(clientStore.dispatch))
.then(() => getCurrentCustomSchema(clientStore.dispatch, nameSchemaId));
.then(() => getCurrentCustomSchema(nameSchemaId));
}
if (timezoneDefault && languageDefault) {
this.checkChanges();
@ -403,35 +390,7 @@ class LanguageAndTimeZone extends React.Component {
}
}
// function mapStateToProps(state) {
// const {
// culture,
// timezone,
// timezones,
// cultures,
// greetingSettings,
// nameSchemaId,
// organizationName,
// } = state.auth.settings;
// return {
// portalLanguage: culture,
// portalTimeZoneId: timezone,
// language: getLanguage(state),
// rawTimezones: timezones,
// rawCultures: cultures,
// greetingSettings,
// nameSchemaId,
// organizationName,
// };
// }
export default connect(null, {
getPortalCultures,
setLanguageAndTime,
getPortalTimezones,
});
inject(({ store }) => {
export default inject(({ auth, setup }) => {
const {
culture,
timezone,
@ -440,15 +399,25 @@ inject(({ store }) => {
nameSchemaId,
organizationName,
greetingSettings,
} = store.settingsStore;
getPortalCultures,
getPortalTimezones,
getCurrentCustomSchema,
} = auth.settingsStore;
const { setLanguageAndTime } = setup;
return {
portalLanguage: culture,
portalTimeZoneId: timezone,
language: culture || "en-US",
language: culture,
rawTimezones: timezones,
rawCultures: cultures,
greetingSettings,
nameSchemaId,
organizationName,
getPortalCultures,
setLanguageAndTime,
getCurrentCustomSchema,
getPortalTimezones,
};
})(withTranslation()(LanguageAndTimeZone));
})(withTranslation()(observer(LanguageAndTimeZone)));

View File

@ -1,5 +1,5 @@
import React from "react";
import { connect } from "react-redux";
import { withTranslation, Trans } from "react-i18next";
import {
FieldContainer,
@ -10,12 +10,8 @@ import {
Link,
TextInput,
} from "asc-web-components";
import {
getWhiteLabelLogoText,
getWhiteLabelLogoSizes,
getWhiteLabelLogoUrls,
} from "../../../../../store/settings/actions";
import styled from "styled-components";
import { inject, observer } from "mobx-react";
const StyledComponent = styled.div`
.margin-top {
@ -469,16 +465,22 @@ class WhiteLabel extends React.Component {
}
}
function mapStateToProps(state) {
return {
logoText: state.settings.common.whiteLabel.logoText,
rawSizes: state.settings.common.whiteLabel.logoSizes,
logoUrls: state.settings.common.whiteLabel.logoUrls,
};
}
export default inject(({ setup }) => {
const {
common,
getWhiteLabelLogoText,
getWhiteLabelLogoSizes,
getWhiteLabelLogoUrls,
} = setup;
export default connect(mapStateToProps, {
getWhiteLabelLogoText,
getWhiteLabelLogoSizes,
getWhiteLabelLogoUrls,
})(withTranslation()(WhiteLabel));
const { logoText, logoSizes: rawSizes, logoUrls } = common.whiteLabel;
return {
logoText,
rawSizes,
logoUrls,
getWhiteLabelLogoText,
getWhiteLabelLogoSizes,
getWhiteLabelLogoUrls,
};
})(withTranslation()(observer(WhiteLabel)));

View File

@ -11,14 +11,8 @@ import {
} from "asc-web-components";
import ModalDialogContainer from "./modalDialogContainer";
import { Trans } from "react-i18next";
import { connect } from "react-redux";
import {
getSelectedConsumer,
getConsumerInstruction,
} from "../../../../../../store/settings/selectors";
import { store as commonStore } from "asc-web-common";
const { getUrlSupport, getUrlAuthKeys } = commonStore.auth.selectors;
import { inject, observer } from "mobx-react";
import { format } from "react-string-format";
class ConsumerModalDialog extends React.Component {
constructor(props) {
@ -88,8 +82,12 @@ class ConsumerModalDialog extends React.Component {
this.mapTokenNameToState();
}
consumerInstruction =
this.props.selectedConsumer.instruction &&
format(this.props.selectedConsumer.instruction, <Box marginProp="4px 0" />);
bodyDescription = (
<Box marginProp={`${this.props.consumerInstruction ? "44px" : 0} 0 16px 0`}>
<Box marginProp={`${this.consumerInstruction ? "44px" : 0} 0 16px 0`}>
<Box marginProp="0 0 16px 0">
<Text as="div" isBold fontSize="15px">
{this.props.t("ThirdPartyHowItWorks")}
@ -131,7 +129,6 @@ class ConsumerModalDialog extends React.Component {
render() {
const {
selectedConsumer,
consumerInstruction,
onModalClose,
dialogVisible,
isLoading,
@ -141,6 +138,7 @@ class ConsumerModalDialog extends React.Component {
state,
onChangeHandler,
updateConsumerValues,
consumerInstruction,
bodyDescription,
bottomDescription,
} = this;
@ -215,13 +213,15 @@ ConsumerModalDialog.propTypes = {
urlSupport: PropTypes.string,
};
const mapStateToProps = (state) => {
return {
selectedConsumer: getSelectedConsumer(state),
consumerInstruction: getConsumerInstruction(state),
urlSupport: getUrlSupport(state),
urlAuthKeys: getUrlAuthKeys(state),
};
};
export default inject(({ setup, auth }) => {
const { settingsStore } = auth;
const { urlAuthKeys, urlSupport } = settingsStore;
const { integration } = setup;
const { selectedConsumer } = integration;
export default connect(mapStateToProps, null)(ConsumerModalDialog);
return {
selectedConsumer,
urlSupport,
urlAuthKeys,
};
})(observer(ConsumerModalDialog));

View File

@ -1,22 +1,13 @@
import React from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import {
getConsumers,
setSelectedConsumer,
updateConsumerProps,
} from "../../../../../store/settings/actions";
import { getConsumersList } from "../../../../../store/settings/selectors";
import { withTranslation } from "react-i18next";
import styled from "styled-components";
import { Box, Text, Link, toastr } from "asc-web-components";
import { utils } from "asc-web-components";
import { store as commonStore } from "asc-web-common";
import ConsumerItem from "./sub-components/consumerItem";
import ConsumerModalDialog from "./sub-components/consumerModalDialog";
const { getUrlAuthKeys } = commonStore.auth.selectors;
import { inject, observer } from "mobx-react";
const tablet = utils.device.tablet;
const mobile = utils.device.mobile;
@ -209,15 +200,22 @@ ThirdPartyServices.propTypes = {
setSelectedConsumer: PropTypes.func.isRequired,
};
const mapStateToProps = (state) => {
return {
consumers: getConsumersList(state),
urlAuthKeys: getUrlAuthKeys(state),
};
};
export default inject(({ setup, auth }) => {
const { settingsStore } = auth;
const { urlAuthKeys } = settingsStore;
const {
getConsumers,
integration,
updateConsumerProps,
setSelectedConsumer,
} = setup;
const { consumers } = integration;
export default connect(mapStateToProps, {
getConsumers,
updateConsumerProps,
setSelectedConsumer,
})(withTranslation()(ThirdPartyServices));
return {
consumers,
urlAuthKeys,
getConsumers,
updateConsumerProps,
setSelectedConsumer,
};
})(withTranslation()(observer(ThirdPartyServices)));

View File

@ -128,8 +128,8 @@ class PureAccessRights extends Component {
// };
// }
const AccessRightsContainer = inject(({ store }) => ({
organizationName: store.settingsStore.organizationName,
const AccessRightsContainer = inject(({ auth }) => ({
organizationName: auth.settingsStore.organizationName,
}))(withTranslation()(PureAccessRights));
const AccessRights = (props) => {

View File

@ -1,15 +1,9 @@
import React, { Component } from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import { withRouter } from "react-router";
//import i18n from "../../../i18n";
import { I18nextProvider, withTranslation } from "react-i18next";
import styled from "styled-components";
import {
changeAdmins,
getUpdateListAdmin,
fetchPeople,
} from "../../../../../../store/settings/actions";
import {
Text,
Avatar,
@ -24,14 +18,12 @@ import {
RequestLoader,
Loader,
EmptyScreenContainer,
Icons,
} from "asc-web-components";
import { FilterInput, PeopleSelector } from "asc-web-common";
import { getUserRole } from "../../../../../../store/settings/selectors";
import isEmpty from "lodash/isEmpty";
import { createI18N } from "../../../../../../helpers/i18n";
import { inject } from "mobx-react";
import { inject, observer } from "mobx-react";
const i18n = createI18N({
page: "Settings",
@ -351,6 +343,18 @@ class PureAdminsSettings extends Component {
];
};
getUserRole = (user) => {
if (user.isOwner) return "owner";
else if (user.isAdmin) return "admin";
else if (
user.listAdminModules !== undefined &&
user.listAdminModules.includes("people")
)
return "admin";
else if (user.isVisitor) return "guest";
else return "user";
};
render() {
const { t, admins, filter, me, groupsCaption } = this.props;
const {
@ -442,7 +446,7 @@ class PureAdminsSettings extends Component {
const element = (
<Avatar
size="min"
role={getUserRole(user)}
role={this.getUserRole(user)}
userName={user.displayName}
source={user.avatar}
/>
@ -564,21 +568,6 @@ const AdminsSettings = (props) => (
</I18nextProvider>
);
function mapStateToProps(state) {
const { admins, owner, filter } = state.settings.security.accessRight;
const { user: me } = state.auth;
//const groupsCaption = state.auth.settings.customNames.groupsCaption;
return {
admins,
productId: state.auth.modules[0].id,
owner,
filter,
me,
//groupsCaption,
};
}
AdminsSettings.defaultProps = {
admins: [],
productId: "",
@ -591,12 +580,19 @@ AdminsSettings.propTypes = {
owner: PropTypes.object,
};
export default connect(mapStateToProps, {
changeAdmins,
fetchPeople,
getUpdateListAdmin,
});
export default inject(({ auth, setup }) => {
const { admins, owner, filter } = setup.security.accessRight;
const { user: me } = auth.userStore;
inject(({ store }) => ({
groupsCaption: store.settingsStore.customNames.groupsCaption,
}))(withRouter(AdminsSettings));
return {
groupsCaption: auth.settingsStore.customNames.groupsCaption,
changeAdmins: setup.changeAdmins,
fetchPeople: setup.fetchPeople,
getUpdateListAdmin: setup.getUpdateListAdmin,
admins,
productId: auth.moduleStore.modules[0].id,
owner,
filter,
me,
};
})(withRouter(observer(AdminsSettings)));

View File

@ -1,5 +1,4 @@
import React, { Component } from "react";
import { connect } from "react-redux";
import { withRouter } from "react-router";
//import i18n from "../../../i18n";
import { I18nextProvider, withTranslation } from "react-i18next";
@ -135,4 +134,4 @@ const ModulesSettings = (props) => (
</I18nextProvider>
);
export default connect(null, {})(withRouter(ModulesSettings));
export default withRouter(ModulesSettings);

View File

@ -1,11 +1,9 @@
import React, { Component } from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import { withRouter } from "react-router";
//import i18n from "../../../i18n";
import { I18nextProvider, withTranslation } from "react-i18next";
import styled from "styled-components";
import { getPortalOwner } from "../../../../../../store/settings/actions";
import {
Text,
Avatar,
@ -94,10 +92,10 @@ class PureOwnerSettings extends Component {
}
componentDidMount() {
const { owner, getPortalOwner, ownerId } = this.props;
const { owner, getPortalOwner } = this.props;
if (isEmpty(owner, true)) {
getPortalOwner(ownerId)
getPortalOwner()
.catch((error) => {
toastr.error(error);
})
@ -243,19 +241,6 @@ const OwnerSettings = (props) => (
</I18nextProvider>
);
function mapStateToProps(state) {
const { owner } = state.settings.security.accessRight;
const { user: me } = state.auth;
//const groupsCaption = state.auth.settings.customNames.groupsCaption;
return {
//ownerId: state.auth.settings.ownerId,
owner,
me,
//groupsCaption,
};
}
OwnerSettings.defaultProps = {
owner: {},
};
@ -264,11 +249,12 @@ OwnerSettings.propTypes = {
owner: PropTypes.object,
};
export default connect(mapStateToProps, { getPortalOwner })(
inject(({ store }) => {
return {
groupsCaption: store.settingsStore.customNames.groupsCaption,
ownerId: store.settingsStore.ownerId,
};
})(withRouter(OwnerSettings))
);
export default inject(({ auth }) => {
const { customNames, getPortalOwner, owner } = auth.settingsStore;
return {
groupsCaption: customNames.groupsCaption,
getPortalOwner,
owner,
me: auth.userStore.user,
};
})(withRouter(OwnerSettings));

Some files were not shown because too many files have changed in this diff Show More