Allow for new parts to be created

This commit is contained in:
Kurt Hutten
2020-11-08 18:39:56 +11:00
parent 8107c7dcea
commit 8fa017beed
10 changed files with 78 additions and 10 deletions

View File

@@ -5,7 +5,7 @@ import { useAuth } from '@redwoodjs/auth'
import PartProfile from 'src/components/PartProfile'
export const QUERY = gql`
query FIND_PART_BY_USERNAME_TITLE($userName: String!, $partTitle: String!, $currentUserId: String) {
query FIND_PART_BY_USERNAME_TITLE($userName: String!, $partTitle: String, $currentUserId: String) {
userPart: userName(userName: $userName) {
id
name
@@ -52,6 +52,18 @@ const UPDATE_PART_MUTATION = gql`
}
}
`
const CREATE_PART_MUTATION = gql`
mutation CreatePartMutation($input: CreatePartInput!) {
createPart(input: $input) {
id
title
user {
id
userName
}
}
}
`
const TOGGLE_REACTION_MUTATION = gql`
mutation ToggleReactionMutation($input: TogglePartReactionInput!) {
togglePartReaction(input: $input){
@@ -84,7 +96,17 @@ export const Success = ({ userPart, variables: {isEditable}, refetch}) => {
addMessage('Part updated.', { classes: 'rw-flash-success' })
},
})
const [createUser] = useMutation(CREATE_PART_MUTATION, {
onCompleted: ({createPart}) => {
navigate(routes.part2({userName: createPart?.user?.userName, partTitle: createPart?.title}))
addMessage('Part Created.', { classes: 'rw-flash-success' })
},
})
const onSave = (id, input) => {
if(!id) {
createUser({ variables: { input } })
return
}
updateUser({ variables: { id, input } })
}

View File

@@ -33,6 +33,7 @@ const PartProfile = ({
title: part?.title,
mainImage: part?.mainImage,
description: part?.description,
userId: userPart?.id,
})
const setProperty = (property, value) => setInput({
...input,
@@ -43,7 +44,7 @@ const PartProfile = ({
const onImageUpload = ({cloudinaryPublicId}) => setProperty('mainImage', cloudinaryPublicId)
const onEditSaveClick = () => {
if (isEditable) {
onSave(part.id, input)
input.title && onSave(part?.id, input)
return
}
navigate(routes.editPart2({userName: userPart.userName, partTitle: part.title}))
@@ -98,7 +99,7 @@ const PartProfile = ({
{/* main project center column */}
<section className="col-start-3">
<Breadcrumb className="inline" onPartTitleChange={isEditable && onTitleChange} userName={userPart.userName} partTitle={input?.title}/>
{ input?.mainImage && <ImageUploader
{ !!(input?.mainImage || isEditable) && <ImageUploader
className="rounded-lg shadow-md border-2 border-gray-200 border-solid mt-8"
onImageUpload={onImageUpload}
aspectRatio={16/9}