+
+
+ |
 |
{item.obj_name}
@@ -184,10 +220,11 @@ class ShareAdminUploadLinks extends Component {
constructor(props) {
super(props);
this.state = {
- isCleanInvalidUploadLinksDialogOpen: false,
loading: true,
errorMsg: '',
- items: []
+ items: [],
+ isCleanInvalidUploadLinksDialogOpen: false,
+ isDeleteShareLinksDialogOpen: false
};
}
@@ -241,7 +278,70 @@ class ShareAdminUploadLinks extends Component {
});
};
+ toggleDeleteShareLinksDialog = () => {
+ this.setState({ isDeleteShareLinksDialogOpen: !this.state.isDeleteShareLinksDialogOpen });
+ };
+
+ cancelSelectAllLinks = () => {
+ this.toggleSelectAllLinks(false);
+ };
+
+ toggleSelectAllLinks = (isSelected) => {
+ const { items: links } = this.state;
+ this.setState({
+ items: links.map(item => {
+ item.isSelected = isSelected;
+ return item;
+ })
+ });
+ };
+
+ toggleSelectLink = (link, isSelected) => {
+ const { items: links } = this.state;
+ this.setState({
+ items: links.map(item => {
+ if (item.token == link.token) {
+ item.isSelected = isSelected;
+ }
+ return item;
+ })
+ });
+ };
+
+ deleteShareLinks = () => {
+ const { items: shareLinks } = this.state;
+ const tokens = shareLinks.filter(item => item.isSelected).map(link => link.token);
+ repoShareAdminAPI.deleteUploadLinks(tokens).then(res => {
+ const { success, failed } = res.data;
+ if (success.length) {
+ let newShareLinkList = shareLinks.filter(shareLink => {
+ return !success.some(deletedShareLink => {
+ return deletedShareLink.token == shareLink.token;
+ });
+ });
+ this.setState({
+ items: newShareLinkList
+ });
+ const length = success.length;
+ const msg = length == 1 ?
+ gettext('Successfully deleted 1 upload link') :
+ gettext('Successfully deleted {number_placeholder} upload links')
+ .replace('{number_placeholder}', length);
+ toaster.success(msg);
+ }
+ failed.forEach(item => {
+ const msg = `${item.token}: ${item.error_msg}`;
+ toaster.danger(msg);
+ });
+ }).catch((error) => {
+ let errMessage = Utils.getErrorMsg(error);
+ toaster.danger(errMessage);
+ });
+ };
+
render() {
+ const { items } = this.state;
+ const selectedLinks = items.filter(item => item.isSelected);
return (
@@ -260,6 +360,13 @@ class ShareAdminUploadLinks extends Component {
+
+ {selectedLinks.length > 0 &&
+
+
+
+
+ }
@@ -280,6 +389,15 @@ class ShareAdminUploadLinks extends Component {
toggleDialog={this.toggleCleanInvalidUploadLinksDialog}
/>
}
+ {this.state.isDeleteShareLinksDialogOpen && (
+
+ )}
);
}
|