added local cache management

This commit is contained in:
buzzcode2007 2024-03-20 23:35:33 +08:00
parent 138cc22e4f
commit da6f853912

125
scripts/secretariat.js Normal file
View file

@ -0,0 +1,125 @@
/* secretriat.js
Manage the local cache.
*/
export default class secretariat {
static read(prefname, cloud = false) {
/* Read all storeed data in the browser cache.
Parameters:
prefname: (string) the preference name
cloud: (bool) determine cloud reading, which is otherwise disabled
Returns: (Object) the preferences
*/
// Initialize the selected pref data.
let pref_data;
function pref_data_set(database) {
pref_data = database[prefname];
};
// Retrieve the data.
if (cloud) {
chrome.storage.sync.get(prefname, (items) => {
pref_data_set(items);
});
} else {
chrome.storage.local.get(prefname, (items) => {
pref_data_set(items);
});
}
return(pref_data);
};
static rules(domain = ``) {
/* Load all of the rules or a rule from a particular domain.
Parameters:
domain: the RegEx of the domain
Returns: (dictionary) the rules
*/
let result;
// Load the data.
/*
if (domain) {
} else {
}*/
console.log(`Rules are being loaded...`);
}
static amend(website, rules) {
/* Update the rules.
Parameters:
website: RegEx pattern of the website or the domain
rules: the rules in JSON
Returns: (boolean) the update status
*/
};
static write(prefname, data) {
/* Write the data on the selected prefname.
Parameters:
prefname: the preference name
data: the new data to be written
*/
};
static forget(domain) {
/* Dangerous: Resets all data or a domain's data.
Returns: the user's confirmation
*/
let forget_action = false;
(async () => {
// Import alerts module.
let alerts = await import(chrome.runtime.getURL("gui/scripts/alerts.js"));
// Confirm the action.
let forget_action = alerts.confirm_action();
if (forget_action) {
// Clear the data storage.
chrome.storage.local.clear();
};
})();
return (forget_action);
};
};
export function read(prefname) {
return(secretariat.read(prefname));
};
export function rules(domain = ``) {
return(secretariat.rules(domain));
};
export function amend(website, rules) {
return (secretariat.amend(website, rules));
};
export function forget(domain) {
return (secretariat.forget(domain));
};