Merge pull request #56 from Yash-R/main

ImageUploader Userform
This commit was merged in pull request #56.
This commit is contained in:
Kurt Hutten
2020-10-30 19:12:29 +11:00
committed by GitHub
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
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" />