1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-06-21 12:38:26 +02:00

Editing and deleting is working

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello
2024-04-28 16:56:30 +02:00
parent 0cab21f344
commit 1e5d0ebcfc
2 changed files with 96 additions and 9 deletions

View File

@ -122,6 +122,16 @@ function receiveMessage(message) {
showNotification(channels[message['channel_id']]['name'], `${message['author']} : ${message['content']}`)
}
function editMessage(data) {
messages[data['channel_id']].get(data['id'])['content'] = data['content']
redrawMessages()
}
function deleteMessage(data) {
messages[data['channel_id']].delete(data['id'])
redrawMessages()
}
function fetchMessages(channel_id, offset = 0, limit = MAX_MESSAGES) {
socket.send(JSON.stringify({
'type': 'fetch_messages',
@ -270,11 +280,14 @@ function registerMessageContextMenu(message, element) {
menu_event.preventDefault()
removeAllPopovers()
let content = `<a id="send-private-message-link-msg-${message['id']}" class="nav-link" href="#" tabindex="0">Envoyer un message privé</a>`
if (message['author_id'] === USER_ID || IS_ADMIN) {
let has_right_to_edit = message['author_id'] === USER_ID || IS_ADMIN
if (has_right_to_edit) {
content += `<hr class="my-1">`
content += `<a class="nav-link" href="#" tabindex="0">Modifier</a>`
content += `<a class="nav-link" href="#" tabindex="0">Supprimer</a>`
content += `<a id="edit-message-${message['id']}" class="nav-link" href="#" tabindex="0">Modifier</a>`
content += `<a id="delete-message-${message['id']}" class="nav-link" href="#" tabindex="0">Supprimer</a>`
}
const popover = bootstrap.Popover.getOrCreateInstance(element, {
'content': content,
'html': true,
@ -290,6 +303,32 @@ function registerMessageContextMenu(message, element) {
'user_id': message['author_id'],
}))
})
if (has_right_to_edit) {
document.getElementById('edit-message-' + message['id']).addEventListener('click', event => {
event.preventDefault()
popover.dispose()
let new_message = prompt("Modifier le message", message['content'])
if (new_message) {
socket.send(JSON.stringify({
'type': 'edit_message',
'message_id': message['id'],
'content': new_message,
}))
}
})
document.getElementById('delete-message-' + message['id']).addEventListener('click', event => {
event.preventDefault()
popover.dispose()
if (confirm("Supprimer le message ?")) {
socket.send(JSON.stringify({
'type': 'delete_message',
'message_id': message['id'],
}))
}
})
}
})
}
@ -322,6 +361,12 @@ document.addEventListener('DOMContentLoaded', () => {
case 'send_message':
receiveMessage(data)
break
case 'edit_message':
editMessage(data)
break
case 'delete_message':
deleteMessage(data)
break
case 'fetch_messages':
receiveFetchedMessages(data)
break