update filter download
It also lets users know if download is successful or not.
This commit is contained in:
parent
93ae3df82f
commit
84947339ca
1 changed files with 38 additions and 13 deletions
|
@ -14,12 +14,12 @@ export async function select(URL = window.location.href) {}
|
|||
@return {boolean} the state
|
||||
*/
|
||||
export async function update(URL) {
|
||||
console.log("Updating…");
|
||||
// Import the updater.
|
||||
const secretariat = await import(
|
||||
chrome.runtime.getURL("scripts/secretariat.js")
|
||||
);
|
||||
const net = await import(chrome.runtime.getURL("scripts/net.js"));
|
||||
const texts = await import(chrome.runtime.getURL("gui/scripts/read.js"));
|
||||
|
||||
// Apparently, JS doesn't have a native queueing system, but it might best work here.
|
||||
class Queue {
|
||||
|
@ -43,13 +43,6 @@ export async function update(URL) {
|
|||
// Create a queue of the filters.
|
||||
let filters = new Queue();
|
||||
|
||||
async function download(URL) {
|
||||
let filter = await fetch(URL);
|
||||
|
||||
// Return the filter.
|
||||
return filter;
|
||||
}
|
||||
|
||||
if (URL) {
|
||||
// Check if the URL is in a valid protocol
|
||||
if (URL.includes(`://`)) {
|
||||
|
@ -69,11 +62,43 @@ export async function update(URL) {
|
|||
}
|
||||
}
|
||||
|
||||
if (!filters.isEmpty()) {
|
||||
while (!filters.isEmpty()) {
|
||||
let filter_URL = filters.dequeue();
|
||||
let filter = await net.download(filter_URL);
|
||||
|
||||
// Inform the user of download state.
|
||||
console.log(filter_URL);
|
||||
console.log(
|
||||
texts.read(`settings_filters_update_status`, null, [filter_URL]),
|
||||
);
|
||||
|
||||
// Create promise of downloading.
|
||||
let filter_download = net.download(filter_URL);
|
||||
filter_download
|
||||
.then((result) => {
|
||||
// Only work when the filter is valid.
|
||||
if (result) {
|
||||
// Write the filter to storage.
|
||||
secretariat.write(["filters", filter_URL], filter, -1);
|
||||
secretariat.write(["filters", filter_URL], result, -1);
|
||||
console.log(
|
||||
texts.read(`settings_filters_update_status_complete`, null, [
|
||||
filter_URL,
|
||||
]),
|
||||
);
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
// Inform the user of the download failure.
|
||||
console.log(
|
||||
texts.read(`settings_filters_update_status_failure`, null, [
|
||||
error,
|
||||
filter_URL,
|
||||
]),
|
||||
);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// Inform the user of the download being unnecessary.
|
||||
console.log(texts.read(`settings_filters_update_stop`));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue