diff --git a/webui/src/App.tsx b/webui/src/App.tsx index f7df7d2b..3a5ef025 100644 --- a/webui/src/App.tsx +++ b/webui/src/App.tsx @@ -4,14 +4,14 @@ import { Route, Switch } from 'react-router'; import Layout from './layout'; import BugPage from './pages/bug'; import ListPage from './pages/list'; -import NewPage from './pages/new/NewPage'; +import NewBugPage from './pages/new/NewBugPage'; export default function App() { return ( - + diff --git a/webui/src/pages/new/NewBug.graphql b/webui/src/pages/new/NewBug.graphql new file mode 100644 index 00000000..92df016e --- /dev/null +++ b/webui/src/pages/new/NewBug.graphql @@ -0,0 +1,7 @@ +mutation newBug($input: NewBugInput!) { + newBug(input: $input) { + bug { + humanId + } + } +} \ No newline at end of file diff --git a/webui/src/pages/new/NewPage.tsx b/webui/src/pages/new/NewBugPage.tsx similarity index 67% rename from webui/src/pages/new/NewPage.tsx rename to webui/src/pages/new/NewBugPage.tsx index b485987e..925034e1 100644 --- a/webui/src/pages/new/NewPage.tsx +++ b/webui/src/pages/new/NewBugPage.tsx @@ -1,16 +1,15 @@ -import { gql, useMutation } from '@apollo/client'; import React, { FormEvent } from 'react'; import Paper from '@material-ui/core/Paper/Paper'; import TextField from '@material-ui/core/TextField/TextField'; import { fade, makeStyles, Theme } from '@material-ui/core/styles'; -import GBButton from '../../components/Button/GBButton'; +import { useNewBugMutation } from './NewBug.generated'; /** * Styles */ -const useStyles = makeStyles((theme) => ({ +const useStyles = makeStyles((theme: Theme) => ({ main: { maxWidth: 800, margin: 'auto', @@ -40,41 +39,47 @@ const useStyles = makeStyles((theme) => ({ }, })); -const NEW_BUG = gql` - mutation NewBug($input: NewBugInput) { - newBug(input: $input) { - title - message - } - } -`; - /** * Form to create a new issue */ -function NewPage() { - const classes = useStyles({ searching: false }); - const [newBugInput] = useMutation(NEW_BUG); +function NewBugPage() { + const classes = useStyles(); + let inputField: any; + const [newBug, { loading, error }] = useNewBugMutation(); function submitNewIssue(e: FormEvent) { e.preventDefault(); - // TODO Call API + newBug({ + variables: { + input: { + title: String(inputField.value), + message: 'Message', //TODO + }, + }, + }); + inputField.value = ''; } + if (loading) return
Loading
; + if (error) return
Error
; + return (
{ + inputField = node; + }} label="Title" className={classes.titleInput} variant="outlined" fullWidth margin="dense" /> - +
); } -export default NewPage; +export default NewBugPage;