整条会话删除功能开发

This commit is contained in:
冯辉
2026-03-16 14:46:36 +08:00
parent 5046e7467f
commit eb324ceada
2 changed files with 128 additions and 35 deletions

View File

@@ -351,6 +351,56 @@ const useChatGroupDBStore = defineStore("messageGroup", () => {
}
}
// 删除会话
async function deleteDialogue(sessionId) {
if (!baseDB.isDBReady) await baseDB.initDB();
// 删除会话下的所有消息
const messageList = await baseDB.db.queryByField(massageName.value, 'parentGroupId', sessionId);
for (const message of messageList) {
if (message.id) {
await baseDB.db.delete(massageName.value, message.id);
}
}
// 删除会话本身
const sessionList = await baseDB.db.queryByField(tableName.value, 'sessionId', sessionId);
for (const session of sessionList) {
if (session.id) {
await baseDB.db.delete(tableName.value, session.id);
}
}
// 重新获取所有会话并重新分组
const allSessions = await baseDB.db.getAll(tableName.value);
if (allSessions.length) {
const [result, lastData] = insertSortData(allSessions);
tabeList.value = result;
} else {
tabeList.value = [];
}
// 如果删除的是当前会话,切换到第一个会话或清空
if (chatSessionID.value === sessionId) {
if (tabeList.value.length > 0) {
// 找到第一个非标题的会话
const firstSession = tabeList.value.find(item => !item.isTitle);
if (firstSession) {
chatSessionID.value = firstSession.sessionId;
await initMessage(firstSession.sessionId);
} else {
// 没有会话了
chatSessionID.value = '';
messages.value = [];
}
} else {
// 没有会话了
chatSessionID.value = '';
messages.value = [];
}
}
}
return {
messages,
isTyping,
@@ -365,7 +415,8 @@ const useChatGroupDBStore = defineStore("messageGroup", () => {
getStearm,
getHistory,
badFeedback,
deleteMessages
deleteMessages,
deleteDialogue
};
});