Create Version
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
'use client'
|
||||
|
||||
import PropTypes from 'prop-types'
|
||||
import {useRef} from 'react'
|
||||
import FormHandler from '../form-handler.js'
|
||||
import {formatFormContent} from '@/lib/format.js'
|
||||
import {createVersion} from '@/lib/directus.js'
|
||||
|
||||
export default function HandleEdit({
|
||||
id,
|
||||
session,
|
||||
isOpen,
|
||||
setIsOpen,
|
||||
collection,
|
||||
contenu,
|
||||
setError,
|
||||
setSuccess,
|
||||
setIsSuccessAlertOpen,
|
||||
setIsErrorAlertOpen
|
||||
}) {
|
||||
const countdownRef = useRef()
|
||||
|
||||
const handleFormSubmit = async e => {
|
||||
e.preventDefault()
|
||||
console.log('e', e)
|
||||
|
||||
const formattedContent = formatFormContent(e.currentTarget)
|
||||
|
||||
const {accessToken, userId} = session.user
|
||||
|
||||
await createVersion({
|
||||
accessToken,
|
||||
userId,
|
||||
collection,
|
||||
id,
|
||||
formattedContent,
|
||||
setIsErrorAlertOpen,
|
||||
setSuccess,
|
||||
setIsSuccessAlertOpen,
|
||||
setError,
|
||||
countdownRef
|
||||
})
|
||||
}
|
||||
|
||||
if (collection === 'titres') {
|
||||
return (
|
||||
<FormHandler
|
||||
handleFormSubmit={handleFormSubmit}
|
||||
session={session}
|
||||
isOpen={isOpen}
|
||||
setIsOpen={setIsOpen}
|
||||
collection={collection}
|
||||
setError={setError}
|
||||
setSuccess={setSuccess}
|
||||
contenu={contenu}
|
||||
title='Titre'
|
||||
dialogText='Modifiez le titre'
|
||||
label='titre'
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
if (collection === 'articles') {
|
||||
return (
|
||||
<FormHandler
|
||||
handleFormSubmit={handleFormSubmit}
|
||||
session={session}
|
||||
isOpen={isOpen}
|
||||
setIsOpen={setIsOpen}
|
||||
collection={collection}
|
||||
setError={setError}
|
||||
setSuccess={setSuccess}
|
||||
contenu={contenu}
|
||||
title='Article'
|
||||
dialogText='Modifiez l’article'
|
||||
label='titre'
|
||||
/>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
HandleEdit.propTypes = {
|
||||
id: PropTypes.string.isRequired,
|
||||
session: PropTypes.object.isRequired,
|
||||
isOpen: PropTypes.bool.isRequired,
|
||||
setIsOpen: PropTypes.func.isRequired,
|
||||
setSuccess: PropTypes.func.isRequired,
|
||||
setIsErrorAlertOpen: PropTypes.func.isRequired,
|
||||
setIsSuccessAlertOpen: PropTypes.func.isRequired,
|
||||
setError: PropTypes.func.isRequired,
|
||||
contenu: PropTypes.string,
|
||||
collection: PropTypes.oneOf(['titres', 'articles']).isRequired
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import {useState} from 'react'
|
||||
import PropTypes from 'prop-types'
|
||||
import {useRouter} from 'next/navigation'
|
||||
import IconButton from '@mui/material/IconButton'
|
||||
@@ -7,6 +8,8 @@ import {styled} from '@mui/material/styles'
|
||||
import Tooltip, {tooltipClasses} from '@mui/material/Tooltip'
|
||||
import ArticleIcon from '@mui/icons-material/Article'
|
||||
import TitleIcon from '@mui/icons-material/Title'
|
||||
import HandleEdit from './handle-edit.js'
|
||||
import AuthAlert from '@/components/auth-form/auth-alert.js'
|
||||
|
||||
const LightTooltip = styled(({className, ...props}) => (
|
||||
<Tooltip {...props} classes={{popper: className}} />
|
||||
@@ -21,30 +24,64 @@ const LightTooltip = styled(({className, ...props}) => (
|
||||
|
||||
export default function Edit({id, session, contenu, collection}) {
|
||||
const router = useRouter()
|
||||
const [isDialogOpen, setIsDialogOpen] = useState(false)
|
||||
const [isErrorAlertOpen, setIsErrorAlertOpen] = useState(false)
|
||||
const [isSuccessAlertOpen, setIsSuccessAlertOpen] = useState(false)
|
||||
const [error, setError] = useState('')
|
||||
const [success, setSuccess] = useState('')
|
||||
|
||||
const handleClick = () => {
|
||||
console.log('🚀 ~ Edit ~ id:', id)
|
||||
console.log('🚀 ~ Edit ~ contenu:', contenu)
|
||||
console.log('🚀 ~ Edit ~ collection:', collection)
|
||||
setIsDialogOpen(true)
|
||||
if (!session) {
|
||||
router.push('/login')
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<IconButton size='large' aria-label='edit' onClick={handleClick}>
|
||||
{collection === 'titres' && (
|
||||
<LightTooltip title='Éditer un titre'>
|
||||
<TitleIcon color='warning' fontSize='inherit' />
|
||||
</LightTooltip>
|
||||
)}
|
||||
<>
|
||||
{error && <AuthAlert
|
||||
isOpen={isErrorAlertOpen}
|
||||
setIsOpen={setIsErrorAlertOpen}
|
||||
message={error}
|
||||
severity='error'
|
||||
/>}
|
||||
|
||||
{collection === 'articles' && (
|
||||
<LightTooltip title='Éditer un article'>
|
||||
<ArticleIcon color='warning' fontSize='inherit' />
|
||||
</LightTooltip>
|
||||
)}
|
||||
</IconButton>
|
||||
{success && <AuthAlert
|
||||
isOpen={isSuccessAlertOpen}
|
||||
setIsOpen={setIsSuccessAlertOpen}
|
||||
message={success}
|
||||
severity='success'
|
||||
/>}
|
||||
|
||||
<IconButton size='large' aria-label='edit' onClick={handleClick}>
|
||||
{collection === 'titres' && (
|
||||
<LightTooltip title='Éditer un titre'>
|
||||
<TitleIcon color='warning' fontSize='inherit' />
|
||||
</LightTooltip>
|
||||
)}
|
||||
|
||||
{collection === 'articles' && (
|
||||
<LightTooltip title='Éditer un article'>
|
||||
<ArticleIcon color='warning' fontSize='inherit' />
|
||||
</LightTooltip>
|
||||
)}
|
||||
</IconButton>
|
||||
<HandleEdit
|
||||
id={id}
|
||||
session={session}
|
||||
contenu={contenu}
|
||||
collection={collection}
|
||||
isOpen={isDialogOpen}
|
||||
setIsOpen={setIsDialogOpen}
|
||||
setError={setError}
|
||||
setSuccess={setSuccess}
|
||||
setIsErrorAlertOpen={setIsErrorAlertOpen}
|
||||
setIsSuccessAlertOpen={setIsSuccessAlertOpen}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user