Show widget messages immediately
This commit is contained in:
+15
-4
@@ -158,6 +158,10 @@
|
|||||||
if (!body.message.trim() && !body.attachments.length) return;
|
if (!body.message.trim() && !body.attachments.length) return;
|
||||||
const pendingMessage = queuePendingMessage(body);
|
const pendingMessage = queuePendingMessage(body);
|
||||||
const submitButton = root.querySelector(".mf-send");
|
const submitButton = root.querySelector(".mf-send");
|
||||||
|
form.message.value = "";
|
||||||
|
selectedFiles = [];
|
||||||
|
renderSelectedFiles(attachmentList, selectedFiles);
|
||||||
|
addMessage(messages, "visitor", "Visitor", body.message, body.attachments || [], null);
|
||||||
submitButton.disabled = true;
|
submitButton.disabled = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -165,9 +169,6 @@
|
|||||||
removePendingMessage(pendingMessage.clientMessageId);
|
removePendingMessage(pendingMessage.clientMessageId);
|
||||||
session.conversationId = data.conversation.id;
|
session.conversationId = data.conversation.id;
|
||||||
saveSession();
|
saveSession();
|
||||||
form.message.value = "";
|
|
||||||
selectedFiles = [];
|
|
||||||
renderSelectedFiles(attachmentList, selectedFiles);
|
|
||||||
handleConversationUpdate(data, messages, panel, launcher, settings, messageEffectState, { notify: false });
|
handleConversationUpdate(data, messages, panel, launcher, settings, messageEffectState, { notify: false });
|
||||||
connectEvents(messages, typing, panel, launcher, settings, messageEffectState);
|
connectEvents(messages, typing, panel, launcher, settings, messageEffectState);
|
||||||
startConversationPolling(messages, panel, launcher, settings, messageEffectState);
|
startConversationPolling(messages, panel, launcher, settings, messageEffectState);
|
||||||
@@ -388,13 +389,23 @@
|
|||||||
}
|
}
|
||||||
const item = document.createElement("article");
|
const item = document.createElement("article");
|
||||||
item.className = `mf-message ${sender}`;
|
item.className = `mf-message ${sender}`;
|
||||||
item.innerHTML = `${body ? `<p>${escapeHtml(body)}</p>` : ""}${attachments.map((a) => `<a class="mf-photo" href="${apiBase}${a.url}" target="_blank" rel="noreferrer"><img src="${apiBase}${a.url}" alt="${escapeHtml(a.name)}"></a>`).join("")}`;
|
item.innerHTML = `${body ? `<p>${escapeHtml(body)}</p>` : ""}${attachments.map((a) => {
|
||||||
|
const src = attachmentSrc(a);
|
||||||
|
return `<a class="mf-photo" href="${src}" target="_blank" rel="noreferrer"><img src="${src}" alt="${escapeHtml(a.name)}"></a>`;
|
||||||
|
}).join("")}`;
|
||||||
messages.append(item);
|
messages.append(item);
|
||||||
for (const image of item.querySelectorAll("img")) {
|
for (const image of item.querySelectorAll("img")) {
|
||||||
image.addEventListener("load", () => scrollMessagesToBottom(messages), { once: true });
|
image.addEventListener("load", () => scrollMessagesToBottom(messages), { once: true });
|
||||||
image.addEventListener("error", () => scrollMessagesToBottom(messages), { once: true });
|
image.addEventListener("error", () => scrollMessagesToBottom(messages), { once: true });
|
||||||
}
|
}
|
||||||
scrollMessagesToBottom(messages);
|
scrollMessagesToBottom(messages);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attachmentSrc(attachment) {
|
||||||
|
if (attachment?.dataBase64) return attachment.dataBase64;
|
||||||
|
if (attachment?.url) return `${apiBase}${attachment.url}`;
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
function scrollMessagesToBottom(messages) {
|
function scrollMessagesToBottom(messages) {
|
||||||
|
|||||||
Reference in New Issue
Block a user