add: increase group maximum, better read receipts

This commit is contained in:
trisua 2025-09-02 19:30:03 -04:00
parent 0b242ac5f0
commit 9546c580e7
4 changed files with 41 additions and 18 deletions

View file

@ -13,11 +13,11 @@ function create_streamer(chat_id, hook_element) {
STATE.stream_element = hook_element.parentElement;
STATE.observer = new IntersectionObserver(
() => {
(entries) => {
load_messages();
},
{
root: STATE.stream_element,
root: document.body,
rootMargin: "0px",
scrollMargin: "0px",
threshold: 1.0,
@ -52,8 +52,6 @@ function load_messages() {
.getAttribute("data-first-message-time"),
);
// STATE.stream_element.scrollTo(0, STATE.stream_element.scrollHeight);
if (document.getElementById(`msgs_quit_${STATE.id}`)) {
STATE.observer.disconnect();
console.log("quit");
@ -64,6 +62,10 @@ function load_messages() {
),
);
STATE.stream_element
.querySelector("[ui_ident=data_marker]")
.remove();
const element = document.createElement("div");
element.setAttribute("ui_ident", "data_marker");
STATE.stream_element.append(element);
@ -80,10 +82,21 @@ function render_message(id) {
STATE.is_loading = false;
STATE.stream_element.innerHTML = `${res}${STATE.stream_element.innerHTML}`;
mark_message_read();
STATE.stream_element.scrollTo(0, STATE.stream_element.scrollHeight);
scroll_bottom();
if (document.getElementById("delivered_read_status")) {
document.getElementById("delivered_read_status").remove(); // clear read receipt box
}
});
}
function scroll_bottom() {
STATE.stream_element.parentElement.scrollTo(
0,
STATE.stream_element.parentElement.scrollHeight,
);
}
function sock_con() {
const socket = new WebSocket(
`//${window.location.origin.split("//")[1]}/api/v1/chats/${STATE.chat_id}/_connect`,
@ -109,7 +122,7 @@ function sock_con() {
} else if (msg.method === "ReadReceipt") {
setTimeout(() => {
read_receipt();
}, 1500);
}, 150);
}
});
}
@ -164,7 +177,7 @@ function read_receipt() {
fetch(`/chats/_templates/chat/${STATE.chat_id}/read_receipt`)
.then((res) => res.text())
.then((res) => {
STATE.stream_element.innerHTML = `${res}${STATE.stream_element.innerHTML}`;
document.getElementById("read_receipt_zone").innerHTML = res;
});
}