45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import useTranslation from 'next-translate/useTranslation'
|
|
|
|
import { useAuthentication } from '../../../../../tools/authentication'
|
|
import { Emoji } from '../../../../Emoji'
|
|
import type { MessageProps } from '../Message'
|
|
|
|
interface MessageOptionsProps extends MessageProps {
|
|
handleEdit: () => void
|
|
editMode: ':white_check_mark:' | ':pencil2:'
|
|
}
|
|
|
|
export const MessageOptions: React.FC<
|
|
React.PropsWithChildren<MessageOptionsProps>
|
|
> = ({ handleEdit, editMode, message }) => {
|
|
const { t } = useTranslation()
|
|
const { authentication } = useAuthentication()
|
|
|
|
const handleDeleteMessage = async (): Promise<void> => {
|
|
try {
|
|
await authentication.api.delete(`/messages/${message.id}`)
|
|
} catch {}
|
|
}
|
|
|
|
return (
|
|
<div className='absolute -top-8 right-6 flex opacity-0 transition-opacity group-hover:opacity-100'>
|
|
{message.type === 'text' && (
|
|
<div
|
|
className='message-options rounded-l-lg border-l-slate-600'
|
|
title={t('application:edit')}
|
|
onClick={handleEdit}
|
|
>
|
|
<Emoji value={editMode} size={18} />
|
|
</div>
|
|
)}
|
|
<div
|
|
className='message-options rounded-r-lg border-r-slate-600'
|
|
title={t('application:delete')}
|
|
onClick={handleDeleteMessage}
|
|
>
|
|
<Emoji value=':wastebasket:' size={18} />
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|