move background scripts to a dedicated folder, but move actions outside

This commit is contained in:
buzz-lightsnack-2007 2024-04-24 16:34:12 +08:00
parent 0df989512c
commit ea6dd9be93
8 changed files with 133 additions and 136 deletions

View file

@ -16,7 +16,7 @@
}, },
"background": { "background": {
"service_worker": "scripts/shopAI.js", "type": "module" "service_worker": "scripts/background/shopAI.js", "type": "module"
}, },
"content_scripts": [ "content_scripts": [

14
scripts/actions.js Normal file
View file

@ -0,0 +1,14 @@
import Tabs from "/scripts/GUI/tabs.js";
import EntryManager from "/scripts/external/entries/manager.js"
export default class user_actions {
static init() {
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch((error) => console.error(error));
user_actions.tabs();
};
static tabs() {
new EntryManager();
}
};

View file

@ -1,8 +0,0 @@
import Tabs from "/scripts/GUI/tabs.js";
import EntryManager from "/scripts/external/entries/manager.js"
export default class Watcher_Tabs {
constructor () {
new EntryManager();
};
}

View file

@ -1,9 +0,0 @@
import Watcher_Tabs from "./tabs.js";
export default class user_actions {
static init() {
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: true }).catch((error) => console.error(error));
new Watcher_Tabs();
};
};

109
scripts/background/fc.js Normal file
View file

@ -0,0 +1,109 @@
/* fc.js
This script provides installation run scripts.
*/
import { init, read, write, observe } from "../secretariat.js";
import filters from "../filters.js";
let config = chrome.runtime.getURL("config/config.json");
export default class fc {
// Start the out of the box experience.
static hello() {
// the OOBE must be in the config.
fetch(config)
.then((response) => response.json())
.then((jsonData) => {
let configuration = jsonData[`OOBE`];
if (configuration) {
configuration.forEach((item) => {
chrome.tabs.create({ url: item }, function (tab) {});
});
}
})
.catch((error) => {
console.error(error);
});
}
// Initialize the configuration.
static setup() {
// the OOBE must be in the config.
fetch(config)
.then((response) => response.json())
.then(async (jsonData) => {
let configuration = jsonData;
// Run the storage initialization.
delete configuration[`OOBE`];
init(configuration);
// Update the filters to sync with synchronized storage data.
(new filters).update();
})
.catch((error) => {
console.error(error);
});
}
static trigger() {
chrome.runtime.onInstalled.addListener(function (details) {
(details.reason == chrome.runtime.OnInstalledReason.INSTALL) ? fc.hello() : null;
fc.setup();
});
}
// main function
static run() {
fc.trigger();
fc.every();
}
static async every() {
read([`settings`,`sync`]).then(async (DURATION_PREFERENCES) => {
// Forcibly create the preference if it doesn't exist. It's required!
if (!(typeof DURATION_PREFERENCES).includes(`obj`) || DURATION_PREFERENCES == null || Array.isArray(DURATION_PREFERENCES)) {
DURATION_PREFERENCES = {};
DURATION_PREFERENCES[`duration`] = 24;
// Write it.
await write([`settings`, `sync`], DURATION_PREFERENCES, -1);
};
if (((typeof DURATION_PREFERENCES).includes(`obj`) && DURATION_PREFERENCES != null && !Array.isArray(DURATION_PREFERENCES)) ? ((DURATION_PREFERENCES[`duration`]) ? (DURATION_PREFERENCES[`duration`] > 0) : false) : false) {
// Convert DURATION_PREFERENCES[`duration`]) from hrs to milliseconds.
DURATION_PREFERENCES[`duration`] = DURATION_PREFERENCES[`duration`] * (60 ** 2) * 1000;
let filter = new filters;
// Now, set the interval.
let updater_set = () => {
setInterval(async () => {
// Update the filters.
filter.update();
}, DURATION_PREFERENCES[`duration`]);
};
// Provide a way to cancel the interval.
let updater_cancel = (updater) => {
clearInterval(updater);
};
let UPDATER = updater_set();
let updater_interval = async () => {
if ((await read([`settings`, `sync`, `duration`])) ? (await read([`settings`, `sync`, `duration`] * (60 ** 2) * 1000 != DURATION_PREFERENCES[`duration`])) : false) {
DURATION_PREFERENCES[`duration`] = await read([`settings`, `sync`, `duration`]) * (60 ** 2) * 1000;
// Reset the updater.
updater_cancel(UPDATER);
UPDATER = updater_set();
}
};
observe(updater_cancel);
};
})
};
}

