Web: Files: fixed update of row after change of file owner

This commit is contained in:
Nikita Gopienko 2020-12-16 11:46:45 +03:00
parent cbb0c75492
commit f4b41b5111
2 changed files with 43 additions and 5 deletions

View File

@ -19,6 +19,8 @@ import {
setShareFiles, setShareFiles,
setSharingPanelVisible, setSharingPanelVisible,
setIsLoading, setIsLoading,
setFiles,
setFolders,
} from "../../../store/files/actions"; } from "../../../store/files/actions";
import { import {
getAccessOption, getAccessOption,
@ -27,6 +29,8 @@ import {
getSharePanelVisible, getSharePanelVisible,
getCanShareOwnerChange, getCanShareOwnerChange,
getIsLoading, getIsLoading,
getFiles,
getFolders,
} from "../../../store/files/selectors"; } from "../../../store/files/selectors";
import { import {
StyledAsidePanel, StyledAsidePanel,
@ -99,6 +103,27 @@ class SharingPanelComponent extends React.Component {
}); });
}; };
updateRowData = (newRowData) => {
const { files, folders, setFiles, setFolders } = this.props;
for (let item of newRowData) {
if (!item.fileExst && item.foldersCount) {
let folderIndex = folders.findIndex((x) => x.id === item.id);
if (folderIndex !== -1) {
folders[folderIndex] = item;
}
} else {
let fileIndex = files.findIndex((x) => x.id === item.id);
if (fileIndex !== -1) {
files[fileIndex] = item;
}
}
}
setFiles(files);
setFolders(folders);
};
onSaveClick = () => { onSaveClick = () => {
const { const {
baseShareData, baseShareData,
@ -124,7 +149,7 @@ class SharingPanelComponent extends React.Component {
(baseItem && (baseItem &&
baseItem.access !== item.access && baseItem.access !== item.access &&
!item.sharedTo.shareLink) || !item.sharedTo.shareLink) ||
!baseItem (!item.isOwner && !baseItem)
) { ) {
share.push({ shareTo: item.sharedTo.id, access: item.access }); share.push({ shareTo: item.sharedTo.id, access: item.access });
} }
@ -168,10 +193,15 @@ class SharingPanelComponent extends React.Component {
externalAccess, externalAccess,
ownerId ownerId
) )
.then((res) => {
if (ownerId) {
this.updateRowData(res[0]);
}
})
.catch((err) => toastr.error(err)) .catch((err) => toastr.error(err))
.finally(() => { .finally(() => {
this.onClose();
setIsLoading(false); setIsLoading(false);
this.onClose();
}); });
}; };
@ -244,7 +274,7 @@ class SharingPanelComponent extends React.Component {
const accessOptions = getAccessOption(selection); const accessOptions = getAccessOption(selection);
const externalAccessOptions = getExternalAccessOption(selection); const externalAccessOptions = getExternalAccessOption(selection);
const filesOwner = shareDataItems.find((x) => x.isOwner); const filesOwner = shareDataItems.find((x) => x.isOwner);
const filesOwnerId = filesOwner ? filesOwner.id : null; const filesOwnerId = filesOwner ? filesOwner.sharedTo.id : null;
this.setState({ this.setState({
baseShareData, baseShareData,
@ -530,10 +560,14 @@ const mapStateToProps = (state) => {
sharingPanelVisible: getSharePanelVisible(state), sharingPanelVisible: getSharePanelVisible(state),
canShareOwnerChange: getCanShareOwnerChange(state), canShareOwnerChange: getCanShareOwnerChange(state),
isLoading: getIsLoading(state), isLoading: getIsLoading(state),
files: getFiles(state),
folders: getFolders(state),
}; };
}; };
export default connect(mapStateToProps, { export default connect(mapStateToProps, {
setSharingPanelVisible, setSharingPanelVisible,
setIsLoading, setIsLoading,
setFiles,
setFolders,
})(withRouter(SharingPanel)); })(withRouter(SharingPanel));

View File

@ -561,10 +561,14 @@ export function setShareFiles(
? [files.setFileOwner(folderIds, fileIds, ownerId)] ? [files.setFileOwner(folderIds, fileIds, ownerId)]
: []; : [];
const shareRequest = !!share.length
? [files.setShareFiles(fileIds, folderIds, share, notify, sharingMessage)]
: [];
const requests = [ const requests = [
files.setShareFiles(fileIds, folderIds, share, notify, sharingMessage),
...externalAccessRequest,
...ownerChangeRequest, ...ownerChangeRequest,
...shareRequest,
...externalAccessRequest,
]; ];
return axios.all(requests); return axios.all(requests);