Moved replay to custom event

This commit is contained in:
BordedDev 2025-07-20 01:11:05 +02:00
parent 70eebefac7
commit 3e2dd7ea04
2 changed files with 16 additions and 9 deletions

View File

@ -9,6 +9,13 @@ import {app} from "./app.js";
const LONG_TIME = 1000 * 60 * 20 const LONG_TIME = 1000 * 60 * 20
export class ReplyEvent extends Event {
constructor(messageTextTarget) {
super('reply', { bubbles: true, composed: true });
this.messageTextTarget = messageTextTarget;
}
}
class MessageElement extends HTMLElement { class MessageElement extends HTMLElement {
// static observedAttributes = ['data-uid', 'data-color', 'data-channel_uid', 'data-user_nick', 'data-created_at', 'data-user_uid']; // static observedAttributes = ['data-uid', 'data-color', 'data-channel_uid', 'data-user_nick', 'data-created_at', 'data-user_uid'];
@ -51,6 +58,12 @@ class MessageElement extends HTMLElement {
} }
this.timeDiv = this.querySelector('.time span'); this.timeDiv = this.querySelector('.time span');
this.replyDiv = this.querySelector('.time a');
this.replyDiv.addEventListener('click', (e) => {
e.preventDefault();
this.dispatchEvent(new ReplyEvent(this.messageDiv));
})
} }
if (!this.siblingGenerated && this.nextElementSibling) { if (!this.siblingGenerated && this.nextElementSibling) {

View File

@ -143,15 +143,9 @@ function replyMessage(message) {
chatInputField.focus(); chatInputField.focus();
} }
messagesContainer.addEventListener("click", (e) => { messagesContainer.addEventListener("reply", (e) => {
if (e.target.tagName === "A" && e.target.getAttribute("href") === "#reply") { const messageText = e.messageTextTarget.textContent.trim();
e.preventDefault(); replyMessage(messageText);
const messageElement = e.target.closest("chat-message");
if (messageElement) {
const messageText = messageElement.querySelector(".text").textContent.trim();
replyMessage(messageText);
}
}
}) })
// --- Mention helpers --- // --- Mention helpers ---