fix: try to submit and render messages and scroll them into view more

quickly
This commit is contained in:
Andy Burke 2025-10-11 17:42:16 -07:00
parent 8f818fc1ee
commit 14a33fc77d
2 changed files with 20 additions and 10 deletions

View file

@ -68,6 +68,7 @@ function smarten_feeds() {
return feed.__target_element?.(item) ?? feed;
};
feed.__autoscroll_debounce_timeout = undefined;
feed.__render = async (item) => {
feed.__context =
feed.__context ??
@ -118,6 +119,24 @@ function smarten_feeds() {
);
break;
}
if (feed.dataset.autoscroll) {
if (feed.__autoscroll_debounce_timeout) {
clearTimeout(feed.__autoscroll_debounce_timeout);
}
feed.__autoscroll_debounce_timeout = setTimeout(() => {
feed.scrollTo({
behavior: "auto",
left: 0,
top:
(feed.dataset.insert ?? "append") === "append"
? feed.scrollHeight
: 0,
});
feed.__autoscroll_debounce_timeout = undefined;
}, 15);
}
}
};
@ -182,22 +201,12 @@ function smarten_feeds() {
feed.dataset.hydrated = true;
feed.dataset.last_update = new Date().toISOString();
feed.__attempts_since_last_successful_update = 0;
if (feed.dataset.autoscroll) {
setTimeout(() => {
feed.scrollTop =
(feed.dataset.insert ?? "append") === "append"
? feed.scrollHeight
: 0;
}, 50);
}
})
.catch((error) => {
if (error === "smartfeed:stopped") {
return;
}
debugger;
feed.dataset.error = JSON.stringify(error);
console.trace(error);
})

View file

@ -195,6 +195,7 @@ function smarten_forms() {
form.querySelectorAll("[enter-key-submits]").forEach((element) => {
element.addEventListener("keypress", (event) => {
if (event.key === "Enter" && !event.shiftKey) {
event.preventDefault();
form.requestSubmit();
}
});