diff --git a/.env.sample b/.env.sample index daa1823..a7ab319 100644 --- a/.env.sample +++ b/.env.sample @@ -2,6 +2,7 @@ PORT=3000 API_URL=http://localhost:1337 NEXT_PUBLIC_API_URL=$API_URL SITE_URL=http://localhost:3001 +NEXT_PUBLIC_READ_TOKEN= # FUNKWHALE VARIABLE NEXT_PUBLIC_OKI_MIZIK_URL=https://funkwhale-server.com diff --git a/components/awtis/awtis-biyografi.js b/components/awtis/awtis-biyografi.js index 64ec97c..42d7017 100644 --- a/components/awtis/awtis-biyografi.js +++ b/components/awtis/awtis-biyografi.js @@ -14,7 +14,7 @@ import { import MizikBadjMeni from './mizik-badj-meni' -export default function AwtisBiyografi({alias, teks, biyografi, esByografiOuve, meteEsByografiOuve}) { +export default function AwtisBiyografi({alias, paroles, biographie, esByografiOuve, meteEsByografiOuve}) { const handleClose = () => { meteEsByografiOuve(false) } @@ -40,7 +40,7 @@ export default function AwtisBiyografi({alias, teks, biyografi, esByografiOuve, > {alias} - + - {biyografi ? ( + {biographie ? ( - {biyografi} + {biographie} ) : ( @@ -62,7 +62,7 @@ export default function AwtisBiyografi({alias, teks, biyografi, esByografiOuve, @@ -72,12 +72,12 @@ export default function AwtisBiyografi({alias, teks, biyografi, esByografiOuve, AwtisBiyografi.propTypes = { alias: PropTypes.string.isRequired, - teks: PropTypes.array.isRequired, - biyografi: PropTypes.string, + paroles: PropTypes.array.isRequired, + biographie: PropTypes.string, esByografiOuve: PropTypes.bool.isRequired, meteEsByografiOuve: PropTypes.func.isRequired } AwtisBiyografi.defaultProps = { - biyografi: null + biographie: null } diff --git a/components/awtis/awtis-detay.js b/components/awtis/awtis-detay.js index 205d225..d7af5ad 100644 --- a/components/awtis/awtis-detay.js +++ b/components/awtis/awtis-detay.js @@ -13,18 +13,19 @@ import KeyboardBackspaceIcon from '@mui/icons-material/KeyboardBackspace' import AwtisBiyografi from './awtis-biyografi' import MizikLis from './mizik-lis' -const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337' +const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337' +const noImageUrl = 'https://place-hold.it/140x140?text=Indisponible' -const sortTeks = teks => teks.sort((a, b) => b.id - a.id) +const sortTeks = paroles => paroles.sort((a, b) => b.id - a.id) export default function AwtisDetay({anAwtis}) { const router = useRouter() const [esByografiOuve, meteEsByografiOuve] = useState(false) - const {alias, biyografi, teks, foto} = anAwtis - const sortedTeks = sortTeks(teks) - const gwanBiyo = anAwtis.biyografi.length > 100 + const {alias, biographie, paroles, photo} = anAwtis + const sortedTeks = sortTeks(paroles.data) + const gwanBiyo = biographie && biographie.length > 100 - const biyo = gwanBiyo ? `${anAwtis.biyografi.slice(0, 100)}...` : anAwtis.biyografi + const biyo = gwanBiyo ? `${biographie.slice(0, 100)}...` : biographie const handleClick = () => { meteEsByografiOuve(true) @@ -45,7 +46,7 @@ export default function AwtisDetay({anAwtis}) { @@ -69,7 +70,7 @@ export default function AwtisDetay({anAwtis}) { )} - {teks.length > 1 ? ( + {paroles.data.length > 1 ? ( } @@ -77,7 +78,7 @@ export default function AwtisDetay({anAwtis}) { id='panel-teks-header' > Liste des textes - + @@ -87,7 +88,7 @@ export default function AwtisDetay({anAwtis}) { <> Texte - + )} @@ -102,8 +103,8 @@ export default function AwtisDetay({anAwtis}) { {esByografiOuve && ( diff --git a/components/awtis/awtis-kat.js b/components/awtis/awtis-kat.js index ac20f10..a4674ab 100644 --- a/components/awtis/awtis-kat.js +++ b/components/awtis/awtis-kat.js @@ -23,6 +23,7 @@ import AwtisBiyografi from './awtis-biyografi' const PREFIX = 'awtis-kat' const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3001' +const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337' const classes = { root: `${PREFIX}-root`, @@ -54,12 +55,13 @@ const Kat = styled('div')(( } })) -export default function AwtisKat({anAwtis}) { +const noImageUrl = 'https://place-hold.it/140x140?text=Indisponible' + +export default function AwtisKat({artiste}) { const router = useRouter() const [esByografiOuve, meteEsByografiOuve] = useState(false) - const noImageUrl = 'https://place-hold.it/140x140?text=Pa%20ni%20imaj' - const {alias, biyografi, teks, foto, slug} = anAwtis + const {alias, biographie, paroles, photo, slug} = artiste const [expanded, setExpanded] = useState(false) @@ -76,7 +78,7 @@ export default function AwtisKat({anAwtis}) { className={classes.media} component='img' alt={alias} - image={`${foto.length > 0 ? `${process.env.NEXT_PUBLIC_API_URL}${foto[0].url}` : noImageUrl}`} + image={`${photo?.data?.attributes?.url ? `${IMAGE_URL}${photo?.data?.attributes?.url}` : noImageUrl}`} title={alias} /> @@ -84,7 +86,7 @@ export default function AwtisKat({anAwtis}) { {alias} - {anAwtis.teks.length} tèks + {`${paroles.data.length} ${paroles.data.length > 1 ? 'textes' : 'texte'}`} @@ -104,15 +106,15 @@ export default function AwtisKat({anAwtis}) { - + {esByografiOuve && ( @@ -123,5 +125,5 @@ export default function AwtisKat({anAwtis}) { } AwtisKat.propTypes = { - anAwtis: PropTypes.object.isRequired + artiste: PropTypes.object.isRequired } diff --git a/components/awtis/mizik-badj-meni.js b/components/awtis/mizik-badj-meni.js index e27a437..777bb07 100644 --- a/components/awtis/mizik-badj-meni.js +++ b/components/awtis/mizik-badj-meni.js @@ -37,13 +37,13 @@ const Root = styled('div')(( } })) -const sortTeks = teks => teks.sort((a, b) => b.id - a.id) +const sortTeks = paroles => paroles.sort((a, b) => b.id - a.id) -export default function MizikBadjMeni({teks}) { +export default function MizikBadjMeni({paroles}) { const [open, setOpen] = useState(false) const anchorRef = useRef(null) const router = useRouter() - const sortedTeks = sortTeks(teks) + const sortedTeks = sortTeks(paroles) const handleToggle = () => { setOpen(previousOpen_ => !previousOpen_) @@ -90,7 +90,7 @@ export default function MizikBadjMeni({teks}) { vertical: 'top', horizontal: 'right' }} - badgeContent={teks.length} + badgeContent={paroles.length} color='primary' > @@ -105,7 +105,7 @@ export default function MizikBadjMeni({teks}) { handleListKeyDown()}> - {sortedTeks.map(t => handleClick(t.slug)}>{t.tit})} + {sortedTeks.map(({id, attributes}) => handleClick(attributes.slug)}>{attributes.titre})} @@ -117,5 +117,5 @@ export default function MizikBadjMeni({teks}) { } MizikBadjMeni.propTypes = { - teks: PropTypes.array.isRequired + paroles: PropTypes.array.isRequired } diff --git a/components/awtis/mizik-lis.js b/components/awtis/mizik-lis.js index c54bfa8..5709591 100644 --- a/components/awtis/mizik-lis.js +++ b/components/awtis/mizik-lis.js @@ -27,7 +27,7 @@ const StyledList = styled(List)(( } })) -export default function MizikLis({meteEsMobilOuve, niAwtis, teks, slugTeksChwazi, meteSlugTeksChwazi}) { +export default function MizikLis({meteEsMobilOuve, niAwtis, paroles, slugTeksChwazi, meteSlugTeksChwazi}) { const router = useRouter() const handleClick = slug => { @@ -50,22 +50,22 @@ export default function MizikLis({meteEsMobilOuve, niAwtis, teks, slugTeksChwazi return ( - {teks.map(({slug, tit, awtis, published_at, okiMizikID, eksplisit}) => ( + {paroles.map(({id, attributes}) => ( handleClick(slug)} + id={attributes.slug} + selected={slugTeksChwazi === attributes.slug} + onClick={() => handleClick(attributes.slug)} > - alias)) : null} /> - {eksplisit && ( + attributes.alias)) : null} /> + {attributes.explicite && ( )} - {okiMizikID && ( + {attributes.okiMizikID && ( )} - {esBrandNew(published_at) && ( + {esBrandNew(attributes.publishedAt) && ( )} @@ -77,7 +77,7 @@ export default function MizikLis({meteEsMobilOuve, niAwtis, teks, slugTeksChwazi MizikLis.propTypes = { meteEsMobilOuve: PropTypes.func, niAwtis: PropTypes.bool, - teks: PropTypes.array.isRequired, + paroles: PropTypes.array.isRequired, slugTeksChwazi: PropTypes.string, meteSlugTeksChwazi: PropTypes.func } diff --git a/components/komante/ekri-komante.js b/components/komante/ekri-komante.js index 6fd045e..34d8338 100644 --- a/components/komante/ekri-komante.js +++ b/components/komante/ekri-komante.js @@ -11,26 +11,25 @@ import { } from '@mui/material' import MuiAlert from '@mui/material/Alert' -const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337' +const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337/api' const Alert = forwardRef(function Alert(props, ref) { return }) -function EkriKomante({session, teks, meteEsKomanteOuve}) { +function EkriKomante({session, paroleId, meteEsKomanteOuve}) { const {jwt, user} = session - const {id} = teks const [komante, meteKomante] = useState({kontni: ''}) const [ere, meteEre] = useState('') const [sikse, meteSikse] = useState('') const [chaje, meteChaje] = useState(false) const [esOuve, meteEsOuve] = useState(false) - const handleClick = () => { + const handleClick = async () => { meteChaje(true) const {kontni} = komante if (kontni === '') { - meteEre({mesaj: 'Champ obligatoire'}) + meteEre({error: {message: 'Champ obligatoire'}}) meteChaje(false) return @@ -41,21 +40,28 @@ function EkriKomante({session, teks, meteEsKomanteOuve}) { Authorization: `Bearer ${jwt}` } - axios.post(`${API_URL}/komante`, { - kontni, - teks: id, - user: user.id - }, { - headers - }) - .then(() => { - meteSikse('Commentaire envoyé avec succès. Il apparaîtra sur le site après validation.') - meteChaje(false) - }) - .catch(error => { - meteEre(error) - meteChaje(false) + try { + await axios.post(`${API_URL}/commentaires`, { + data: { + contenu: kontni, + parole: paroleId, + user: { + id: user.id, + username: user.username, + email: user.email + }, + datePublication: new Date() + } + }, { + headers }) + + meteSikse('Commentaire envoyé avec succès. Il apparaîtra sur le site après validation.') + meteChaje(false) + } catch (error) { + meteEre(error?.response?.data) + meteChaje(false) + } } const handleUpdate = useCallback(update => { @@ -97,10 +103,10 @@ function EkriKomante({session, teks, meteEsKomanteOuve}) { fullWidth multiline required - helperText='Votre commentaire (obligatoire)' + helperText='*Obligatoire. 500 caractères maximum' style={{marginTop: '1em'}} id='komante' - label='Kòmantè' + label='Commentaire' value={komante.kontni} rows={8} variant='outlined' @@ -123,16 +129,16 @@ function EkriKomante({session, teks, meteEsKomanteOuve}) { {chaje && } {sikse && ( - + {sikse} )} {ere && ( - + - Une erreur s’est produite : {ere.message} + Une erreur s’est produite : {ere?.error?.message} )} @@ -142,7 +148,7 @@ function EkriKomante({session, teks, meteEsKomanteOuve}) { EkriKomante.propTypes = { session: PropTypes.object.isRequired, - teks: PropTypes.object.isRequired, + paroleId: PropTypes.number.isRequired, meteEsKomanteOuve: PropTypes.func.isRequired } diff --git a/components/komante/komante-list.js b/components/komante/komante-list.js index 4935647..c70b7dc 100644 --- a/components/komante/komante-list.js +++ b/components/komante/komante-list.js @@ -35,23 +35,23 @@ const StyledList = styled(List)(( } })) -export default function KomanteList({komante}) { +export default function KomanteList({commentaires}) { return ( - {komante.map(({id, username, kontni, sentAt}) => ( + {commentaires.map(({id, attributes}) => (
- {username} + + {attributes.user.data.attributes.username} } /> - {format(new Date(sentAt), 'Pp', {locale: fr})} + {format(new Date(attributes.datePublication), 'Pp', {locale: fr})} } /> @@ -63,5 +63,5 @@ export default function KomanteList({komante}) { } KomanteList.propTypes = { - komante: PropTypes.array.isRequired + commentaires: PropTypes.array.isRequired } diff --git a/components/komante/vwe-komante.js b/components/komante/vwe-komante.js index a4e3989..bc4f3d7 100644 --- a/components/komante/vwe-komante.js +++ b/components/komante/vwe-komante.js @@ -45,7 +45,7 @@ const Root = styled('div')(( const KomanteTooltip = Tooltip -export default function VweKomante({komante, teks}) { +export default function VweKomante({commentaires, parole, paroleId}) { const [esOuve, meteEsOuve] = useState(false) const [esKoneksyonOuve, meteEsKoneksyonOuve] = useState(false) const [esKomenteOuve, meteEsKomanteOuve] = useState(false) @@ -88,7 +88,7 @@ export default function VweKomante({komante, teks}) { size='large' onClick={handleClick} > - + @@ -109,8 +109,8 @@ export default function VweKomante({komante, teks}) { tabIndex={-1} component='div' > - {komante.length > 0 ? ( - + {commentaires.length > 0 ? ( + ) : ( Aucun commentaire @@ -140,7 +140,7 @@ export default function VweKomante({komante, teks}) { )} {session && session.user && esKomenteOuve && ( <> - + @@ -152,10 +152,11 @@ export default function VweKomante({komante, teks}) { } VweKomante.defaultProps = { - komante: null + commentaires: null } VweKomante.propTypes = { - komante: PropTypes.array, - teks: PropTypes.object.isRequired + commentaires: PropTypes.array, + parole: PropTypes.object.isRequired, + paroleId: PropTypes.number.isRequired } diff --git a/components/password/reset-dialog.js b/components/password/reset-dialog.js index b58c704..227bf98 100644 --- a/components/password/reset-dialog.js +++ b/components/password/reset-dialog.js @@ -1,6 +1,5 @@ import {useState} from 'react' import PropTypes from 'prop-types' -import axios from 'axios' import Button from '@mui/material/Button' import TextField from '@mui/material/TextField' import Dialog from '@mui/material/Dialog' @@ -10,9 +9,7 @@ import DialogContentText from '@mui/material/DialogContentText' import DialogTitle from '@mui/material/DialogTitle' import {validateEmail} from '../../lib/utils/emails' -import {jwennUserEpiEmail} from '../../lib/oki-api' - -const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337' +import {jwennUserEpiEmail, passwordRequest} from '../../lib/oki-api' export default function ResetDialog({lyen, title, activation, content, open, setOpen, setLoading, setError, setSuccess}) { const [email, setEmail] = useState('') @@ -20,9 +17,7 @@ export default function ResetDialog({lyen, title, activation, content, open, set const forgotPasswordRequest = async () => { setLoading(true) try { - await axios.post(`${API_URL}/auth/${lyen}`, { - email - }) + await passwordRequest(lyen, email) if (activation) { const user = await jwennUserEpiEmail(email) diff --git a/components/soumet/ajoute-tradiksyon.js b/components/soumet/ajoute-tradiksyon.js index 996cff6..bb81c6b 100644 --- a/components/soumet/ajoute-tradiksyon.js +++ b/components/soumet/ajoute-tradiksyon.js @@ -67,7 +67,7 @@ function AjouteTradiksyon({showSwitch, disableSwitch, tradiksyonOtomatik, setTra return ( <> {showSwitch && ( - + )}