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