diff --git a/frontend/src/components/dialog/leave-group-dialog.js b/frontend/src/components/dialog/leave-group-dialog.js new file mode 100644 index 0000000000..62989fb2eb --- /dev/null +++ b/frontend/src/components/dialog/leave-group-dialog.js @@ -0,0 +1,44 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { gettext, username } from '../../utils/constants'; +import { seafileAPI } from '../../utils/seafile-api'; +import { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap'; + +class LeaveGroupDialog extends React.Component { + + constructor(props) { + super(props); + } + + dismissGroup = () => { + let that = this; + seafileAPI.quitGroup(this.props.groupID, username).then((res)=> { + that.props.onGroupChanged(); + }); + } + + render() { + return( + + {gettext('Leave Group')} + + {gettext('Really want to leave this group?')} + + + + + + + ); + } +} + +const LeaveGroupDialogPropTypes = { + toggleLeaveGroupDialog: PropTypes.func.isRequired, + groupID: PropTypes.string.isRequired, + onGroupChanged: PropTypes.func.isRequired, +}; + +LeaveGroupDialog.propTypes = LeaveGroupDialogPropTypes; + +export default LeaveGroupDialog; diff --git a/frontend/src/pages/groups/group-view.js b/frontend/src/pages/groups/group-view.js index b1ee881984..b6b7f7164c 100644 --- a/frontend/src/pages/groups/group-view.js +++ b/frontend/src/pages/groups/group-view.js @@ -20,6 +20,7 @@ import RenameGroupDialog from '../../components/dialog/rename-group-dialog'; import TransferGroupDialog from '../../components/dialog/transfer-group-dialog'; // import ImportMembersDialog from '../../components/dialog/import-members-dialog'; import ManageMembersDialog from '../../components/dialog/manage-members-dialog'; +import LeaveGroupDialog from '../../components/dialog/leave-group-dialog'; import SharedRepoListView from '../../components/shared-repo-list-view/shared-repo-list-view'; import LibDetail from '../../components/dirent-detail/lib-details'; @@ -60,6 +61,7 @@ class GroupView extends React.Component { showManageMembersDialog: false, groupMembers: [], isShowDetails: false, + showLeaveGroupDialog: false, }; } @@ -307,6 +309,13 @@ class GroupView extends React.Component { }); } + toggleLeaveGroupDialog = () => { + this.setState({ + showLeaveGroupDialog: !this.state.showLeaveGroupDialog, + showGroupDropdown: false, + }); + } + listGroupMembers = () => { seafileAPI.listGroupMembers(this.props.groupID).then((res) => { this.setState({ @@ -407,7 +416,7 @@ class GroupView extends React.Component { )}
- { (isShowSettingIcon && this.state.isStaff) && + { (isShowSettingIcon) && @@ -419,6 +428,7 @@ class GroupView extends React.Component { onClick={this.toggleGroupDropdown}>
+ {(this.state.isStaff || this.state.isOwner) && + } + {(this.state.isStaff || this.state.isOwner) && + } { this.state.isOwner && } + {/* gourp owner only can dissmiss group, admin could not quit, department member could not quit */} + {(!this.state.isOwner && !this.state.isStaff && !isDepartmentGroup) && + + }
@@ -557,6 +576,13 @@ class GroupView extends React.Component { isOwner={this.state.isOwner} /> } + {this.state.showLeaveGroupDialog && + + } ); }