Files
konstitisyon.nu/components/konstitisyon/create/handle-create.js
T

158 lines
3.8 KiB
JavaScript

import PropTypes from 'prop-types'
import {useEffect, useRef, useState} from 'react'
import CreateForm from './create-form.js'
import {handleSubmit} from '@/lib/directus.js'
import {formatFormContent} from '@/lib/format.js'
export default function HandleCreate({
session,
selectedTitre,
isOpen,
setIsOpen,
setError,
setSuccess,
setIsErrorAlertOpen,
setIsSuccessAlertOpen,
collection,
listItems
}) {
const countdownRef = useRef()
const [selectValue, setSelectValue] = useState('')
useEffect(() => {
if (listItems && listItems.length > 0) {
setSelectValue(listItems[0].id)
}
}, [listItems])
const handleFormSubmit = async e => {
e.preventDefault()
let requestObject
const formattedContent = formatFormContent(e.currentTarget)
switch (collection) {
case 'commentaires': {
requestObject = {
contenu: formattedContent,
titre: selectedTitre,
status: 'draft',
}
break
}
case 'titres': {
requestObject = {
contenu: formattedContent,
status: 'draft',
}
break
}
case 'articles': {
requestObject = {
contenu: formattedContent,
titre: selectValue,
status: 'draft',
}
break
}
// No default
}
await handleSubmit({
userId: session.user.userId,
accessToken: session.user.accessToken,
content: formattedContent,
collection,
requestObject,
setError,
setSuccess,
setIsErrorAlertOpen,
setIsSuccessAlertOpen,
countdownRef,
})
setIsOpen(false)
}
if (collection === 'titres') {
return (
<CreateForm
session={session}
isOpen={isOpen}
setIsOpen={setIsOpen}
setError={setError}
setSuccess={setSuccess}
setIsErrorAlertOpen={setIsErrorAlertOpen}
setIsSuccessAlertOpen={setIsSuccessAlertOpen}
hasMultiline={false}
handleFormSubmit={handleFormSubmit}
setSelectValue={setSelectValue}
title='Titre'
collection={collection}
dialogText='Écrivez votre titre'
label='titre'
/>
)
}
if (collection === 'commentaires') {
return (
<CreateForm
session={session}
selectedTitre={selectedTitre}
isOpen={isOpen}
setIsOpen={setIsOpen}
setError={setError}
setSuccess={setSuccess}
setIsErrorAlertOpen={setIsErrorAlertOpen}
setIsSuccessAlertOpen={setIsSuccessAlertOpen}
handleFormSubmit={handleFormSubmit}
setSelectValue={setSelectValue}
title={selectedTitre.titre}
collection={collection}
dialogText='Écrivez votre commentaire'
label='commentaire'
/>
)
}
if (collection === 'articles') {
return (
<CreateForm
session={session}
isOpen={isOpen}
setIsOpen={setIsOpen}
setError={setError}
setSuccess={setSuccess}
setIsErrorAlertOpen={setIsErrorAlertOpen}
setIsSuccessAlertOpen={setIsSuccessAlertOpen}
collection={collection}
listItems={listItems}
handleFormSubmit={handleFormSubmit}
setSelectValue={setSelectValue}
title='Article'
dialogText='Écrivez votre article'
label='article'
/>
)
}
}
HandleCreate.propTypes = {
session: PropTypes.object,
selectedTitre: PropTypes.object,
isOpen: PropTypes.bool.isRequired,
setIsOpen: PropTypes.func.isRequired,
setError: PropTypes.func.isRequired,
setSuccess: PropTypes.func.isRequired,
setIsErrorAlertOpen: PropTypes.func.isRequired,
setIsSuccessAlertOpen: PropTypes.func.isRequired,
collection: PropTypes.oneOf(['titres', 'articles']).isRequired,
listItems: PropTypes.array
}