Uploads show up in the uploads list without needing a page refresh.
This commit is contained in:
parent
21c28e87fe
commit
3b11a922f6
@ -11,21 +11,23 @@ db.defaults({uploads: []})
|
|||||||
|
|
||||||
const saveFile = file => {
|
const saveFile = file => {
|
||||||
return db.get('uploads')
|
return db.get('uploads')
|
||||||
.push(file)
|
.push({
|
||||||
|
id: file.path,
|
||||||
|
...file
|
||||||
|
})
|
||||||
.last()
|
.last()
|
||||||
.write()
|
.write()
|
||||||
.then(result => result)
|
.then(result => result)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
Query: {
|
Query: {
|
||||||
allUploads () {
|
uploads () {
|
||||||
return db.get('uploads').value()
|
return db.get('uploads').value()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Mutation: {
|
Mutation: {
|
||||||
singleUpload (_, {file}) {
|
singleUpload: (_, {file}) => saveFile(file),
|
||||||
return saveFile(file)
|
|
||||||
},
|
|
||||||
multipleUpload (_, {files}) {
|
multipleUpload (_, {files}) {
|
||||||
return Promise.all(files.map((file) => {
|
return Promise.all(files.map((file) => {
|
||||||
return saveFile(file)
|
return saveFile(file)
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
type File {
|
type File {
|
||||||
|
id: String!
|
||||||
name: String!
|
name: String!
|
||||||
type: String!
|
type: String!
|
||||||
size: Int!
|
size: Int!
|
||||||
@ -13,7 +14,7 @@ input Upload {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Query {
|
type Query {
|
||||||
allUploads: [File]
|
uploads: [File]
|
||||||
}
|
}
|
||||||
|
|
||||||
type Mutation {
|
type Mutation {
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import {Component} from 'react'
|
import {Component} from 'react'
|
||||||
import {graphql, gql} from 'react-apollo'
|
import {graphql, gql} from 'react-apollo'
|
||||||
|
import uploadsQuery from '../queries/uploads'
|
||||||
|
|
||||||
class MultipleUploader extends Component {
|
class MultipleUploader extends Component {
|
||||||
handleChange = ({target}) => {
|
handleChange = ({target}) => {
|
||||||
@ -8,7 +9,10 @@ class MultipleUploader extends Component {
|
|||||||
.mutate({
|
.mutate({
|
||||||
variables: {
|
variables: {
|
||||||
files: target.files
|
files: target.files
|
||||||
}
|
},
|
||||||
|
refetchQueries: [{
|
||||||
|
query: uploadsQuery
|
||||||
|
}]
|
||||||
})
|
})
|
||||||
.then(({data}) => console.log('Mutation response:', data))
|
.then(({data}) => console.log('Mutation response:', data))
|
||||||
}
|
}
|
||||||
@ -22,6 +26,7 @@ class MultipleUploader extends Component {
|
|||||||
export default graphql(gql`
|
export default graphql(gql`
|
||||||
mutation multipleUpload ($files: [Upload!]!) {
|
mutation multipleUpload ($files: [Upload!]!) {
|
||||||
multipleUpload (files: $files) {
|
multipleUpload (files: $files) {
|
||||||
|
id
|
||||||
name
|
name
|
||||||
type
|
type
|
||||||
size
|
size
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import {Component} from 'react'
|
import {Component} from 'react'
|
||||||
import {graphql, gql} from 'react-apollo'
|
import {graphql, gql} from 'react-apollo'
|
||||||
|
import uploadsQuery from '../queries/uploads'
|
||||||
|
|
||||||
class SingleUploader extends Component {
|
class SingleUploader extends Component {
|
||||||
handleChange = ({target}) => {
|
handleChange = ({target}) => {
|
||||||
@ -8,7 +9,10 @@ class SingleUploader extends Component {
|
|||||||
.mutate({
|
.mutate({
|
||||||
variables: {
|
variables: {
|
||||||
file: target.files[0]
|
file: target.files[0]
|
||||||
}
|
},
|
||||||
|
refetchQueries: [{
|
||||||
|
query: uploadsQuery
|
||||||
|
}]
|
||||||
})
|
})
|
||||||
.then(({data}) => console.log('Mutation response:', data))
|
.then(({data}) => console.log('Mutation response:', data))
|
||||||
}
|
}
|
||||||
@ -22,6 +26,7 @@ class SingleUploader extends Component {
|
|||||||
export default graphql(gql`
|
export default graphql(gql`
|
||||||
mutation singleUpload ($file: Upload!) {
|
mutation singleUpload ($file: Upload!) {
|
||||||
singleUpload (file: $file) {
|
singleUpload (file: $file) {
|
||||||
|
id
|
||||||
name
|
name
|
||||||
type
|
type
|
||||||
size
|
size
|
||||||
|
|||||||
@ -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 (
|
return (
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
@ -12,8 +13,8 @@ const UploadList = ({data: {allUploads}}) => {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{allUploads.map(({name, type, size, path}) => (
|
{uploads.map(({id, name, type, size, path}) => (
|
||||||
<tr key={path}>
|
<tr key={id}>
|
||||||
<td>{name}</td>
|
<td>{name}</td>
|
||||||
<td>{type}</td>
|
<td>{type}</td>
|
||||||
<td>{size}</td>
|
<td>{size}</td>
|
||||||
@ -34,13 +35,4 @@ const UploadList = ({data: {allUploads}}) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default graphql(gql`
|
export default graphql(uploadsQuery)(UploadList)
|
||||||
query allUploads {
|
|
||||||
allUploads {
|
|
||||||
name
|
|
||||||
type
|
|
||||||
size
|
|
||||||
path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`)(UploadList)
|
|
||||||
|
|||||||
13
app/queries/uploads.js
Normal file
13
app/queries/uploads.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import {gql} from 'react-apollo'
|
||||||
|
|
||||||
|
export default gql`
|
||||||
|
query uploads {
|
||||||
|
uploads {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
type
|
||||||
|
size
|
||||||
|
path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
Loading…
x
Reference in New Issue
Block a user