28 lines
875 B
JavaScript
28 lines
875 B
JavaScript
|
const runChat = async () => {
|
||
|
const frenId =
|
||
|
new URLSearchParams(document.location.search).get("fren_id") ??
|
||
|
document.getElementById("fren_id").value;
|
||
|
const html = await fetch(`/chat/messages?fren_id=${frenId}`).then((r) =>
|
||
|
r.text(),
|
||
|
);
|
||
|
|
||
|
const { scrollTop, scrollHeight } = document.getElementById(
|
||
|
"chat-container",
|
||
|
) ?? { scrollTop: 0 };
|
||
|
const isAtEdge = scrollTop === scrollHeight || scrollTop === 0;
|
||
|
document.getElementById("messages").innerHTML = html;
|
||
|
if (isAtEdge) {
|
||
|
document.getElementById("chat-container").scrollTop =
|
||
|
document.getElementById("chat-container").scrollHeight;
|
||
|
} else {
|
||
|
// save the position.
|
||
|
document.getElementById("chat-container").scrollTop = scrollTop;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
setTimeout(() => {
|
||
|
if (document.location.pathname === "/chat") {
|
||
|
runChat().then(() => setInterval(runChat, 5_000));
|
||
|
}
|
||
|
}, 200);
|