Alejandro Sanchez
06/08/2020, 2:16 AM“operationName”:“singleUpload”,“variables”:{“file”:null}
Alejandro Sanchez
06/08/2020, 2:17 AM<Mutation mutation={UPLOAD_FILE}>
{singleUpload => (
<input type="file" required onChange={({
target: {validity, files: [file]}
}) => validity.valid && singleUpload({ variables: { file}})}/>
)}
</Mutation>
Alejandro Sanchez
06/08/2020, 2:17 AMAlejandro Sanchez
06/08/2020, 2:17 AMconst UPLOAD_FILE = gql`
mutation singleUpload($file: Upload!) {
singleUpload(file: $file) {
filename
mimetype
encoding
}
}
`;
Alejandro Sanchez
06/08/2020, 2:17 AMAlejandro Sanchez
06/08/2020, 3:54 AMAlejandro Sanchez
06/08/2020, 3:54 AMAlejandro Sanchez
06/08/2020, 3:54 AMAlejandro Sanchez
06/08/2020, 7:00 AMAlejandro Sanchez
06/08/2020, 7:00 AM{
"name": "rooms",
"version": "1.0.0",
"license": "MIT",
"scripts": {
"start": "node src/index.js",
"prisma": "prisma"
},
"dependencies": {
"bcryptjs": "^2.4.3",
"graphql-yoga": "^1.7.0",
"jsonwebtoken": "^8.2.0",
"prisma-client-lib": "^1.31.0"
},
"devDependencies": {
"prisma": "^1.31.0"
}
}
Alejandro Sanchez
06/08/2020, 7:00 AMRyan
06/08/2020, 10:10 AMAlejandro Sanchez
06/08/2020, 2:30 PMRyan
06/08/2020, 2:51 PMAlejandro Sanchez
06/08/2020, 3:29 PMAlejandro Sanchez
06/08/2020, 3:29 PMAlejandro Sanchez
06/08/2020, 3:30 PMAlejandro Sanchez
06/08/2020, 3:30 PMAlejandro Sanchez
06/08/2020, 3:30 PMAlejandro Sanchez
06/08/2020, 3:35 PMimport React, { Component } from 'react';
import { AUTH_TOKEN } from '../constants';
import { timeDifferenceForDate } from '../utils';
import { Mutation } from 'react-apollo';
import { Query } from 'react-apollo';
import gql from 'graphql-tag';
const UPLOAD_FILE = gql`
mutation singleUpload($file: Upload!) {
singleUpload(file: $file) {
name
}
}
`;
const handleChange = async ( event, mutation ) => {
const {
target: {
validity,
files: [file],
}
} = event;
if (validity.valid) {
console.log(file);
const { data: { singleUpload } } = await mutation({
mutation: UPLOAD_FILE,
variables: { file },
fetchPolicy: 'no-cache',
});
}
};
class Upload extends Component {
render() {
const authToken = localStorage.getItem(AUTH_TOKEN);
return (
<Mutation mutation={UPLOAD_FILE}>
{(mutation, { loading }) => (
<input
type="file"
required
onChange={event => handleChange(event, mutation)}
/>
)}
</Mutation>
);
}
}
export default Upload;
Alejandro Sanchez
06/08/2020, 3:35 PMAlejandro Sanchez
06/08/2020, 3:35 PMAlejandro Sanchez
06/08/2020, 3:36 PMfunction singleUpload(parent, { file }, context) {
console.log("Receiving file");
console.log(file);
}
Alejandro Sanchez
06/08/2020, 3:36 PMtype Mutation {
post(url: String!, description: String!, name: String!, location: String!, lat: String!, lon: String!): Home!
signup(email: String!, password: String!, name: String!): AuthPayload
login(email: String!, password: String!): AuthPayload
singleUpload(file: Upload!): File!
}
Alejandro Sanchez
06/08/2020, 3:36 PMtype File {
id: ID!
name: String!
createdAt: DateTime!
}
Alejandro Sanchez
06/08/2020, 3:37 PMAlejandro Sanchez
06/08/2020, 3:48 PMAlejandro Sanchez
06/08/2020, 5:56 PMAlejandro Sanchez
06/08/2020, 5:56 PMAlejandro Sanchez
06/08/2020, 6:36 PMAlejandro Sanchez
06/08/2020, 6:36 PMmodule.exports = {
post,
signup,
login,
singleUpload,
uploadReview
};
Alejandro Sanchez
06/08/2020, 6:36 PM