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();