Web: Files: added sharing api
This commit is contained in:
parent
de55454c84
commit
f97e690773
@ -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
|
||||
? {
|
||||
|
@ -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 = () => {
|
||||
|
@ -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) {
|
||||
|
@ -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 });
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user