Add support for bundling filters locally
This commit is contained in:
parent
a2cb524edd
commit
296c9af172
1 changed files with 37 additions and 6 deletions
|
@ -6,6 +6,8 @@ This script provides installation run scripts.
|
|||
// File importation
|
||||
import {template, global} from "../secretariat.js";
|
||||
import pointer from "../data/pointer.js";
|
||||
import {URLs} from "../utils/URLs.js";
|
||||
import net from "../utils/net.js";
|
||||
|
||||
// The URL for the configuration file
|
||||
const config = chrome.runtime.getURL("config/config.json");
|
||||
|
@ -41,21 +43,50 @@ export default class BackgroundImporter {
|
|||
.then(async (jsonData) => {
|
||||
let configuration = jsonData;
|
||||
|
||||
if ((configuration) ? Object.keys(configuration).length : false) {
|
||||
// Run the storage initialization.
|
||||
delete configuration[`OOBE`];
|
||||
|
||||
// Replace local URLs of filters to corresponding chrome extension pages.
|
||||
if (((typeof configuration[`settings`][`filters`]).includes(`obj`) && configuration[`settings`][`filters`]) ? Object.keys(configuration[`settings`][`filters`]).length : false) {
|
||||
for (let FILTER_NUMBER = 0; FILTER_NUMBER < Object.keys(configuration[`settings`][`filters`]).length; FILTER_NUMBER++) {
|
||||
let SOURCE = (Object.keys(configuration[`settings`][`filters`]))[FILTER_NUMBER];
|
||||
|
||||
// Check if the URL is invalid.
|
||||
|
||||
if (!(URLs.test(SOURCE))) {
|
||||
// Set the URL.
|
||||
let ORIGIN = {"raw": SOURCE};
|
||||
|
||||
// If it is, it's most likely located within the extension.
|
||||
ORIGIN[`local`] = chrome.runtime.getURL(`config/filters/`.concat(ORIGIN[`raw`]));
|
||||
|
||||
// Attempt to verify the existence of the file.
|
||||
if (await net.download(ORIGIN[`local`], `json`, true)) {
|
||||
configuration[`settings`][`filters`][ORIGIN[`local`]] = configuration[`settings`][`filters`][ORIGIN[`raw`]];
|
||||
};
|
||||
|
||||
// Delete the illegal URLs.
|
||||
delete configuration[`settings`][`filters`][ORIGIN[`raw`]];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// Set the template.
|
||||
template.set(configuration);
|
||||
};
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(error);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
trigger() {
|
||||
chrome.runtime.onInstalled.addListener((details) => {
|
||||
(details.reason == chrome.runtime.OnInstalledReason.INSTALL) ? this.hello() : null;
|
||||
this.setup();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// main function
|
||||
constructor () {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue