|
@@ -498,7 +498,7 @@
|
|
|
"</div></div>";
|
|
"</div></div>";
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
- if (msg.role === "ai") {
|
|
|
|
|
|
|
+ if (msg.role === "ai" || msg.role === "assistant") {
|
|
|
var aiText = String(msg.content || "").trim();
|
|
var aiText = String(msg.content || "").trim();
|
|
|
if (!aiText) continue;
|
|
if (!aiText) continue;
|
|
|
html +=
|
|
html +=
|
|
@@ -539,13 +539,32 @@
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function resolveShareMessagesForDisplay(data) {
|
|
|
|
|
- var messages = Array.isArray(data && data.messages) ? data.messages : [];
|
|
|
|
|
- if (messages.length) return messages;
|
|
|
|
|
- var text = String((data && data.content) || "").trim();
|
|
|
|
|
- if (!text) return [];
|
|
|
|
|
|
|
+ function countDisplayableMessages(messages) {
|
|
|
|
|
+ var list = Array.isArray(messages) ? messages : [];
|
|
|
|
|
+ var count = 0;
|
|
|
|
|
+ for (var i = 0; i < list.length; i++) {
|
|
|
|
|
+ var msg = list[i];
|
|
|
|
|
+ if (!msg) continue;
|
|
|
|
|
+ if (msg.role === "user") {
|
|
|
|
|
+ if (msg.isImage && msg.imageUrl) {
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (String(msg.content || "").trim()) count += 1;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (msg.role === "ai" || msg.role === "assistant") {
|
|
|
|
|
+ if (String(msg.content || "").trim()) count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return count;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function parseMessagesFromContent(text) {
|
|
|
|
|
+ var raw = String(text || "").trim();
|
|
|
|
|
+ if (!raw) return [];
|
|
|
var list = [];
|
|
var list = [];
|
|
|
- var blocks = text.split(/\n\n+/);
|
|
|
|
|
|
|
+ var blocks = raw.split(/\n\n+/);
|
|
|
for (var i = 0; i < blocks.length; i++) {
|
|
for (var i = 0; i < blocks.length; i++) {
|
|
|
var block = String(blocks[i] || "").trim();
|
|
var block = String(blocks[i] || "").trim();
|
|
|
if (!block) continue;
|
|
if (!block) continue;
|
|
@@ -563,7 +582,7 @@
|
|
|
}
|
|
}
|
|
|
if (list.length) return list;
|
|
if (list.length) return list;
|
|
|
var current = null;
|
|
var current = null;
|
|
|
- var lines = text.split(/\n/);
|
|
|
|
|
|
|
+ var lines = raw.split(/\n/);
|
|
|
for (var j = 0; j < lines.length; j++) {
|
|
for (var j = 0; j < lines.length; j++) {
|
|
|
var line = String(lines[j] || "");
|
|
var line = String(lines[j] || "");
|
|
|
var userLine = line.match(/^我[::]\s*(.*)$/);
|
|
var userLine = line.match(/^我[::]\s*(.*)$/);
|
|
@@ -586,6 +605,17 @@
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function resolveShareMessagesForDisplay(data) {
|
|
|
|
|
+ var fromArray = Array.isArray(data && data.messages) ? data.messages : [];
|
|
|
|
|
+ var fromContent = parseMessagesFromContent((data && data.content) || "");
|
|
|
|
|
+ var arrayCount = countDisplayableMessages(fromArray);
|
|
|
|
|
+ var contentCount = countDisplayableMessages(fromContent);
|
|
|
|
|
+ // 分享链接超长时 messages 会被截断,但 content 仍保留完整对话文本
|
|
|
|
|
+ if (contentCount > arrayCount) return fromContent;
|
|
|
|
|
+ if (arrayCount) return fromArray;
|
|
|
|
|
+ return fromContent;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function render(data) {
|
|
function render(data) {
|
|
|
applyWeixinShareMeta();
|
|
applyWeixinShareMeta();
|
|
|
sharePayloadCache = data || null;
|
|
sharePayloadCache = data || null;
|