fix(chat): Keep 1 history entry per session
This commit is contained in:
@@ -335,6 +335,7 @@
|
||||
isBusy: false,
|
||||
abortController: null,
|
||||
userHasScrolledUp: false,
|
||||
sessionId: null,
|
||||
|
||||
models: [
|
||||
{ name: "gpt-4.1", chat: chatWithOpenAI, key: "OPENAI_API_KEY" },
|
||||
@@ -344,6 +345,7 @@
|
||||
],
|
||||
|
||||
async init() {
|
||||
this.sessionId = +new Date();
|
||||
this.historyItems = loadHistory();
|
||||
setTimeout(() => this.$refs.promptInput.focus(), 0);
|
||||
},
|
||||
@@ -370,7 +372,7 @@
|
||||
|
||||
handleScroll() {
|
||||
const el = this.$refs.msgBox;
|
||||
this.userHasScrolledUp = el.scrollHeight - el.clientHeight - el.scrollTop > 50;
|
||||
this.userHasScrolledUp = el.scrollHeight - el.clientHeight - el.scrollTop > 100;
|
||||
},
|
||||
|
||||
scrollToBottom() {
|
||||
@@ -442,7 +444,7 @@
|
||||
} finally {
|
||||
this.isBusy = false;
|
||||
this.abortController = null;
|
||||
this.historyItems = saveHistory([...this.messages]);
|
||||
updateSessionHistory(this.sessionId, this.messages);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -638,6 +640,7 @@
|
||||
|
||||
const STORAGE_KEY = "chat_conversations";
|
||||
const todayKey = () => new Date().toISOString().slice(0, 10);
|
||||
|
||||
const loadHistory = () => {
|
||||
try {
|
||||
return JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}")[todayKey()] || [];
|
||||
@@ -645,11 +648,19 @@
|
||||
return [];
|
||||
}
|
||||
};
|
||||
const saveHistory = (messages) => {
|
||||
|
||||
const updateSessionHistory = (sessionId, messages) => {
|
||||
const all = JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}");
|
||||
const today = todayKey();
|
||||
all[today] ??= [];
|
||||
all[today].unshift({ time: new Date().toISOString(), messages });
|
||||
|
||||
const idx = all[today].findIndex((item) => item.sessionId === sessionId);
|
||||
if (idx >= 0) {
|
||||
all[today][idx] = { sessionId, time: all[today][idx].time, messages };
|
||||
} else {
|
||||
all[today].unshift({ sessionId, time: new Date().toISOString(), messages });
|
||||
}
|
||||
|
||||
all[today] = all[today].slice(0, 5);
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(all));
|
||||
return all[today];
|
||||
|
||||
Reference in New Issue
Block a user