Allow image-only visitor messages

This commit is contained in:
rajchales-monito
2026-07-23 23:38:33 +02:00
parent a303d10c9e
commit fdfbf5ecc4
3 changed files with 24 additions and 17 deletions
+17 -10
View File
@@ -69,21 +69,28 @@ $("#settingsForm").addEventListener("submit", async (event) => {
$("#replyForm").addEventListener("submit", async (event) => {
event.preventDefault();
if (!state.activeId) return;
const textarea = event.currentTarget.querySelector("textarea[name='message']");
const originalMessage = textarea.value;
const form = new FormData(event.currentTarget);
const payload = {
message: form.get("message") || "",
attachments: await Promise.all(state.replyFiles.slice(0, 3).map(fileToPayload))
};
if (!payload.message.trim() && !payload.attachments.length) return;
await api(`/api/admin/conversations/${state.activeId}/messages`, {
method: "POST",
body: payload
});
event.currentTarget.querySelector("textarea[name='message']").value = "";
event.currentTarget.reset();
state.replyFiles = [];
renderReplyAttachments();
await openConversation(state.activeId);
textarea.value = "";
try {
await api(`/api/admin/conversations/${state.activeId}/messages`, {
method: "POST",
body: payload
});
event.currentTarget.reset();
state.replyFiles = [];
renderReplyAttachments();
await openConversation(state.activeId);
} catch (error) {
textarea.value = originalMessage;
throw error;
}
});
$("#replyForm textarea").addEventListener("keydown", (event) => {
@@ -299,7 +306,7 @@ function renderActive() {
$("#messages").innerHTML = messages.map((message) => `
<article class="message ${message.senderType}">
<div class="by">${escapeHtml(message.senderName || message.senderType)} · ${escapeHtml(message.createdAt)}</div>
<p>${escapeHtml(message.body)}</p>
${message.body ? `<p>${escapeHtml(message.body)}</p>` : ""}
${renderAttachments(message.attachments)}
</article>
`).join("");