diff options
author | Sascha <GlancingMind@outlook.com> | 2021-05-25 17:20:36 +0200 |
---|---|---|
committer | Sascha <GlancingMind@outlook.com> | 2021-05-26 12:52:07 +0200 |
commit | 6f6831e18d08773540a4c897866985c0bf950de5 (patch) | |
tree | 1429892b6f3da035dc0dacc38d2507d26f3fea97 /webui/src/components/ReopenBugWithCommentButton | |
parent | 27b5285b8cbccec7fb6d17fb2c765d45530605c2 (diff) | |
download | git-bug-6f6831e18d08773540a4c897866985c0bf950de5.tar.gz |
WebUI: Add comment-and-reopen of a bug in one step
Diffstat (limited to 'webui/src/components/ReopenBugWithCommentButton')
-rw-r--r-- | webui/src/components/ReopenBugWithCommentButton/ReopenBugWithComment.graphql | 11 | ||||
-rw-r--r-- | webui/src/components/ReopenBugWithCommentButton/ReopenBugWithCommentButton.tsx | 65 |
2 files changed, 76 insertions, 0 deletions
diff --git a/webui/src/components/ReopenBugWithCommentButton/ReopenBugWithComment.graphql b/webui/src/components/ReopenBugWithCommentButton/ReopenBugWithComment.graphql new file mode 100644 index 00000000..4c220208 --- /dev/null +++ b/webui/src/components/ReopenBugWithCommentButton/ReopenBugWithComment.graphql @@ -0,0 +1,11 @@ +mutation AddCommentAndReopenBug($input: AddCommentAndReopenBugInput!) { + addCommentAndReopen(input: $input) { + statusOperation { + status + } + commentOperation { + message + } + } +} + diff --git a/webui/src/components/ReopenBugWithCommentButton/ReopenBugWithCommentButton.tsx b/webui/src/components/ReopenBugWithCommentButton/ReopenBugWithCommentButton.tsx new file mode 100644 index 00000000..0a534f27 --- /dev/null +++ b/webui/src/components/ReopenBugWithCommentButton/ReopenBugWithCommentButton.tsx @@ -0,0 +1,65 @@ +import React from 'react'; + +import Button from '@material-ui/core/Button'; +import CircularProgress from '@material-ui/core/CircularProgress'; + +import { BugFragment } from 'src/pages/bug/Bug.generated'; +import { TimelineDocument } from 'src/pages/bug/TimelineQuery.generated'; + +import { useAddCommentAndReopenBugMutation } from './ReopenBugWithComment.generated'; + +interface Props { + bug: BugFragment; + comment: string; + postClick?: () => void; +} + +function ReopenBugWithCommentButton({ bug, comment, postClick }: Props) { + const [ + addCommentAndReopenBug, + { loading, error }, + ] = useAddCommentAndReopenBugMutation(); + + function addCommentAndReopenBugAction() { + addCommentAndReopenBug({ + 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" + type="submit" + onClick={() => addCommentAndReopenBugAction()} + > + Reopen bug with comment + </Button> + </div> + ); +} + +export default ReopenBugWithCommentButton; |