diff --git a/app/components/blob-uploader.js b/app/components/blob-uploader.js new file mode 100644 index 0000000..75a6194 --- /dev/null +++ b/app/components/blob-uploader.js @@ -0,0 +1,35 @@ +import { graphql } from 'react-apollo' +import gql from 'graphql-tag' +import FileInput from './file-input' +import uploadsQuery from '../queries/uploads' + +const BlobUploader = ({ mutate }) => { + const handleChange = ({ target }) => { + // We just convert the actual File to a Blob for the example + const blob = new Blob([target.files[0].slice(0, -1)], { type: target.files[0].type }) + blob.name = target.files[0].name; // Don't forget to add the name to the Blob or it will be unnamed! + + mutate({ + variables: { file: blob }, + update: (proxy, { data: { singleUpload } }) => { + const data = proxy.readQuery({ query: uploadsQuery }) + data.uploads.push(singleUpload) + proxy.writeQuery({ query: uploadsQuery, data }) + } + }) + } + + return +} + +export default graphql(gql` + mutation($file: Upload!) { + singleUpload(file: $file) { + id + filename + encoding + mimetype + path + } + } +`)(BlobUploader) diff --git a/app/pages/index.js b/app/pages/index.js index 8805796..2dc6750 100644 --- a/app/pages/index.js +++ b/app/pages/index.js @@ -1,6 +1,7 @@ import Page from '../components/page' import SingleUploader from '../components/single-uploader' import MultipleUploader from '../components/multiple-uploader' +import BlobUploader from '../components/blob-uploader' import UploadList from '../components/upload-list' import withData from '../providers/with-data' @@ -14,6 +15,7 @@ const HomePage = () => ( /> + )