diff options
author | Sascha <GlancingMind@outlook.com> | 2021-05-25 14:07:27 +0200 |
---|---|---|
committer | Sascha <GlancingMind@outlook.com> | 2021-05-25 14:14:57 +0200 |
commit | 098bcd0c1f26d0896e7ede3edb4040b01bc3126a (patch) | |
tree | c651ca503969df4c2146cb12c705c2c5c7bef661 /webui/src/components/CloseBugWithCommentButton/CloseBugWithCommentButton.tsx | |
parent | 3d4385483e1a2e43814e4b3d83221f1a3477cb88 (diff) | |
download | git-bug-098bcd0c1f26d0896e7ede3edb4040b01bc3126a.tar.gz |
WebUI: Add comment-and-close of a bug in one step
When a user has some text entered in the comment field, the close bug
button will change to "Close bug with comment". This way the user does
not have to comment and close a bug in two separate steps.
Diffstat (limited to 'webui/src/components/CloseBugWithCommentButton/CloseBugWithCommentButton.tsx')
-rw-r--r-- | webui/src/components/CloseBugWithCommentButton/CloseBugWithCommentButton.tsx | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/webui/src/components/CloseBugWithCommentButton/CloseBugWithCommentButton.tsx b/webui/src/components/CloseBugWithCommentButton/CloseBugWithCommentButton.tsx new file mode 100644 index 00000000..1d713f88 --- /dev/null +++ b/webui/src/components/CloseBugWithCommentButton/CloseBugWithCommentButton.tsx @@ -0,0 +1,69 @@ +import React from 'react'; + +import Button from '@material-ui/core/Button'; +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; +} + +function CloseBugWithCommentButton({ bug, comment }: 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, + }); + } + + if (loading) return <div>Loading...</div>; + 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; |