aboutsummaryrefslogtreecommitdiffstats
path: root/webui/src
diff options
context:
space:
mode:
Diffstat (limited to 'webui/src')
-rw-r--r--webui/src/components/CloseBugButton/CloseBug.graphql8
-rw-r--r--webui/src/components/CloseBugButton/CloseBugButton.tsx49
-rw-r--r--webui/src/layout/CommentInput/CommentInput.tsx4
-rw-r--r--webui/src/pages/bug/CommentForm.tsx3
4 files changed, 60 insertions, 4 deletions
diff --git a/webui/src/components/CloseBugButton/CloseBug.graphql b/webui/src/components/CloseBugButton/CloseBug.graphql
new file mode 100644
index 00000000..b134cc04
--- /dev/null
+++ b/webui/src/components/CloseBugButton/CloseBug.graphql
@@ -0,0 +1,8 @@
+# Write your query or mutation here
+mutation closeBug($input: CloseBugInput!) {
+ closeBug(input: $input) {
+ bug {
+ humanId
+ }
+ }
+} \ No newline at end of file
diff --git a/webui/src/components/CloseBugButton/CloseBugButton.tsx b/webui/src/components/CloseBugButton/CloseBugButton.tsx
new file mode 100644
index 00000000..9aca6fdd
--- /dev/null
+++ b/webui/src/components/CloseBugButton/CloseBugButton.tsx
@@ -0,0 +1,49 @@
+import React from 'react';
+
+import Button from '@material-ui/core/Button';
+
+import { TimelineDocument } from 'src/pages/bug/TimelineQuery.generated';
+
+import { useCloseBugMutation } from './CloseBug.generated';
+
+interface Props {
+ bugId: string;
+}
+
+function CloseBugButton({ bugId }: Props) {
+ const [closeBug, { loading, error }] = useCloseBugMutation();
+
+ function closeBugAction() {
+ closeBug({
+ variables: {
+ input: {
+ prefix: bugId,
+ },
+ },
+ refetchQueries: [
+ // TODO: update the cache instead of refetching
+ {
+ query: TimelineDocument,
+ variables: {
+ id: bugId,
+ first: 100,
+ },
+ },
+ ],
+ awaitRefetchQueries: true,
+ });
+ }
+
+ if (loading) return <div>Loading...</div>;
+ if (error) return <div>Error</div>;
+
+ return (
+ <div>
+ <Button variant="contained" onClick={() => closeBugAction()}>
+ Close issue
+ </Button>
+ </div>
+ );
+}
+
+export default CloseBugButton;
diff --git a/webui/src/layout/CommentInput/CommentInput.tsx b/webui/src/layout/CommentInput/CommentInput.tsx
index 8a91baf6..86cc7dbb 100644
--- a/webui/src/layout/CommentInput/CommentInput.tsx
+++ b/webui/src/layout/CommentInput/CommentInput.tsx
@@ -23,10 +23,6 @@ const useStyles = makeStyles((theme) => ({
borderBottom: `solid 3px ${theme.palette.grey['200']}`,
minHeight: '5rem',
},
- actions: {
- display: 'flex',
- justifyContent: 'flex-end',
- },
}));
type TabPanelProps = {
diff --git a/webui/src/pages/bug/CommentForm.tsx b/webui/src/pages/bug/CommentForm.tsx
index c39f30c2..d0935e1e 100644
--- a/webui/src/pages/bug/CommentForm.tsx
+++ b/webui/src/pages/bug/CommentForm.tsx
@@ -5,6 +5,7 @@ import Paper from '@material-ui/core/Paper';
import { makeStyles, Theme } from '@material-ui/core/styles';
import CommentInput from '../../layout/CommentInput/CommentInput';
+import CloseBugButton from 'src/components/CloseBugButton/CloseBugButton';
import { useAddCommentMutation } from './CommentForm.generated';
import { TimelineDocument } from './TimelineQuery.generated';
@@ -28,6 +29,7 @@ const useStyles = makeStyles<Theme, StyleProps>((theme) => ({
justifyContent: 'flex-end',
},
greenButton: {
+ marginLeft: '8px',
backgroundColor: '#2ea44fd9',
color: '#fff',
'&:hover': {
@@ -89,6 +91,7 @@ function CommentForm({ bugId }: Props) {
onChange={(comment: string) => setIssueComment(comment)}
/>
<div className={classes.actions}>
+ <CloseBugButton bugId={bugId} />
<Button
className={classes.greenButton}
variant="contained"