aboutsummaryrefslogtreecommitdiffstats
path: root/webui/src/components/CloseBugWithCommentButton/index.tsx
diff options
context:
space:
mode:
authorSascha <GlancingMind@outlook.com>2021-05-25 17:31:28 +0200
committerSascha <GlancingMind@outlook.com>2021-05-26 12:52:55 +0200
commite867663bf01841684da6c74a7bcac478cf99655a (patch)
tree6e9a55cd1ae661d4da6376d544c22593a19369d4 /webui/src/components/CloseBugWithCommentButton/index.tsx
parentdcf4a49840f406bf13e17febd144039372ebb1bc (diff)
downloadgit-bug-e867663bf01841684da6c74a7bcac478cf99655a.tar.gz
Rename default component filename to index.tsx
This reduces duplicate filepath components and with it the overall import filepath length.
Diffstat (limited to 'webui/src/components/CloseBugWithCommentButton/index.tsx')
-rw-r--r--webui/src/components/CloseBugWithCommentButton/index.tsx75
1 files changed, 75 insertions, 0 deletions
diff --git a/webui/src/components/CloseBugWithCommentButton/index.tsx b/webui/src/components/CloseBugWithCommentButton/index.tsx
new file mode 100644
index 00000000..a0fefa4a
--- /dev/null
+++ b/webui/src/components/CloseBugWithCommentButton/index.tsx
@@ -0,0 +1,75 @@
+import React from 'react';
+
+import Button from '@material-ui/core/Button';
+import CircularProgress from '@material-ui/core/CircularProgress';
+import { makeStyles, Theme } from '@material-ui/core/styles';
+import ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';
+
+import { BugFragment } from 'src/pages/bug/Bug.generated';
+import { TimelineDocument } from 'src/pages/bug/TimelineQuery.generated';
+
+import { useAddCommentAndCloseBugMutation } from './CloseBugWithComment.generated';
+
+const useStyles = makeStyles((theme: Theme) => ({
+ closeIssueIcon: {
+ color: theme.palette.secondary.dark,
+ paddingTop: '0.1rem',
+ },
+}));
+
+interface Props {
+ bug: BugFragment;
+ comment: string;
+ postClick?: () => void;
+}
+
+function CloseBugWithCommentButton({ bug, comment, postClick }: Props) {
+ const [
+ addCommentAndCloseBug,
+ { loading, error },
+ ] = useAddCommentAndCloseBugMutation();
+ const classes = useStyles();
+
+ function addCommentAndCloseBugAction() {
+ addCommentAndCloseBug({
+ variables: {
+ input: {
+ prefix: bug.id,
+ message: comment,
+ },
+ },
+ refetchQueries: [
+ // TODO: update the cache instead of refetching
+ {
+ query: TimelineDocument,
+ variables: {
+ id: bug.id,
+ first: 100,
+ },
+ },
+ ],
+ awaitRefetchQueries: true,
+ }).then(() => {
+ if (postClick) {
+ postClick();
+ }
+ });
+ }
+
+ if (loading) return <CircularProgress />;
+ if (error) return <div>Error</div>;
+
+ return (
+ <div>
+ <Button
+ variant="contained"
+ onClick={() => addCommentAndCloseBugAction()}
+ startIcon={<ErrorOutlineIcon className={classes.closeIssueIcon} />}
+ >
+ Close bug with comment
+ </Button>
+ </div>
+ );
+}
+
+export default CloseBugWithCommentButton;