2021-06-02 02:22:43 +02:00
|
|
|
import React, {useState} from 'react'
|
|
|
|
|
import PropTypes from 'prop-types'
|
|
|
|
|
|
|
|
|
|
import {makeStyles} from '@material-ui/core/styles'
|
|
|
|
|
import SpeedDial from '@material-ui/lab/SpeedDial'
|
|
|
|
|
import SpeedDialIcon from '@material-ui/lab/SpeedDialIcon'
|
|
|
|
|
import SpeedDialAction from '@material-ui/lab/SpeedDialAction'
|
|
|
|
|
import FileCopyIcon from '@material-ui/icons/FileCopyOutlined'
|
|
|
|
|
import ShareIcon from '@material-ui/icons/Share'
|
|
|
|
|
import TwitterIcon from '@material-ui/icons/Twitter'
|
|
|
|
|
import {Backdrop} from '@material-ui/core'
|
|
|
|
|
|
|
|
|
|
const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL
|
|
|
|
|
const TWITTER_HASHTAGS = process.env.NEXT_PUBLIC_TWITTER_HASHTAGS || 'OKi'
|
|
|
|
|
const TWITTER_USERNAME = process.env.NEXT_PUBLIC_TWITTER_USERNAME || 'oki_972'
|
|
|
|
|
|
|
|
|
|
const useStyles = makeStyles(() => ({
|
|
|
|
|
root: {
|
|
|
|
|
height: 0,
|
|
|
|
|
transform: 'translateZ(0px)'
|
|
|
|
|
}
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
const actions = [
|
|
|
|
|
{icon: <TwitterIcon />, name: 'Twitter', code: 'twitter'},
|
|
|
|
|
{icon: <FileCopyIcon />, name: 'Copier le lien', code: 'copy'}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
export default function Pataje({teks, setError, setSuccess}) {
|
|
|
|
|
const classes = useStyles()
|
|
|
|
|
const {tit, awtis, slug} = teks
|
|
|
|
|
const [open, setOpen] = useState(false)
|
|
|
|
|
|
|
|
|
|
const patajeUrl = `${SITE_URL}/teks/${slug}#${slug}`
|
|
|
|
|
const renderAwtis = awtis.map(a => a.alias).join(', ')
|
|
|
|
|
|
2021-06-02 19:25:53 +02:00
|
|
|
const text = teks.user ? `${renderAwtis} - ${tit} (Pawòl) - (texte soumis par ${teks.user.username})` : `${renderAwtis} - ${tit} (Pawòl)`
|
2021-06-02 02:22:43 +02:00
|
|
|
const twitterUrl = 'https://twitter.com/intent/tweet'
|
|
|
|
|
|
|
|
|
|
const handleClose = () => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleOpen = () => {
|
|
|
|
|
setOpen(true)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleClick = code => {
|
|
|
|
|
if (typeof window !== 'undefined' && code === 'twitter') {
|
|
|
|
|
window.open(`${twitterUrl}?hashtags=${TWITTER_HASHTAGS}&text=${text}&via=${TWITTER_USERNAME}&url=${patajeUrl}`, 'Partage Twitter', 'width=600,height=300')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (typeof window !== 'undefined' && code === 'copy') {
|
|
|
|
|
navigator.clipboard.writeText(patajeUrl)
|
|
|
|
|
.then(
|
|
|
|
|
() => setSuccess('Lien copié avec succès'),
|
|
|
|
|
() => setError('Error lors de la copie du lien')
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setOpen(false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className={classes.root}>
|
|
|
|
|
<Backdrop open={open} />
|
|
|
|
|
<SpeedDial
|
|
|
|
|
FabProps={{size: 'small', margin: 'auto', color: 'default'}}
|
|
|
|
|
ariaLabel='Patajé'
|
|
|
|
|
icon={<SpeedDialIcon icon={<ShareIcon />} />}
|
|
|
|
|
open={open}
|
2021-06-05 21:24:27 +02:00
|
|
|
direction='down'
|
2021-06-02 02:22:43 +02:00
|
|
|
onClose={handleClose}
|
|
|
|
|
onOpen={handleOpen}
|
|
|
|
|
>
|
|
|
|
|
{actions.map(action => (
|
|
|
|
|
<SpeedDialAction
|
|
|
|
|
key={action.name}
|
|
|
|
|
icon={action.icon}
|
2021-06-05 21:24:27 +02:00
|
|
|
tooltipPlacement='right'
|
2021-06-02 02:22:43 +02:00
|
|
|
tooltipTitle={action.name}
|
|
|
|
|
onClick={() => handleClick(action.code)}
|
|
|
|
|
/>
|
|
|
|
|
))}
|
|
|
|
|
</SpeedDial>
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Pataje.propTypes = {
|
|
|
|
|
teks: PropTypes.object.isRequired,
|
|
|
|
|
setError: PropTypes.func.isRequired,
|
|
|
|
|
setSuccess: PropTypes.func.isRequired
|
|
|
|
|
}
|