fix: 修复空会话返回 null 导致前端崩溃的问题 #193
@@ -273,6 +273,9 @@ func (h *ConversationHandler) GetMessages(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
count, _ := h.msgRepo.GetMessageCount(c.Request.Context(), sessionID)
|
count, _ := h.msgRepo.GetMessageCount(c.Request.Context(), sessionID)
|
||||||
|
if messages == nil {
|
||||||
|
messages = []store.StoredMessage{}
|
||||||
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"messages": messages,
|
"messages": messages,
|
||||||
"total": count,
|
"total": count,
|
||||||
@@ -314,6 +317,9 @@ func (h *ConversationHandler) GetMessages(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
messages := allMessages[start:]
|
messages := allMessages[start:]
|
||||||
|
|
||||||
|
if messages == nil {
|
||||||
|
messages = []models.Message{}
|
||||||
|
}
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"messages": messages,
|
"messages": messages,
|
||||||
"total": total,
|
"total": total,
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ func (r *PgMessageRepository) queryMessages(ctx context.Context, query string, a
|
|||||||
}
|
}
|
||||||
defer pgxRows.Close()
|
defer pgxRows.Close()
|
||||||
|
|
||||||
var messages []StoredMessage
|
messages := make([]StoredMessage, 0)
|
||||||
for pgxRows.Next() {
|
for pgxRows.Next() {
|
||||||
var m StoredMessage
|
var m StoredMessage
|
||||||
if err := pgxRows.Scan(&m.ID, &m.SessionID, &m.Role, &m.Content, &m.TokensUsed, &m.CreatedAt); err != nil {
|
if err := pgxRows.Scan(&m.ID, &m.SessionID, &m.Role, &m.Content, &m.TokensUsed, &m.CreatedAt); err != nil {
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ export function useSessionList(accessToken?: string | null) {
|
|||||||
try {
|
try {
|
||||||
const res = await listConversations(accessToken);
|
const res = await listConversations(accessToken);
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
const list = res.data.conversations.map(toSessionSummary);
|
const list = (res.data.conversations || []).map(toSessionSummary);
|
||||||
setSessions(list);
|
setSessions(list);
|
||||||
// 恢复上次选中的会话(如果仍然存在)
|
// 恢复上次选中的会话(如果仍然存在)
|
||||||
const lastId = localStorage.getItem(LAST_ACTIVE_KEY);
|
const lastId = localStorage.getItem(LAST_ACTIVE_KEY);
|
||||||
@@ -193,7 +193,7 @@ export function useSessionList(accessToken?: string | null) {
|
|||||||
try {
|
try {
|
||||||
const res = await getConversationMessages(accessToken, sessionId);
|
const res = await getConversationMessages(accessToken, sessionId);
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
return res.data.messages.map(toChatMessage);
|
return (res.data.messages || []).map(toChatMessage);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("[SessionList] 加载消息失败:", err);
|
console.error("[SessionList] 加载消息失败:", err);
|
||||||
|
|||||||
Reference in New Issue
Block a user