import {useCallback, useEffect, useState} from 'react'
import {styled} from '@mui/material/styles'
import PropTypes from 'prop-types'
import axios from 'axios'
import {
Box,
Button,
Container,
FormControl,
FormHelperText,
Grid,
IconButton,
InputAdornment,
InputLabel,
LinearProgress,
OutlinedInput,
Snackbar,
TextField,
Tooltip,
Typography
} from '@material-ui/core'
import MuiAlert from '@material-ui/lab/Alert'
import CloseIcon from '@material-ui/icons/Close'
import AjouteTradiksyon from './ajoute-tradiksyon'
const PREFIX = 'EkriTeks'
const classes = {
tooltip: `${PREFIX}-tooltip`
}
const StyledContainer = styled(Container)(() => ({
[`& .${classes.tooltip}`]: {
fontSize: 18
}
}))
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337'
const textLabels = {
fr: {
title: 'Traduction',
help: 'Traduction des paroles de la musique',
emoji: '🇫🇷'
},
en: {
title: 'Translation',
help: 'Translation of music lyrics',
emoji: '🇬🇧'
},
es: {
title: 'Traducción',
help: 'Traducción de la letra de la música',
emoji: '🇪🇸'
}
}
function Alert(props) {
return
}
const RemoveTooltip = Tooltip
function EkriTeks({session}) {
const {jwt, user} = session
const [teksEkri, setTeksEkri] = useState({awtis: '', tit: '', transkripsyon: ''})
const [tradiksyon, setTradiksyon] = useState({fr: '', en: '', es: ''})
const [kiChawLang, setKiChwalang] = useState([])
const [error, setError] = useState('')
const [success, setSuccess] = useState('')
const [loading, setLoading] = useState(false)
const [open, setOpen] = useState(false)
const handleUpdate = useCallback(update => {
setTeksEkri({...teksEkri, ...update})
}, [teksEkri])
const handleUpdateTradiksyon = useCallback(update => {
setTradiksyon({...tradiksyon, ...update})
}, [tradiksyon])
const handleRemoveTradiksyon = useCallback(idTradiksyon => {
setKiChwalang(kiChawLang.filter(t => t !== idTradiksyon))
setTradiksyon({[tradiksyon.idTradiksyon]: ''})
}, [kiChawLang, setKiChwalang, setTradiksyon, tradiksyon])
const handleClose = (event, reason) => {
if (reason === 'clickaway') {
return
}
setOpen(false)
setSuccess('')
setError('')
}
const handleClick = () => {
setLoading(true)
const {awtis, tit, transkripsyon} = teksEkri
const {fr, en, es} = tradiksyon
if (teksEkri.awtis === '' || teksEkri.tit === '' || teksEkri.transkripsyon === '') {
setError({message: 'Certains champs sont obligatoires'})
setLoading(false)
return
}
const headers = {
'content-type': 'application/json',
Authorization: `Bearer ${jwt}`
}
axios.post(`${API_URL}/awtis`, {
alias: awtis,
user
}, {
headers
})
.then(awtisResponse => {
axios.post(`${API_URL}/teks`, {
tit,
transkripsyon,
tradiksyon: {
francais: fr === '' ? null : fr,
english: en === '' ? null : en,
espagnol: es === '' ? null : es
},
user,
awtis: [awtisResponse.data._id]
}, {
headers
})
.then(teksResponse => {
const {data} = teksResponse
setSuccess(`Le texte "${data.tit}" a été soumis avec succès. Il apparaîtra sur le site après validation.`)
setLoading(false)
})
.catch(error => {
setError(error)
setLoading(false)
})
})
.catch(error => {
setError(error)
setLoading(false)
})
}
const handleReset = () => {
setTeksEkri({awtis: '', tit: '', transkripsyon: ''})
setTradiksyon({fr: '', en: '', es: ''})
setKiChwalang([])
}
useEffect(() => {
if (success) {
setOpen(true)
handleReset()
}
}, [success])
useEffect(() => {
if (error) {
setOpen(true)
}
}, [error])
return (
Soumèt an tèks
(soumettre un texte)
{loading && }
{success && (
{success}
)}
{error && (
Une erreur s’est produite : {error.message}
)}
)
}
EkriTeks.propTypes = {
session: PropTypes.object.isRequired
}
export default EkriTeks