Web: Files: added sharing api

This commit is contained in:
Nikita Gopienko 2020-05-15 18:47:35 +03:00
parent de55454c84
commit f97e690773
4 changed files with 38 additions and 37 deletions

View File

@ -81,8 +81,14 @@ class SectionBodyContent extends React.Component {
}
} */
shouldComponentUpdate(nextProps) {
return !isEqual(this.props, nextProps);
shouldComponentUpdate(nextProps, nextState) {
if(this.state.showSharingPanel !== nextState.showSharingPanel) {
return true;
}
if(!isEqual(this.props, nextProps)) {
return true;
}
return false;
}
onClickRename = (item) => {
@ -192,7 +198,7 @@ class SectionBodyContent extends React.Component {
key: "sharing-settings",
label: "Sharing settings",
onClick: this.onClickShare.bind(this, item),
disabled: item.access !== 1
disabled: item.access !== 1 && item.access !== 0
},
isFile
? {

View File

@ -20,11 +20,7 @@ import { withRouter } from "react-router";
import { withTranslation } from "react-i18next";
import { utils as commonUtils, constants, api } from "asc-web-common";
import i18n from "./i18n";
import {
setSharedFolders,
setSharedFiles,
getShareUsers
} from "../../../store/files/actions";
import { getShareUsers, setShareFiles } from "../../../store/files/actions";
import { getAccessOption } from '../../../store/files/selectors';
import {
StyledSharingPanel,
@ -80,28 +76,34 @@ class SharingPanelComponent extends React.Component {
//onKeyClick = () => console.log("onKeyClick");
onSaveClick = () => {
toastr.success("onSaveClick");
const { baseShareData, isNotifyUsers, message } = this.state;
const { shareDataItems, selectedItems, onClose } = this.props;
const {
baseShareData,
isNotifyUsers,
message,
shareDataItems,
} = this.state;
const { selectedItems, onClose } = this.props;
const folderIds = [];
const fileIds = [];
const shareTo = [];
const access = [];
const share = [];
for (let item of shareDataItems) {
const baseItem = baseShareData.find((x) => x.id === item.id);
if (
(baseItem && baseItem.rights.rights !== item.rights.rights) ||
!baseItem
) {
shareTo.push(item.id);
access.push(item.rights.accessNumber);
share.push({ shareTo: item.id, access: item.rights.accessNumber });
}
}
const notify = isNotifyUsers;
for (let item of baseShareData) {
const baseItem = shareDataItems.find((x) => x.id === item.id);
if (!baseItem) {
share.push({ shareTo: item.id, access: 0});
}
}
for (let item of selectedItems) {
if (item.fileExst) {
@ -111,12 +113,9 @@ class SharingPanelComponent extends React.Component {
}
}
/*folderIds.length > 0 &&
setSharedFolders(folderIds, shareTo, access, notify, message);
fileIds.length > 0 &&
setSharedFiles(fileIds, shareTo, access, notify, message);*/
onClose();
setShareFiles(folderIds, fileIds, share, isNotifyUsers, message)
.catch((err) => toastr.error(err))
.finally(() => onClose());
};
onFullAccessClick = () => {

View File

@ -306,20 +306,17 @@ export function deleteFolder(folderId, deleteAfter, immediately) {
}
}
export function setSharedFolders(folderIds, shareTo, access, notify, sharingMessage) {
const requests = folderIds.map((id) =>
files.setShareFolder(id, shareTo, access, notify, sharingMessage)
export function setShareFiles(folderIds, fileIds, share, notify, sharingMessage) {
const foldersRequests = folderIds.map((id) =>
files.setShareFolder(id, share, notify, sharingMessage)
);
return axios.all(requests).then((res) => res);
}
export function setSharedFiles(fileId, shareTo, access, notify, sharingMessage) {
const requests = fileId.map((id) =>
files.setShareFiles(id, shareTo, access, notify, sharingMessage)
const filesRequests = fileIds.map((id) =>
files.setShareFiles(id, share, notify, sharingMessage)
);
return axios.all(requests).then((res) => res);
const requests = [...foldersRequests, ...filesRequests];
return axios.all(requests);
}
export function getShareUsers(folderIds, fileIds) {

View File

@ -303,15 +303,14 @@ export function getShareFiles(fileId) {
});
}
export function setShareFolder(folderId, shareTo, access, notify, sharingMessage) {
const share = [shareTo, access];
export function setShareFolder(folderId, share, notify, sharingMessage) {
const data = { share, notify, sharingMessage };
return request({ method: "put", url: `/files/folder/${folderId}/share`, data });
}
export function setShareFiles(fileId, shareTo, access, notify, sharingMessage) {
const share = [shareTo, access];
export function setShareFiles(fileId, share, notify, sharingMessage) {
const data = { share, notify, sharingMessage };
console.log("data", data);
return request({ method: "put", url: `/files/file/${fileId}/share`, data });
}