Commit for #546

ClΓ‘udio created

Change summary

webui/src/components/CloseBugButton/CloseBug.graphql   |  8 +
webui/src/components/CloseBugButton/CloseBugButton.tsx | 49 ++++++++++++
webui/src/layout/CommentInput/CommentInput.tsx         |  4 
webui/src/pages/bug/CommentForm.tsx                    |  3 
4 files changed, 60 insertions(+), 4 deletions(-)

Detailed changes

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;

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 = {

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"