llm-mixer / networks /chat_history_storer.js
Hansimov's picture
:gem: [Feature] New ChatHistoryStorer: save chat messages in browser with Dexie
b30bb95
raw
history blame
1.78 kB
class ChatHistoryStorer {
constructor() {
this.init_database();
}
init_database() {
this.db = new Dexie("chat_history");
this.db.version(1).stores({
chat_history: "index, html, saved_datetime"
});
this.db.chat_history.count((count) => {
console.log(`${count} records loaded from chat_history.`);
});
}
get_current_datetime_string() {
return moment().format("YYYY-MM-DD_HH:mm:ss.SSS");
}
get_chat_container_html() {
let messagers_container = $("#messagers-container");
if (messagers_container.children().length > 0) {
return messagers_container[0].outHTML;
} else {
return null;
}
}
create_chat_index() {
let date_string = this.get_current_datetime_string();
let chat_index = `chat_${date_string}`;
return chat_index;
}
save_current_chat_session() {
let chat_container_html = this.get_chat_container_html();
let messagers_container = $("#messagers-container");
if (chat_container_html === null) {
console.log("Empty messagers_container, no chat session to save.");
return;
} else {
let chat_index = this.create_chat_index();
let chat_saved_datetime = this.get_current_datetime_string();
this.db.chat_history.put({
index: chat_index,
html: chat_container_html,
saved_datetime: chat_saved_datetime,
});
console.log(
`${messagers_container.children().length} messages saved at ${chat_saved_datetime}.`
);
}
}
}
export let chat_history_storer = new ChatHistoryStorer();