diff --git a/chat/static/chat.js b/chat/static/chat.js index dcef533..30ce636 100644 --- a/chat/static/chat.js +++ b/chat/static/chat.js @@ -235,9 +235,18 @@ function redrawMessages() { fetchMoreButton.classList.remove('d-none') } +function removeAllPopovers() { + for (let popover of document.querySelectorAll('*[aria-describedby*="popover"]')) { + let instance = bootstrap.Popover.getInstance(popover) + if (instance) + instance.dispose() + } +} + function registerSendPrivateMessageContextMenu(message, element) { element.addEventListener('contextmenu', (menu_event) => { menu_event.preventDefault() + removeAllPopovers() const popover = bootstrap.Popover.getOrCreateInstance(element, { 'title': message['author'], 'content': `Envoyer un message privé`, @@ -247,7 +256,7 @@ function registerSendPrivateMessageContextMenu(message, element) { document.getElementById('send-private-message-link-' + message['id']).addEventListener('click', event => { event.preventDefault() - popover.hide() + popover.dispose() socket.send(JSON.stringify({ 'type': 'start_private_chat', 'user_id': message['author_id'], @@ -259,10 +268,13 @@ function registerSendPrivateMessageContextMenu(message, element) { function registerMessageContextMenu(message, element) { element.addEventListener('contextmenu', (menu_event) => { menu_event.preventDefault() + removeAllPopovers() let content = `Envoyer un message privé` - content += `