taSpamReport is now a class and not a singleton
This commit is contained in:
parent
55240868dd
commit
1ea548a61d
3 changed files with 49 additions and 49 deletions
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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){
|
||||
|
|
|
|||
Loading…
Reference in a new issue