diff --git a/packages/asc-web-components/button/index.js b/packages/asc-web-components/button/index.js index b68bb12f83..c7fc16e13e 100644 --- a/packages/asc-web-components/button/index.js +++ b/packages/asc-web-components/button/index.js @@ -10,7 +10,7 @@ const Icon = ({ size, primary, icon, isHovered }) => (
{icon && React.cloneElement(icon, { - isfill: true, + //isfill: true, size: size === "large" ? "large" : size === "big" ? "medium" : "small", color: icon.props.color ? isHovered diff --git a/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/FilesRowContent.js b/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/FilesRowContent.js index 1ca167c37d..c8e79b5c95 100644 --- a/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/FilesRowContent.js +++ b/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/FilesRowContent.js @@ -115,8 +115,8 @@ class FilesRowContent extends React.PureComponent { super(props); let titleWithoutExt = getTitleWithoutExst(props.item); - if (props.fileAction.id === -1) { - titleWithoutExt = this.getDefaultName(props.fileAction.extension); + if (props.fileActionId === -1) { + titleWithoutExt = this.getDefaultName(props.fileActionExt); } this.state = { @@ -129,70 +129,18 @@ class FilesRowContent extends React.PureComponent { }; } - onSelectItem = (item) => { - const { selected, setSelected, setSelection } = this.props; - selected === "close" && setSelected("none"); - setSelection([item]); - }; - - //TODO: move to actions, used in files row content and tile - onEditComplete = (id, isFolder) => { - const { - selectedFolderId, - fileAction, - filter, - folders, - files, - treeFolders, - setTreeFolders, - setIsLoading, - fetchFiles, - setAction, - } = this.props; - const selectedItem = this.props.item; - const items = [...folders, ...files]; - const item = items.find((o) => o.id === id && !o.fileExst); //TODO maybe need files find and folders find, not at one function? - if ( - fileAction.type === FileAction.Create || - fileAction.type === FileAction.Rename - ) { - setIsLoading(true); - fetchFiles(selectedFolderId, filter) - .then((data) => { - const newItem = (item && item.id) === -1 ? null : item; //TODO not add new folders? - if (isFolder) { - const path = data.selectedFolder.pathParts; - const newTreeFolders = treeFolders; - const folders = data.selectedFolder.folders; - loopTreeFolders(path, newTreeFolders, folders, null, newItem); - setTreeFolders(newTreeFolders); - } - }) - .finally(() => { - setAction({ type: null, id: null, extension: null }); - setIsLoading(false); - - fileAction.type === FileAction.Rename && - this.onSelectItem(selectedItem); - }); - } - - //this.setState({ editingId: null }, () => { - // setAction({type: null}); - //}); - }; - completeAction = (id) => { - this.onEditComplete(id, !this.props.item.fileExst); + const { item } = this.props; + this.props.editCompleteAction(id, !item.fileExst, /* item */); }; - updateItem = (e) => { + updateItem = () => { const { - fileAction, updateFile, renameFolder, item, setIsLoading, + fileActionId, } = this.props; const { itemTitle } = this.state; @@ -203,15 +151,15 @@ class FilesRowContent extends React.PureComponent { this.setState({ itemTitle: originalTitle, }); - return this.completeAction(fileAction.id); + return this.completeAction(fileActionId); } item.fileExst - ? updateFile(fileAction.id, itemTitle) - .then(() => this.completeAction(fileAction.id)) + ? updateFile(fileActionId, itemTitle) + .then(() => this.completeAction(fileActionId)) .finally(() => setIsLoading(false)) - : renameFolder(fileAction.id, itemTitle) - .then(() => this.completeAction(fileAction.id)) + : renameFolder(fileActionId, itemTitle) + .then(() => this.completeAction(fileActionId)) .finally(() => setIsLoading(false)); }; @@ -292,7 +240,7 @@ class FilesRowContent extends React.PureComponent { }; // componentDidUpdate(prevProps) { - // const { fileAction, item, newRowItems, setNewRowItems } = this.props; + // const { item, newRowItems, setNewRowItems } = this.props; // const itemId = item.id.toString(); // if (newRowItems.length && newRowItems.includes(itemId)) { @@ -303,8 +251,8 @@ class FilesRowContent extends React.PureComponent { // } // if (fileAction) { - // if (fileAction.id !== prevProps.fileAction.id) { - // this.setState({ editingId: fileAction.id }); + // if (fileActionId !== prevProps.fileActionId) { + // this.setState({ editingId: fileActionId }); // } // } // } @@ -330,7 +278,7 @@ class FilesRowContent extends React.PureComponent { }; onClickUpdateItem = (e) => { - this.props.fileAction.type === FileAction.Create + this.props.fileActionType === FileAction.Create ? this.createItem(e) : this.updateItem(e); }; @@ -546,14 +494,14 @@ class FilesRowContent extends React.PureComponent { const { t, item, - fileAction, isTrashFolder, - folders, isLoading, isMobile, canWebEdit, /* canConvert,*/ sectionWidth, + fileActionId, + fileActionExt, } = this.props; const { itemTitle, @@ -585,7 +533,7 @@ class FilesRowContent extends React.PureComponent { const accessToEdit = item.access === ShareAccessRights.FullAccess || item.access === ShareAccessRights.None; // TODO: fix access type for owner (now - None) - const isEdit = id === fileAction.id && fileExst === fileAction.extension; + const isEdit = id === fileActionId && fileExst === fileActionExt; const linkStyles = isTrashFolder || window.innerWidth <= 1024 @@ -618,7 +566,6 @@ class FilesRowContent extends React.PureComponent { visible={showNewFilesPanel} onClose={this.onShowNewFilesPanel} folderId={newFolderId} - folders={folders} /> )} { - const { - replaceFileStream, - getEncryptionAccess, - setEncryptionAccess, - } = auth; + const { replaceFileStream, setEncryptionAccess } = auth; const { homepage, culture, isDesktopClient } = auth.settingsStore; const { setIsLoading, isLoading } = initFilesStore; const { secondaryProgressDataStore } = uploadDataStore; @@ -836,8 +780,6 @@ export default inject( } = formatsStore; const { - files, - folders, fetchFiles, filter, setNewRowItems, @@ -847,9 +789,6 @@ export default inject( renameFolder, createFolder, openDocEditor, - selected, - setSelected, - setSelection } = filesStore; const { @@ -861,9 +800,12 @@ export default inject( addExpandedKeys, } = treeFoldersStore; - const { type, extension, id, setAction } = filesStore.fileActionStore; + const { + type: fileActionType, + extension: fileActionExt, + id: fileActionId, + } = filesStore.fileActionStore; - const fileAction = { type, extension, id }; const { setSecondaryProgressBarData, clearSecondaryProgressData, @@ -880,9 +822,9 @@ export default inject( homepage, viewer: auth.userStore.user, culture, - fileAction, - files, - folders, + fileActionId, + fileActionType, + fileActionExt, selectedFolderId: selectedFolderStore.id, selectedFolderPathParts: selectedFolderStore.pathParts, newItems: selectedFolderStore.new, @@ -899,7 +841,6 @@ export default inject( isSound, newRowItems, expandedKeys, - selected, setIsLoading, fetchFiles, @@ -912,13 +853,10 @@ export default inject( updateFile, renameFolder, replaceFileStream, - getEncryptionAccess, setEncryptionAccess, addExpandedKeys, openDocEditor, - setAction, - setSelected, - setSelection + editCompleteAction: filesActionsStore.editCompleteAction, }; } )(withRouter(withTranslation("Home")(observer(FilesRowContent)))); diff --git a/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/SimpleFilesRow.js b/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/SimpleFilesRow.js index bbbcf7252f..90905eab14 100644 --- a/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/SimpleFilesRow.js +++ b/products/ASC.Files/Client/src/components/pages/Home/Section/Body/FilesRow/SimpleFilesRow.js @@ -10,6 +10,7 @@ import Row from "@appserver/components/row"; import FilesRowContent from "./FilesRowContent"; import history from "@appserver/common/history"; import toastr from "@appserver/components/toast"; +import { FileAction } from "@appserver/common/constants"; import { lockFile, finalizeVersion } from "@appserver/common/api/files"; //TODO: move to actions @@ -108,7 +109,7 @@ const SimpleFilesRow = (props) => { removeItemFromFavorite, getFileInfo, fetchFavoritesFolder, - actionId + actionId, } = props; const { diff --git a/products/ASC.Files/Client/src/store/FilesActionsStore.js b/products/ASC.Files/Client/src/store/FilesActionsStore.js index 5d100ec5c7..bf1218f59b 100644 --- a/products/ASC.Files/Client/src/store/FilesActionsStore.js +++ b/products/ASC.Files/Client/src/store/FilesActionsStore.js @@ -1,15 +1,15 @@ import { makeAutoObservable } from "mobx"; -import store from "studio/store"; -import dialogsStore from "./DialogsStore"; import uploadDataStore from "./UploadDataStore"; import treeFoldersStore from "./TreeFoldersStore"; import filesStore from "./FilesStore"; import selectedFolderStore from "./SelectedFolderStore"; +import initFilesStore from "./InitFilesStore"; + import { removeFiles, getProgress } from "@appserver/common/api/files"; +import { FileAction } from "@appserver/common/constants"; import { TIMEOUT } from "../helpers/constants"; import { loopTreeFolders } from "../helpers/files-helpers"; -const { confirmDelete } = store.auth.settingsStore; const { secondaryProgressDataStore } = uploadDataStore; class FilesActionStore { @@ -18,10 +18,51 @@ class FilesActionStore { } deleteAction = (translations) => { - if (confirmDelete) { - dialogsStore.setDeleteDialogVisible(false); - } else { - return this.onDelete(translations); + const { + setSecondaryProgressBarData, + clearSecondaryProgressData, + } = secondaryProgressDataStore; + const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore; + const { selection } = filesStore; + + const deleteAfter = true; //Delete after finished TODO: get from settings + const immediately = isRecycleBinFolder || isPrivacyFolder ? true : false; //Don't move to the Recycle Bin + + const folderIds = []; + const fileIds = []; + + let i = 0; + while (selection.length !== i) { + if (selection[i].fileExst) { + fileIds.push(selection[i].id); + } else { + folderIds.push(selection[i].id); + } + i++; + } + + if (folderIds.length || fileIds.length) { + setSecondaryProgressBarData({ + icon: "trash", + visible: true, + label: translations.deleteOperation, + percent: 0, + alert: false, + }); + + removeFiles(folderIds, fileIds, deleteAfter, immediately) + .then((res) => { + const id = res[0] && res[0].id ? res[0].id : null; + this.loopDeleteOperation(id, translations); + }) + .catch((err) => { + setSecondaryProgressBarData({ + visible: true, + alert: true, + }); + //toastr.error(err); + setTimeout(() => clearSecondaryProgressData(), TIMEOUT); + }); } }; @@ -80,55 +121,6 @@ class FilesActionStore { }); }; - onDelete = (translations) => { - const { - setSecondaryProgressBarData, - clearSecondaryProgressData, - } = secondaryProgressDataStore; - const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore; - const { selection } = filesStore; - - const deleteAfter = true; //Delete after finished TODO: get from settings - const immediately = isRecycleBinFolder || isPrivacyFolder ? true : false; //Don't move to the Recycle Bin - - const folderIds = []; - const fileIds = []; - - let i = 0; - while (selection.length !== i) { - if (selection[i].fileExst) { - fileIds.push(selection[i].id); - } else { - folderIds.push(selection[i].id); - } - i++; - } - - if (folderIds.length || fileIds.length) { - setSecondaryProgressBarData({ - icon: "trash", - visible: true, - label: translations.deleteOperation, - percent: 0, - alert: false, - }); - - removeFiles(folderIds, fileIds, deleteAfter, immediately) - .then((res) => { - const id = res[0] && res[0].id ? res[0].id : null; - this.loopDeleteOperation(id, translations); - }) - .catch((err) => { - setSecondaryProgressBarData({ - visible: true, - alert: true, - }); - //toastr.error(err); - setTimeout(() => clearSecondaryProgressData(), TIMEOUT); - }); - } - }; - getDownloadProgress = (data, label) => { const url = data.url; @@ -163,6 +155,47 @@ class FilesActionStore { setTimeout(() => clearSecondaryProgressData(), TIMEOUT); }); }; + + editCompleteAction = (id, isFolder /* selectedItem */) => { + const { fetchFiles, filter, folders, files, fileActionStore } = filesStore; + const { type, setAction } = fileActionStore; + const { treeFolders, setTreeFolders } = treeFoldersStore; + const { setIsLoading } = initFilesStore; + + const items = [...folders, ...files]; + const item = items.find((o) => o.id === id && !o.fileExst); //TODO: maybe need files find and folders find, not at one function? + if (type === FileAction.Create || type === FileAction.Rename) { + setIsLoading(true); + fetchFiles(selectedFolderStore.id, filter) + .then((data) => { + const newItem = (item && item.id) === -1 ? null : item; //TODO: not add new folders? + if (isFolder) { + const path = data.selectedFolder.pathParts; + const newTreeFolders = treeFolders; + const folders = data.selectedFolder.folders; + loopTreeFolders(path, newTreeFolders, folders, null, newItem); + setTreeFolders(newTreeFolders); + } + }) + .finally(() => { + setAction({ type: null, id: null, extension: null }); + setIsLoading(false); + + //uncomment if need to select item + //type === FileAction.Rename && this.onSelectItem(selectedItem); + + // onSelectItem = (item) => { + // const { selected, setSelected, setSelection } = this.props; + // selected === "close" && setSelected("none"); + // setSelection([item]); + // }; + }); + } + + //this.setState({ editingId: null }, () => { + // setAction({type: null}); + //}); + }; } export default new FilesActionStore();