fix(ui): prevent empty chat bubbles when message content is empty
This commit is contained in:
parent
68bb516ec2
commit
785187868e
2 changed files with 32 additions and 45 deletions
|
|
@ -1198,8 +1198,10 @@
|
||||||
streamingMessageId = null;
|
streamingMessageId = null;
|
||||||
currentStreamingContent = "";
|
currentStreamingContent = "";
|
||||||
} else {
|
} else {
|
||||||
|
if (r.content && r.content.trim() !== "") {
|
||||||
addMessage("assistant", r.content, false);
|
addMessage("assistant", r.content, false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!isStreaming) {
|
if (!isStreaming) {
|
||||||
isStreaming = true;
|
isStreaming = true;
|
||||||
|
|
|
||||||
|
|
@ -14,34 +14,21 @@
|
||||||
<div class="suggestions-container" id="suggestions"></div>
|
<div class="suggestions-container" id="suggestions"></div>
|
||||||
<div class="mention-dropdown" id="mentionDropdown">
|
<div class="mention-dropdown" id="mentionDropdown">
|
||||||
<div class="mention-header">
|
<div class="mention-header">
|
||||||
<span class="mention-title" data-i18n="chat-mention-title"
|
<span class="mention-title" data-i18n="chat-mention-title">Reference Entity</span>
|
||||||
>Reference Entity</span
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mention-results" id="mentionResults"></div>
|
<div class="mention-results" id="mentionResults"></div>
|
||||||
</div>
|
</div>
|
||||||
<form class="input-container" id="chatForm">
|
<form class="input-container" id="chatForm">
|
||||||
<input
|
<input name="content" id="messageInput" type="text" placeholder="Message... (type @ to mention)"
|
||||||
name="content"
|
data-i18n-placeholder="chat-placeholder" autofocus autocomplete="off" />
|
||||||
id="messageInput"
|
<button type="submit" id="sendBtn" title="Send" data-i18n-title="chat-send">
|
||||||
type="text"
|
|
||||||
placeholder="Message... (type @ to mention)"
|
|
||||||
data-i18n-placeholder="chat-placeholder"
|
|
||||||
autofocus
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
<button
|
|
||||||
type="submit"
|
|
||||||
id="sendBtn"
|
|
||||||
title="Send"
|
|
||||||
data-i18n-title="chat-send"
|
|
||||||
>
|
|
||||||
↑
|
↑
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</footer>
|
</footer>
|
||||||
<button class="scroll-to-bottom" id="scrollToBottom" title="Scroll to bottom">
|
<button class="scroll-to-bottom" id="scrollToBottom" title="Scroll to bottom">
|
||||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||||
|
stroke-linecap="round" stroke-linejoin="round">
|
||||||
<polyline points="6 9 12 15 18 9"></polyline>
|
<polyline points="6 9 12 15 18 9"></polyline>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -55,11 +42,7 @@
|
||||||
<div class="entity-card-title"></div>
|
<div class="entity-card-title"></div>
|
||||||
<div class="entity-card-details"></div>
|
<div class="entity-card-details"></div>
|
||||||
<div class="entity-card-actions">
|
<div class="entity-card-actions">
|
||||||
<button
|
<button class="entity-card-btn" data-action="view" data-i18n="action-view">
|
||||||
class="entity-card-btn"
|
|
||||||
data-action="view"
|
|
||||||
data-i18n="action-view"
|
|
||||||
>
|
|
||||||
View
|
View
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -737,8 +720,10 @@
|
||||||
if (isStreaming) {
|
if (isStreaming) {
|
||||||
finalizeStreaming();
|
finalizeStreaming();
|
||||||
} else {
|
} else {
|
||||||
|
if (data.content && data.content.trim() !== "") {
|
||||||
addMessage("bot", data.content);
|
addMessage("bot", data.content);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
isStreaming = false;
|
isStreaming = false;
|
||||||
|
|
||||||
// Render suggestions when message is complete
|
// Render suggestions when message is complete
|
||||||
|
|
@ -781,8 +766,8 @@
|
||||||
chip.textContent = suggestion.text || "Suggestion";
|
chip.textContent = suggestion.text || "Suggestion";
|
||||||
|
|
||||||
// Use window.sendMessage which is already exposed
|
// Use window.sendMessage which is already exposed
|
||||||
chip.onclick = (function(sugg) {
|
chip.onclick = (function (sugg) {
|
||||||
return function() {
|
return function () {
|
||||||
console.log("Suggestion clicked:", sugg);
|
console.log("Suggestion clicked:", sugg);
|
||||||
// Check if there's an action to parse
|
// Check if there's an action to parse
|
||||||
if (sugg.action) {
|
if (sugg.action) {
|
||||||
|
|
@ -861,7 +846,7 @@
|
||||||
window.sendMessage = sendMessage;
|
window.sendMessage = sendMessage;
|
||||||
|
|
||||||
// Expose session info for suggestion clicks
|
// Expose session info for suggestion clicks
|
||||||
window.getChatSessionInfo = function() {
|
window.getChatSessionInfo = function () {
|
||||||
return {
|
return {
|
||||||
ws: ws,
|
ws: ws,
|
||||||
currentBotId: currentBotId,
|
currentBotId: currentBotId,
|
||||||
|
|
@ -986,10 +971,10 @@
|
||||||
var botName = window.__INITIAL_BOT_NAME__ || "default";
|
var botName = window.__INITIAL_BOT_NAME__ || "default";
|
||||||
|
|
||||||
fetch("/api/bot/config?bot_name=" + encodeURIComponent(botName))
|
fetch("/api/bot/config?bot_name=" + encodeURIComponent(botName))
|
||||||
.then(function(response) {
|
.then(function (response) {
|
||||||
return response.json();
|
return response.json();
|
||||||
})
|
})
|
||||||
.then(function(config) {
|
.then(function (config) {
|
||||||
if (!config) return;
|
if (!config) return;
|
||||||
|
|
||||||
// Get the theme manager's theme for this bot to check if user selected a different theme
|
// Get the theme manager's theme for this bot to check if user selected a different theme
|
||||||
|
|
@ -1029,7 +1014,7 @@
|
||||||
document.documentElement.style.setProperty("--color2", color2);
|
document.documentElement.style.setProperty("--color2", color2);
|
||||||
document.documentElement.style.setProperty("--primary", color1);
|
document.documentElement.style.setProperty("--primary", color1);
|
||||||
document.documentElement.style.setProperty("--accent", color1);
|
document.documentElement.style.setProperty("--accent", color1);
|
||||||
console.log("Bot config colors applied:", {color1: color1, color2: color2});
|
console.log("Bot config colors applied:", { color1: color1, color2: color2 });
|
||||||
} else {
|
} else {
|
||||||
console.log("Bot config colors skipped - user selected custom theme:", localStorageTheme);
|
console.log("Bot config colors skipped - user selected custom theme:", localStorageTheme);
|
||||||
}
|
}
|
||||||
|
|
@ -1051,7 +1036,7 @@
|
||||||
|
|
||||||
console.log("Bot config loaded:", { color1: color1, color2: color2, title: title, logo: logo });
|
console.log("Bot config loaded:", { color1: color1, color2: color2, title: title, logo: logo });
|
||||||
})
|
})
|
||||||
.catch(function(e) {
|
.catch(function (e) {
|
||||||
console.log("Could not load bot config:", e);
|
console.log("Could not load bot config:", e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue