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; return feed.__target_element?.(item) ?? feed;
}; };
feed.__autoscroll_debounce_timeout = undefined;
feed.__render = async (item) => { feed.__render = async (item) => {
feed.__context = feed.__context =
feed.__context ?? feed.__context ??
@ -118,6 +119,24 @@ function smarten_feeds() {
); );
break; 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.hydrated = true;
feed.dataset.last_update = new Date().toISOString(); feed.dataset.last_update = new Date().toISOString();
feed.__attempts_since_last_successful_update = 0; 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) => { .catch((error) => {
if (error === "smartfeed:stopped") { if (error === "smartfeed:stopped") {
return; return;
} }
debugger;
feed.dataset.error = JSON.stringify(error); feed.dataset.error = JSON.stringify(error);
console.trace(error); console.trace(error);
}) })

View file

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