Also: - Update deps. - Lock `apollo-cache-inmemory` to v1.0.0 since newer versions are buggy. - New file naming approach for stored uploads. - More intuitive mixed ESM/CJS module imports in the API.
32 lines
816 B
JavaScript
32 lines
816 B
JavaScript
import { graphql } from 'react-apollo'
|
|
import gql from 'graphql-tag'
|
|
import FileInput from './file-input'
|
|
import uploadsQuery from '../queries/uploads'
|
|
|
|
const MultipleUploader = ({ mutate }) => {
|
|
const handleChange = ({ target }) =>
|
|
target.validity.valid &&
|
|
mutate({
|
|
variables: { files: target.files },
|
|
update: (proxy, { data: { multipleUpload } }) => {
|
|
const data = proxy.readQuery({ query: uploadsQuery })
|
|
data.uploads.push(...multipleUpload)
|
|
proxy.writeQuery({ query: uploadsQuery, data })
|
|
}
|
|
})
|
|
|
|
return <FileInput multiple required onChange={handleChange} />
|
|
}
|
|
|
|
export default graphql(gql`
|
|
mutation($files: [Upload!]!) {
|
|
multipleUpload(files: $files) {
|
|
id
|
|
filename
|
|
encoding
|
|
mimetype
|
|
path
|
|
}
|
|
}
|
|
`)(MultipleUploader)
|