feature: try to get chat to actually work

This commit is contained in:
Andy Burke 2025-07-11 18:33:32 -07:00
parent 51acbef35f
commit 013e30264f
13 changed files with 1203 additions and 631 deletions

View file

@ -2,10 +2,17 @@ document.addEventListener("DOMContentLoaded", () => {
/* make all forms semi-smart */
const forms = document.querySelectorAll("form[data-smart]");
for (const form of forms) {
const script = form.querySelector("script");
form.onsubmit = async (event) => {
async function on_submit(event) {
event.preventDefault();
form.disabled = true;
if (form.on_submit) {
const result = await form.on_submit(event);
if (result === false) {
form.disabled = false;
return;
}
}
const url = form.action;
const method = form.dataset.method ?? "POST";
@ -24,13 +31,11 @@ document.addEventListener("DOMContentLoaded", () => {
current[elements.slice(elements.length - 1).shift()] = value;
}
console.dir({
method,
form,
json,
});
if (form.on_parsed) {
await form.on_parsed(json);
}
try {
// TODO: send session header
const options = {
method,
headers: {
@ -56,21 +61,30 @@ document.addEventListener("DOMContentLoaded", () => {
return;
}
const response_body = await response.json();
if (form.on_response) {
return form.on_response(response_body);
await form.on_response(response);
}
const response_body = await response.json();
if (form.on_reply) {
return form.on_reply(response_body);
}
} catch (error) {
console.dir({
error,
});
if (form.onerror) {
return form.onerror(error);
if (form.on_error) {
return form.on_error(error);
}
alert(error);
} finally {
form.disabled = false;
}
};
}
form.addEventListener("submit", on_submit);
//form.onsubmit = on_submit;
}
});