11import React , { Component } from 'react' ;
2- import { Card , Heading } from '@8base/boost' ;
2+ import { Button , Card , Heading , TextAreaField } from '@8base/boost' ;
33import gql from 'graphql-tag' ;
44import { withApollo } from 'react-apollo' ;
55
66const TASKS_QUERY = gql `
7- query {
8- tasksList {
9- count
10- items {
7+ query{
8+ tasksList{
9+ count
10+ items{
11+ id
12+ name
13+ createdBy{
1114 id
12- name
13- done
14- user{
15- firstName
16- }
15+ firstName
16+ lastName
1717 }
1818 }
1919 }
20+ }
21+ ` ;
22+
23+ const TASK_CREATE = gql `
24+ mutation($data: TaskCreateInput!){
25+ taskCreate(data: $data){
26+ id
27+ }
28+ }
2029` ;
2130
2231
@@ -26,21 +35,48 @@ class Dashboard extends Component {
2635 super ( props ) ;
2736 this . state = {
2837 tasks : [ ] ,
38+ text : '' ,
2939 } ;
3040 }
3141
3242 componentDidMount ( ) : void {
3343 console . log ( this . props ) ;
3444 this . props . client . query ( { query : TASKS_QUERY , fetchPolicy : 'network-only' } ) . then ( ( data ) => {
35- console . log ( data ) ;
45+ console . log ( data . data ) ;
46+ console . log ( data . data . tasksList ) ;
47+ this . setState ( {
48+ tasks : data . data . tasksList . items ,
49+ } ) ;
3650 } ) ;
3751 }
3852
53+ createTask = ( ) => {
54+ const data = { name : this . state . text } ;
55+ this . props . client . mutate ( { mutation : TASK_CREATE , variables : { data} } ) . then ( ( data ) => {
56+ this . props . client . query ( { query : TASKS_QUERY , fetchPolicy : 'network-only' } ) . then ( ( data ) => {
57+ console . log ( data . data ) ;
58+ console . log ( data . data . tasksList ) ;
59+ this . setState ( {
60+ tasks : data . data . tasksList . items ,
61+ } ) ;
62+ } ) ;
63+ } ) ;
64+ } ;
65+
3966 render ( ) {
4067
4168 return (
4269 < Card . Plate style = { { marginLeft : '2rem' } } >
43- { this . state . tasks . map ( ( task ) => < Card . Header > < Heading key = { task . id } type = "h4" text = { task . name } /> </ Card . Header > ) }
70+ { this . state . tasks . map ( ( task , i ) => < Card . Header key = { i } > < Heading key = { task . id } type = "h4"
71+ text = { task . name } /> </ Card . Header > ) }
72+
73+ < TextAreaField value = { this . state . text } input = { {
74+ name : '' ,
75+ onChange : ( event ) => this . setState ( { text : event . target . value } ) ,
76+ } } >
77+
78+ </ TextAreaField >
79+ < Button text = { 'NEW ' } onClick = { this . createTask } />
4480 </ Card . Plate >
4581 ) ;
4682 }
0 commit comments