ImageUploader Userform #56

Merged
Yash-R merged 3 commits from main into main 2020-10-30 09:12:30 +01:00
4 changed files with 27 additions and 22 deletions

View File

@@ -15,14 +15,14 @@ export const schema = gql`
input CreateUserInput { input CreateUserInput {
email: String! email: String!
issuer: String! # issuer: String!
image: String image: String
Irev-Dev commented 2020-10-30 08:52:54 +01:00 (Migrated from github.com)
Review

What was happening here, was this causing problems?

What was happening here, was this causing problems?
Yash-R commented 2020-10-30 09:00:21 +01:00 (Migrated from github.com)
Review

Yes, The error was Field "issuer" of required type "String!" was not provided.
The Schema you have created does not use this field.

Yes, The error was Field "issuer" of required type "String!" was not provided. The Schema you have created does not use this field.
bio: String bio: String
} }
input UpdateUserInput { input UpdateUserInput {
email: String email: String
issuer: String # issuer: String
image: String image: String
bio: String bio: String
} }

View File

@@ -117,3 +117,4 @@ function getCroppedImg(image, crop, fileName) {
}, 'image/jpeg', 1); }, 'image/jpeg', 1);
}); });
} }

View File

@@ -1,6 +1,6 @@
import { useMutation, useFlash } from '@redwoodjs/web' import { useMutation, useFlash } from '@redwoodjs/web'
import { Link, routes, navigate } from '@redwoodjs/router' import { Link, routes, navigate } from '@redwoodjs/router'
import { Image as CloudinaryImage } from 'cloudinary-react'
const DELETE_USER_MUTATION = gql` const DELETE_USER_MUTATION = gql`
mutation DeleteUserMutation($id: Int!) { mutation DeleteUserMutation($id: Int!) {
deleteUser(id: $id) { deleteUser(id: $id) {
@@ -72,7 +72,13 @@ const User = ({ user }) => {
</tr> </tr>
<tr> <tr>
<th>Image</th> <th>Image</th>
<td>{user.image}</td> <td><CloudinaryImage
className="object-cover w-full rounded shadow"
cloudName="irevdev"
publicId={user.image}
width="300"
crop="scale"
/></td>
</tr> </tr>
<tr> <tr>
<th>Bio</th> <th>Bio</th>

View File

@@ -6,10 +6,21 @@ import {
TextField, TextField,
Submit, Submit,
} from '@redwoodjs/forms' } from '@redwoodjs/forms'
import { useState } from 'react';
import { navigate, routes } from '@redwoodjs/router'
import { useFlash } from '@redwoodjs/web'
import ImageUploader from '../PartForm/ImageUploader'
const UserForm = (props) => { const UserForm = (props) => {
const onSubmit = (data) => { const { addMessage } = useFlash()
props.onSave(data, props?.user?.id) // const [bio, setBio] = useState(props?.user?.bio)
const [imageUrl, setImageUrl] = useState(props?.user?.image)
const onSubmit = async (data, e) => {
await props.onSave({
...data,
image: imageUrl
}, props?.user?.id)
addMessage('User updated.', { classes: 'rw-flash-success' })
} }
return ( return (
@@ -37,21 +48,7 @@ const UserForm = (props) => {
validation={{ required: true }} validation={{ required: true }}
/> />
<FieldError name="email" className="rw-field-error" /> <FieldError name="email" className="rw-field-error" />
<ImageUploader onImageUpload={({cloudinaryPublicId}) => setImageUrl(cloudinaryPublicId)} />
<Label
name="image"
className="rw-label"
errorClassName="rw-label rw-label-error"
>
Image
</Label>
<TextField
name="image"
defaultValue={props.user?.image}
className="rw-input"
errorClassName="rw-input rw-input-error"
/>
<FieldError name="image" className="rw-field-error" />
<Label <Label
name="bio" name="bio"
@@ -65,6 +62,7 @@ const UserForm = (props) => {
defaultValue={props.user?.bio} defaultValue={props.user?.bio}
className="rw-input" className="rw-input"
errorClassName="rw-input rw-input-error" errorClassName="rw-input rw-input-error"
validation={{ required: true }}
/> />
<FieldError name="bio" className="rw-field-error" /> <FieldError name="bio" className="rw-field-error" />