Fixed broken chat reading.

This commit is contained in:
Storm Dragon
2026-05-29 18:13:38 -04:00
parent 8e265edbbd
commit 4f35f4b933
3 changed files with 102 additions and 3 deletions
+39 -2
View File
@@ -2589,6 +2589,10 @@ function formatTime(time) {
/** @type {lastMessage} */
let lastMessage = {};
/** @type {Object.<string, {queue: string[], active: boolean}>} */
let liveRegionStates = {};
let liveRegionDelay = 700;
/**
* @param {string} text
* @param {string} elementId
@@ -2598,9 +2602,42 @@ function announceLiveRegion(text, elementId) {
if(!announcement)
return;
announcement.textContent = '';
let state = liveRegionStates[elementId];
if(!state) {
state = {queue: [], active: false};
liveRegionStates[elementId] = state;
}
state.queue.push(String(text));
if(!state.active)
flushLiveRegion(elementId);
}
/**
* @param {string} elementId
*/
function flushLiveRegion(elementId) {
let state = liveRegionStates[elementId];
let announcement = document.getElementById(elementId);
if(!state || !announcement) {
if(state)
state.active = false;
return;
}
let text = state.queue.shift();
if(text === undefined) {
state.active = false;
return;
}
state.active = true;
announcement.replaceChildren();
window.setTimeout(() => {
announcement.textContent = text;
let item = document.createElement('div');
item.textContent = text;
announcement.appendChild(item);
window.setTimeout(() => flushLiveRegion(elementId), liveRegionDelay);
}, 20);
}