fix: walk message-author-name + chat-pane-message as siblings in document order
This commit is contained in:
parent
19c5b2ce17
commit
537f5a52e5
@ -53,30 +53,32 @@ _POLL_JS = r"""() => {
|
|||||||
return msgs;
|
return msgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Meeting chat: chat-pane-message with message-author-name inside (visible only)
|
// Meeting chat: message-author-name is a SIBLING of chat-pane-message, not a child.
|
||||||
Array.from(document.querySelectorAll("[data-tid='chat-pane-message']"))
|
// Walk both element types in document order, tracking current sender.
|
||||||
.filter(isVisible)
|
const chatEls = Array.from(document.querySelectorAll(
|
||||||
.forEach((msg, idx) => {
|
"[data-tid='message-author-name'], [data-tid='chat-pane-message']"
|
||||||
const senderEl = msg.querySelector("[data-tid='message-author-name']");
|
));
|
||||||
const sender = senderEl ? senderEl.innerText.trim() : '';
|
let currentSender = '';
|
||||||
if (!sender) return;
|
chatEls.forEach((el, idx) => {
|
||||||
// Try <p> elements first (plain text messages)
|
const tid = el.getAttribute('data-tid');
|
||||||
const pEls = msg.querySelectorAll('p');
|
if (tid === 'message-author-name') {
|
||||||
|
currentSender = el.innerText.trim();
|
||||||
|
} else if (tid === 'chat-pane-message' && currentSender && isVisible(el)) {
|
||||||
|
const pEls = el.querySelectorAll('p');
|
||||||
let text;
|
let text;
|
||||||
if (pEls.length > 0) {
|
if (pEls.length > 0) {
|
||||||
text = Array.from(pEls).map(p => p.innerText.trim()).filter(t => t).join('\n');
|
text = Array.from(pEls).map(p => p.innerText.trim()).filter(t => t).join('\n');
|
||||||
} else {
|
} else {
|
||||||
// Fallback: strip sender name + timestamp from innerText
|
let raw = el.innerText.trim();
|
||||||
let raw = msg.innerText.trim();
|
if (currentSender && raw.startsWith(currentSender)) {
|
||||||
if (sender && raw.startsWith(sender)) {
|
raw = raw.slice(currentSender.length);
|
||||||
raw = raw.slice(sender.length);
|
|
||||||
}
|
}
|
||||||
// Remove leading timestamp like "13:30" or "1:30 PM"
|
|
||||||
raw = raw.replace(/^\s*\d{1,2}:\d{2}(?:\s*(?:AM|PM))?\s*/i, '').trim();
|
raw = raw.replace(/^\s*\d{1,2}:\d{2}(?:\s*(?:AM|PM))?\s*/i, '').trim();
|
||||||
text = raw;
|
text = raw;
|
||||||
}
|
}
|
||||||
const id = msg.getAttribute('id') || (sender + '_' + text.substring(0, 40));
|
const id = el.getAttribute('id') || (currentSender + '_' + text.substring(0, 40));
|
||||||
msgs.push({ sender, text, id });
|
if (text) msgs.push({ sender: currentSender, text, id });
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return msgs;
|
return msgs;
|
||||||
}"""
|
}"""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user