整条会话删除功能开发
This commit is contained in:
@@ -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
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user