View file

@ -0,0 +1,9 @@
/* ShopAI
Shop wisely with AI!
*/
import fc from './fc.js';
import user_actions from "../actions.js";
fc.run();
user_actions.init();

View file

@ -1,109 +0,0 @@
/* fc.js
This does not stand for "FamiCom" but instead on Finalization and Completion. This script provides installation run scripts.
*/
import { init, read, write, observe } from "./secretariat.js";
import filters from "./filters.js";
let config = chrome.runtime.getURL("config/config.json");
export default class fc {
// Start the out of the box experience.
static hello() {
// the OOBE must be in the config.
fetch(config)
.then((response) => response.json())
.then((jsonData) => {
let configuration = jsonData[`OOBE`];
if (configuration) {
configuration.forEach((item) => {
chrome.tabs.create({ url: item }, function (tab) {});
});
}
})
.catch((error) => {
console.error(error);
});
}
// Initialize the configuration.
static setup() {
// the OOBE must be in the config.
fetch(config)
.then((response) => response.json())
.then(async (jsonData) => {
let configuration = jsonData;
// Run the storage initialization.
delete configuration[`OOBE`];
init(configuration);
// Update the filters to sync with synchronized storage data.
(new filters).update();
})
.catch((error) => {
console.error(error);
});
}
static trigger() {
chrome.runtime.onInstalled.addListener(function (details) {
(details.reason == chrome.runtime.OnInstalledReason.INSTALL) ? fc.hello() : null;
fc.setup();
});
}
// main function
static run() {
fc.trigger();
fc.every();
}
static async every() {
read([`settings`,`sync`]).then(async (DURATION_PREFERENCES) => {
// Forcibly create the preference if it doesn't exist. It's required!
if (!(typeof DURATION_PREFERENCES).includes(`obj`) || DURATION_PREFERENCES == null || Array.isArray(DURATION_PREFERENCES)) {
DURATION_PREFERENCES = {};
DURATION_PREFERENCES[`duration`] = 24;
// Write it.
await write([`settings`, `sync`], DURATION_PREFERENCES, -1);
};
if (((typeof DURATION_PREFERENCES).includes(`obj`) && DURATION_PREFERENCES != null && !Array.isArray(DURATION_PREFERENCES)) ? ((DURATION_PREFERENCES[`duration`]) ? (DURATION_PREFERENCES[`duration`] > 0) : false) : false) {
// Convert DURATION_PREFERENCES[`duration`]) from hrs to milliseconds.
DURATION_PREFERENCES[`duration`] = DURATION_PREFERENCES[`duration`] * (60 ** 2) * 1000;
let filter = new filters;
// Now, set the interval.
let updater_set = () => {
setInterval(async () => {
// Update the filters.
filter.update();
}, DURATION_PREFERENCES[`duration`]);
};
// Provide a way to cancel the interval.
let updater_cancel = (updater) => {
clearInterval(updater);
};
let UPDATER = updater_set();
let updater_interval = async () => {
if ((await read([`settings`, `sync`, `duration`])) ? (await read([`settings`, `sync`, `duration`] * (60 ** 2) * 1000 != DURATION_PREFERENCES[`duration`])) : false) {
DURATION_PREFERENCES[`duration`] = await read([`settings`, `sync`, `duration`]) * (60 ** 2) * 1000;
// Reset the updater.
updater_cancel(UPDATER);
UPDATER = updater_set();
}
};
observe(updater_cancel);
};
})
};
}

View file

@ -1,9 +0,0 @@
/* ShopAI
Shop wisely with AI!
*/
import fc from './fc.js';
import user_actions from "./actions/user_actions.js";
fc.run();
user_actions.init();