Uploads show up in the uploads list without needing a page refresh.

This commit is contained in:
Jayden Seric 2017-04-09 14:56:04 +10:00
parent 21c28e87fe
commit 3b11a922f6
6 changed files with 40 additions and 22 deletions

View File

@ -11,21 +11,23 @@ db.defaults({uploads: []})
const saveFile = file => {
return db.get('uploads')
.push(file)
.push({
id: file.path,
...file
})
.last()
.write()
.then(result => result)
}
export default {
Query: {
allUploads () {
uploads () {
return db.get('uploads').value()
}
},
Mutation: {
singleUpload (_, {file}) {
return saveFile(file)
},
singleUpload: (_, {file}) => saveFile(file),
multipleUpload (_, {files}) {
return Promise.all(files.map((file) => {
return saveFile(file)

View File

@ -1,4 +1,5 @@
type File {
id: String!
name: String!
type: String!
size: Int!
@ -13,7 +14,7 @@ input Upload {
}
type Query {
allUploads: [File]
uploads: [File]
}
type Mutation {

View File

@ -1,5 +1,6 @@
import {Component} from 'react'
import {graphql, gql} from 'react-apollo'
import uploadsQuery from '../queries/uploads'
class MultipleUploader extends Component {
handleChange = ({target}) => {
@ -8,7 +9,10 @@ class MultipleUploader extends Component {
.mutate({
variables: {
files: target.files
}
},
refetchQueries: [{
query: uploadsQuery
}]
})
.then(({data}) => console.log('Mutation response:', data))
}
@ -22,6 +26,7 @@ class MultipleUploader extends Component {
export default graphql(gql`
mutation multipleUpload ($files: [Upload!]!) {
multipleUpload (files: $files) {
id
name
type
size

View File

@ -1,5 +1,6 @@
import {Component} from 'react'
import {graphql, gql} from 'react-apollo'
import uploadsQuery from '../queries/uploads'
class SingleUploader extends Component {
handleChange = ({target}) => {
@ -8,7 +9,10 @@ class SingleUploader extends Component {
.mutate({
variables: {
file: target.files[0]
}
},
refetchQueries: [{
query: uploadsQuery
}]
})
.then(({data}) => console.log('Mutation response:', data))
}
@ -22,6 +26,7 @@ class SingleUploader extends Component {
export default graphql(gql`
mutation singleUpload ($file: Upload!) {
singleUpload (file: $file) {
id
name
type
size

View File

@ -1,6 +1,7 @@
import {graphql, gql} from 'react-apollo'
import {graphql} from 'react-apollo'
import uploadsQuery from '../queries/uploads'
const UploadList = ({data: {allUploads}}) => {
const UploadList = ({data: {uploads}}) => {
return (
<table>
<thead>
@ -12,8 +13,8 @@ const UploadList = ({data: {allUploads}}) => {
</tr>
</thead>
<tbody>
{allUploads.map(({name, type, size, path}) => (
<tr key={path}>
{uploads.map(({id, name, type, size, path}) => (
<tr key={id}>
<td>{name}</td>
<td>{type}</td>
<td>{size}</td>
@ -34,13 +35,4 @@ const UploadList = ({data: {allUploads}}) => {
)
}
export default graphql(gql`
query allUploads {
allUploads {
name
type
size
path
}
}
`)(UploadList)
export default graphql(uploadsQuery)(UploadList)

13
app/queries/uploads.js Normal file
View File

@ -0,0 +1,13 @@
import {gql} from 'react-apollo'
export default gql`
query uploads {
uploads {
id
name
type
size
path
}
}
`