Use less lines
due to the async method import
This commit is contained in:
parent
c038ed9812
commit
a621df9b87
1 changed files with 135 additions and 154 deletions
|
@ -2,169 +2,150 @@
|
||||||
Manage the local cache.
|
Manage the local cache.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default class secretariat {
|
export function read(prefname, cloud = false) {
|
||||||
static read(prefname, cloud = false) {
|
/* Read all storeed data in the browser cache.
|
||||||
/* Read all storeed data in the browser cache.
|
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
prefname: (string) the preference name
|
prefname: (string) the preference name
|
||||||
cloud: (bool) determine cloud reading, which is otherwise disabled
|
cloud: (bool) determine cloud reading, which is otherwise disabled
|
||||||
Returns: (Object) the preferences
|
Returns: (Object) the preferences
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Initialize the selected pref data.
|
// Initialize the selected pref data.
|
||||||
let pref_data;
|
let pref_data;
|
||||||
|
|
||||||
function pref_data_set(database) {
|
function pref_data_set(database) {
|
||||||
pref_data = database[prefname];
|
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 specifics(WHERE, domain = window.location.href) {
|
// Retrieve the data.
|
||||||
/* List the matching rule or memory for a particular domain.
|
if (cloud) {
|
||||||
|
chrome.storage.sync.get(prefname, (items) => {
|
||||||
Parameters:
|
pref_data_set(items);
|
||||||
WHERE: the data source
|
});
|
||||||
domain: the website to check, which --- by default --- is the current website
|
} else {
|
||||||
Returns: (dictionary) the rules
|
chrome.storage.local.get(prefname, (items) => {
|
||||||
*/
|
pref_data_set(items);
|
||||||
|
});
|
||||||
let result;
|
|
||||||
|
|
||||||
let pref_data = read(WHERE);
|
|
||||||
// Read the filters.
|
|
||||||
switch (domain) {
|
|
||||||
case `filters`:
|
|
||||||
let filters = pref_data;
|
|
||||||
if (filters) {
|
|
||||||
// Must only run when there stored value.
|
|
||||||
if (domain.trim()) {
|
|
||||||
// Loop through each filter
|
|
||||||
(Object.keys(filters)).forEach((article) => {
|
|
||||||
// Set the section in focus
|
|
||||||
let section = filters[article];
|
|
||||||
let qualified = false;
|
|
||||||
|
|
||||||
// Determine validity
|
|
||||||
if (section) {
|
|
||||||
// The filter must have a matching URL
|
|
||||||
if (section[`URL`]) {
|
|
||||||
// Now it's time to test it.
|
|
||||||
qualified = (new RegExp(section[`URL`])).test(domain);
|
|
||||||
if (qualified && section[`filters`]) {
|
|
||||||
// Read that out.
|
|
||||||
result = section;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// Get everything as instructed.
|
|
||||||
result = filters;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// In the default mode, the keys refer to the product itself
|
|
||||||
if (pref_data) {
|
|
||||||
(Object.keys(pref_data)).forEach((product_URL) => {
|
|
||||||
// Get the first matching
|
|
||||||
if ((domain.trim()).includes(product_URL)) {
|
|
||||||
// Do not modify the data
|
|
||||||
result = pref_data[product_URL];
|
|
||||||
};
|
|
||||||
});
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Return the result.
|
|
||||||
return(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static amend(WHERE, website, datas) {
|
return(pref_data);
|
||||||
/* Update the rules.
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
WHERE: the data set to update
|
|
||||||
website: RegEx pattern of the website or the domain
|
|
||||||
datas: the data 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.
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
domain: the external source of the filter
|
|
||||||
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) {
|
|
||||||
if (domain) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// Clear the data storage.
|
|
||||||
chrome.storage.local.clear();
|
|
||||||
chrome.storage.sync.clear();
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
|
|
||||||
return (forget_action);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export function read(prefname) {
|
|
||||||
return(secretariat.read(prefname));
|
|
||||||
};
|
|
||||||
|
|
||||||
export function specifics(WHERE, domain = window.location.href) {
|
|
||||||
return(secretariat.specifics(WHERE, domain));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function amend(website, rules) {
|
export function specifics(WHERE, domain = window.location.href) {
|
||||||
return (secretariat.amend(website, rules));
|
/* List the matching rule or memory for a particular domain.
|
||||||
};
|
|
||||||
|
Parameters:
|
||||||
|
WHERE: the data source
|
||||||
|
domain: the website to check, which --- by default --- is the current website
|
||||||
|
Returns: (dictionary) the rules
|
||||||
|
*/
|
||||||
|
|
||||||
|
let result;
|
||||||
|
|
||||||
|
let pref_data = read(WHERE);
|
||||||
|
// Read the filters.
|
||||||
|
switch (domain) {
|
||||||
|
case `filters`:
|
||||||
|
let filters = pref_data;
|
||||||
|
if (filters) {
|
||||||
|
// Must only run when there stored value.
|
||||||
|
if (domain.trim()) {
|
||||||
|
// Loop through each filter
|
||||||
|
(Object.keys(filters)).forEach((article) => {
|
||||||
|
// Set the section in focus
|
||||||
|
let section = filters[article];
|
||||||
|
let qualified = false;
|
||||||
|
|
||||||
|
// Determine validity
|
||||||
|
if (section) {
|
||||||
|
// The filter must have a matching URL
|
||||||
|
if (section[`URL`]) {
|
||||||
|
// Now it's time to test it.
|
||||||
|
qualified = (new RegExp(section[`URL`])).test(domain);
|
||||||
|
if (qualified && section[`filters`]) {
|
||||||
|
// Read that out.
|
||||||
|
result = section;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Get everything as instructed.
|
||||||
|
result = filters;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// In the default mode, the keys refer to the product itself
|
||||||
|
if (pref_data) {
|
||||||
|
(Object.keys(pref_data)).forEach((product_URL) => {
|
||||||
|
// Get the first matching
|
||||||
|
if ((domain.trim()).includes(product_URL)) {
|
||||||
|
// Do not modify the data
|
||||||
|
result = pref_data[product_URL];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the result.
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function write(prefname, data) {
|
||||||
|
/* Write the data on the selected prefname.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
prefname: the preference name
|
||||||
|
data: the new data to be written
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export function amend(WHERE, SITE, DATA) {
|
||||||
|
/* Update the rules.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
WHERE: the data set to update
|
||||||
|
SITE: RegEx pattern of the website or the domain
|
||||||
|
DATA: the data in JSON
|
||||||
|
Returns: (boolean) the update status
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export function forget(domain) {
|
export function forget(domain) {
|
||||||
return (secretariat.forget(domain));
|
/* Dangerous: Resets all data or a domain's data.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
domain: the external source of the filter
|
||||||
|
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) {
|
||||||
|
if (domain) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Clear the data storage.
|
||||||
|
chrome.storage.local.clear();
|
||||||
|
chrome.storage.sync.clear();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
|
return (forget_action);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue