diff --git a/js/mzta-spamreport.js b/js/mzta-spamreport.js index 98d77b51..dacb6e71 100644 --- a/js/mzta-spamreport.js +++ b/js/mzta-spamreport.js @@ -17,35 +17,35 @@ */ import { taStorage } from './mzta-storage.js'; +import { taLogger } from './mzta-logger.js'; -export const taSpamReport = { - logger: console, - do_debug: false, - _data_prefix: 'mzta-spam-report-', - _processing_prefix: 'mzta-spam-processing-', - _max_reports: 100, - _storage: null, +export class taSpamReport { - _getStorage() { - if (!this._storage) this._storage = new taStorage(this.do_debug); - return this._storage; - }, + _processing_prefix = 'mzta-spam-processing-'; + _max_reports = 100; + _storage = null; + taLog = null; + + constructor(do_debug = false) { + this._storage = new taStorage(do_debug); + this.taLog = new taLogger('mzta-spamreport', do_debug); + } async setProcessing(data_id) { const key = this._processing_prefix + data_id; await browser.storage.session.set({ [key]: true }); - }, + } async isProcessing(data_id) { const key = this._processing_prefix + data_id; let output = await browser.storage.session.get(key); return output[key] || false; - }, + } async saveReportData(data, data_id) { - await this._getStorage().writeSpam(data_id, data, true); + await this._storage.writeSpam(data_id, data, true); await browser.storage.session.remove(this._processing_prefix + data_id); - }, + } async saveError(data_id, error_message) { let data = { @@ -56,11 +56,11 @@ export const taSpamReport = { }; await this.saveReportData(data, data_id); return data; - }, + } async loadReportData(data_id) { - let record = await this._getStorage().getRecord(data_id); - if (!record || !this._getStorage().hasField(record, 'spam')) return null; + let record = await this._storage.getRecord(data_id); + if (!record || !this._storage.hasField(record, 'spam')) return null; let spam = record.spam; return { headerMessageId: data_id, @@ -73,42 +73,40 @@ export const taSpamReport = { moved: spam.moved, SpamThreshold: spam.SpamThreshold, }; - }, + } async removeReportData(data_id) { - await this._getStorage().deleteSpamField(data_id); + await this._storage.deleteSpamField(data_id); await browser.storage.session.remove(this._processing_prefix + data_id); - }, + } async getAllReportData() { - return await this._getStorage().getAllSpamRecords(); - }, + return await this._storage.getAllSpamRecords(); + } async clearReportData() { - let storage = this._getStorage(); - let allSpam = await storage.getAllSpamRecords(); + let allSpam = await this._storage.getAllSpamRecords(); for (let messageId of Object.keys(allSpam)) { - await storage.deleteSpamField(messageId); + await this._storage.deleteSpamField(messageId); } let allSession = await browser.storage.session.get(null); let keysToDelete = Object.keys(allSession).filter(k => k.startsWith(this._processing_prefix)); for (let key of keysToDelete) { await browser.storage.session.remove(key); } - }, + } async truncReportData() { - let data = await this._getStorage().getAllSpamRecords(); + let data = await this._storage.getAllSpamRecords(); let sortedData = this.sortReportsByDate(data); let keys = Object.keys(sortedData); if (keys.length > this._max_reports) { - let storage = this._getStorage(); for (let i = this._max_reports; i < keys.length; i++) { - await storage.deleteSpamField(keys[i]); + await this._storage.deleteSpamField(keys[i]); } } - }, + } sortReportsByDate(data) { if (!data) return {}; @@ -126,4 +124,4 @@ export const taSpamReport = { return sortedReports; } -}; +} diff --git a/mzta-background.js b/mzta-background.js index ef90c50e..a4f31c0c 100644 --- a/mzta-background.js +++ b/mzta-background.js @@ -94,6 +94,7 @@ await reload_pref_init(); let taLog = new taLogger("mzta-background",prefs_init.do_debug); taWorkingStatus.taLog = taLog; +let spamReport = new taSpamReport(prefs_init.do_debug); let special_prompts_ids = getActiveSpecialPromptsIDs({ addtags: prefs_init.add_tags, @@ -359,10 +360,10 @@ messenger.runtime.onMessage.addListener((message, sender, sendResponse) => { if (sender.tab.type !== 'messageDisplay' && sender.tab.type !== 'mail') return; let message = await browser.messageDisplay.getDisplayedMessage(tabId); if (!message) return; - let report = await taSpamReport.loadReportData(message.headerMessageId); + let report = await spamReport.loadReportData(message.headerMessageId); if (report) { browser.tabs.sendMessage(tabId, { command: "showSpamReport", data: report }); - } else if (await taSpamReport.isProcessing(message.headerMessageId)) { + } else if (await spamReport.isProcessing(message.headerMessageId)) { browser.tabs.sendMessage(tabId, { command: "showSpamCheckInProgress" }); } } catch (e) { @@ -372,7 +373,7 @@ messenger.runtime.onMessage.addListener((message, sender, sendResponse) => { _checkSpamReport(sender.tab.id); break; case 'removeSpamReport': - taSpamReport.removeReportData(message.headerMessageId); + spamReport.removeReportData(message.headerMessageId); break; default: break; @@ -1042,9 +1043,6 @@ const newEmailListener = (folder, messagesList) => { async function _newEmailListener(){ let messages = getMessages(messagesList); - taSpamReport.logger = taLog; - taSpamReport.do_debug = prefs_init.do_debug; - let add_tags_auto_enabled = prefs_init.add_tags && prefs_init.add_tags_auto; await processEmails({ @@ -1054,7 +1052,7 @@ const newEmailListener = (folder, messagesList) => { }); if(prefs_init.spamfilter){ - taSpamReport.truncReportData(); + spamReport.truncReportData(); } } @@ -1177,8 +1175,8 @@ async function processEmails(args) { } } - await taSpamReport.removeReportData(message.headerMessageId); - await taSpamReport.setProcessing(message.headerMessageId); + await spamReport.removeReportData(message.headerMessageId); + await spamReport.setProcessing(message.headerMessageId); await updateSpamPanel(message.headerMessageId, "showSpamCheckInProgress"); @@ -1209,7 +1207,7 @@ async function processEmails(args) { spamfilter_result = (await cmd_spamfilter.sendPrompt()).trim(); } catch (err) { console.error("[ThunderAI | SpamFilter] Error getting spamfilter: ", err); - let err_data = await taSpamReport.saveError(message.headerMessageId, err.message || String(err)); + let err_data = await spamReport.saveError(message.headerMessageId, err.message || String(err)); await updateSpamPanel(message.headerMessageId, "showSpamReport", err_data); continue; } @@ -1220,7 +1218,7 @@ async function processEmails(args) { jsonObj = extractJsonObject(spamfilter_result); } catch (e) { console.error("[ThunderAI | SpamFilter] Error extracting JSON from AI response: ", e); - let err_data = await taSpamReport.saveError(message.headerMessageId, e.message || String(e)); + let err_data = await spamReport.saveError(message.headerMessageId, e.message || String(e)); await updateSpamPanel(message.headerMessageId, "showSpamReport", err_data); continue; } @@ -1246,7 +1244,7 @@ async function processEmails(args) { taLog.log("Marked as spam [" + message.headerMessageId + "]"); } - taSpamReport.saveReportData(report_data, message.headerMessageId); + spamReport.saveReportData(report_data, message.headerMessageId); // Check if the message is currently displayed and update the banner await updateSpamPanel(message.headerMessageId, "showSpamReport", report_data); diff --git a/pages/spamfilter/mzta-spamfilter.js b/pages/spamfilter/mzta-spamfilter.js index 4879abcd..54258510 100644 --- a/pages/spamfilter/mzta-spamfilter.js +++ b/pages/spamfilter/mzta-spamfilter.js @@ -41,11 +41,15 @@ import { } from "../_lib/connection-ui.js"; let autocompleteSuggestions = []; -let taLog = new taLogger("mzta-spamfilter-page",true); -taSpamReport.logger = taLog; +let taLog = null; +let spamReport = null; document.addEventListener('DOMContentLoaded', async () => { + let prefs = await browser.storage.sync.get({ do_debug: prefs_default.do_debug }); + taLog = new taLogger("mzta-spamfilter-page", prefs.do_debug); + spamReport = new taSpamReport(prefs.do_debug); + let specialPrompts = await getSpecialPrompts(); let spamfilter_prompt = specialPrompts.find(prompt => prompt.id === 'prompt_spamfilter'); @@ -162,10 +166,10 @@ document.addEventListener('DOMContentLoaded', async () => { } if (selectedAccounts.length === document.querySelectorAll('.accountCheckbox').length) { browser.storage.sync.set({ spamfilter_enabled_accounts: [] }); - taSpamReport.logger.log("All accounts selected, saving spamfilter_enabled_accounts = []."); + taLog.log("All accounts selected, saving spamfilter_enabled_accounts = []."); } else { browser.storage.sync.set({ spamfilter_enabled_accounts: selectedAccounts }); - taSpamReport.logger.log("Saving spamfilter_enabled_accounts = " + JSON.stringify(selectedAccounts) + "."); + taLog.log("Saving spamfilter_enabled_accounts = " + JSON.stringify(selectedAccounts) + "."); } }); }); @@ -200,7 +204,7 @@ function check_spamfilter_threshold(event) { } async function loadSpamReport(){ - let report_data = await taSpamReport.getAllReportData(); + let report_data = await spamReport.getAllReportData(); //console.log(">>>>>>>>>>>> loadSpamReport: " + JSON.stringify(report_data)); //document.getElementById("report_data").textContent = JSON.stringify(report_data, null, 2); if(report_data == undefined){