From 544ce084bad0d55ad478993376767bcec4917ae5 Mon Sep 17 00:00:00 2001 From: Jayden Seric Date: Mon, 29 Jan 2018 13:59:58 +1100 Subject: [PATCH] New approach for layout and blob example. --- app/components/blob-uploader.js | 35 ---------- app/components/field.js | 13 ++++ app/components/file-input.js | 13 ---- app/components/section.js | 15 ++++ app/components/upload-blob.js | 70 +++++++++++++++++++ .../{single-uploader.js => upload-file.js} | 13 ++-- ...ultiple-uploader.js => upload-filelist.js} | 13 ++-- app/components/{upload-list.js => uploads.js} | 4 +- app/pages/index.js | 25 ++++--- 9 files changed, 129 insertions(+), 72 deletions(-) delete mode 100644 app/components/blob-uploader.js create mode 100644 app/components/field.js delete mode 100644 app/components/file-input.js create mode 100644 app/components/section.js create mode 100644 app/components/upload-blob.js rename app/components/{single-uploader.js => upload-file.js} (64%) rename app/components/{multiple-uploader.js => upload-filelist.js} (63%) rename app/components/{upload-list.js => uploads.js} (84%) diff --git a/app/components/blob-uploader.js b/app/components/blob-uploader.js deleted file mode 100644 index 75a6194..0000000 --- a/app/components/blob-uploader.js +++ /dev/null @@ -1,35 +0,0 @@ -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/components/field.js b/app/components/field.js new file mode 100644 index 0000000..17f3c90 --- /dev/null +++ b/app/components/field.js @@ -0,0 +1,13 @@ +const Field = ({ children }) => ( + +) + +export default Field diff --git a/app/components/file-input.js b/app/components/file-input.js deleted file mode 100644 index 95fc272..0000000 --- a/app/components/file-input.js +++ /dev/null @@ -1,13 +0,0 @@ -const FileInput = props => ( -
-

{props.title}

- - -
-) - -export default FileInput diff --git a/app/components/section.js b/app/components/section.js new file mode 100644 index 0000000..fb85e50 --- /dev/null +++ b/app/components/section.js @@ -0,0 +1,15 @@ +const Section = ({ heading, children }) => ( +
+

{heading}

+ {children} + +
+) + +export default Section diff --git a/app/components/upload-blob.js b/app/components/upload-blob.js new file mode 100644 index 0000000..337cdb6 --- /dev/null +++ b/app/components/upload-blob.js @@ -0,0 +1,70 @@ +import { Component } from 'react' +import { graphql } from 'react-apollo' +import gql from 'graphql-tag' +import Field from './field' +import uploadsQuery from '../queries/uploads' + +class UploadBlob extends Component { + state = { + name: '', + content: '' + } + + handleChange = ({ target: { name, value } }) => + this.setState({ [name]: value }) + + handleSubmit = event => { + event.preventDefault() + + const file = new Blob([this.state.content], { type: 'text/plain' }) + file.name = `${this.state.name}.txt` + + this.props.mutate({ + variables: { file }, + update: (proxy, { data: { singleUpload } }) => { + const data = proxy.readQuery({ query: uploadsQuery }) + data.uploads.push(singleUpload) + proxy.writeQuery({ query: uploadsQuery, data }) + } + }) + } + + render() { + return ( +
+ + {' '} + .txt + + +