added local cache management
This commit is contained in:
parent
138cc22e4f
commit
da6f853912
1 changed files with 125 additions and 0 deletions
125
scripts/secretariat.js
Normal file
125
scripts/secretariat.js
Normal 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));
|
||||||
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue