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?')}
+
+
+ {gettext('Cancel')}
+ {gettext('Leave')}
+
+
+ );
+ }
+}
+
+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 &&
+
+ }
);
}