move updater to check
This commit is contained in:
		
							parent
							
								
									750c46b59b
								
							
						
					
					
						commit
						fcee12d161
					
				
					 4 changed files with 185 additions and 120 deletions
				
			
		|  | @ -1,7 +0,0 @@ | ||||||
| import EntryManager from "/scripts/GUI/entrypoints/manager.js" |  | ||||||
| 
 |  | ||||||
| export default class BackgroundCheck { |  | ||||||
| 	static init() { |  | ||||||
| 		new EntryManager(); |  | ||||||
| 	}; |  | ||||||
| }; |  | ||||||
							
								
								
									
										117
									
								
								scripts/background/check.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								scripts/background/check.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,117 @@ | ||||||
|  | /* | ||||||
|  | BackgroundCheck | ||||||
|  | Check the tabs in the background, and check the filters. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | // Filter importation
 | ||||||
|  | import EntryManager from "/scripts/GUI/entrypoints/manager.js" | ||||||
|  | import filters from "../filters.js"; | ||||||
|  | import {background, global} from "/scripts/secretariat.js"; | ||||||
|  | 
 | ||||||
|  | export default class BackgroundCheck { | ||||||
|  | 	update = {}; | ||||||
|  | 
 | ||||||
|  | 	constructor () { | ||||||
|  | 		this.manager = new EntryManager(); | ||||||
|  | 		this.updater(); | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	updater() { | ||||||
|  | 		global.read([`settings`,`sync`]).then(async (DURATION_PREFERENCES) => { | ||||||
|  | 			/* | ||||||
|  | 			Set the default options if they don't exist yet.  | ||||||
|  | 			*/ | ||||||
|  | 			const setDefaults = async () => { | ||||||
|  | 				// Forcibly create the preference if it doesn't exist. It's required! 
 | ||||||
|  | 				if (!(typeof DURATION_PREFERENCES).includes(`obj`) || !DURATION_PREFERENCES || Array.isArray(DURATION_PREFERENCES)) { | ||||||
|  | 					DURATION_PREFERENCES = {}; | ||||||
|  | 					DURATION_PREFERENCES[`duration`] = 24; | ||||||
|  | 		 | ||||||
|  | 					// Write it. 
 | ||||||
|  | 					return(await global.write([`settings`, `sync`], DURATION_PREFERENCES, -1, {"silent": true})); | ||||||
|  | 				} else {return (true)}; | ||||||
|  | 			}; | ||||||
|  | 
 | ||||||
|  | 			setDefaults().then((result) => { | ||||||
|  | 				if (result) { | ||||||
|  | 					/* | ||||||
|  | 					Check if it's time to update the filters through comparing the difference of the current time and the last updated time to the expected duration.  | ||||||
|  | 					*/ | ||||||
|  | 					async function updater_check() { | ||||||
|  | 						let TIME = {}; | ||||||
|  | 						TIME[`now`] = Date.now(); | ||||||
|  | 						TIME[`last`] = await global.read([`settings`,`sync`,`last`], -1); | ||||||
|  | 
 | ||||||
|  | 						// Run if the last time is not set or if the difference is greater than the expected duration.
 | ||||||
|  | 						return (TIME[`last`] ? ((TIME[`now`] - TIME[`last`]) > DURATION_PREFERENCES[`duration`]) : true); | ||||||
|  | 					}; | ||||||
|  | 
 | ||||||
|  | 					/* | ||||||
|  | 					Run the update.  | ||||||
|  | 
 | ||||||
|  | 					@return {Promise} the promise that, once resolved, contains the last update status.  | ||||||
|  | 					*/ | ||||||
|  | 					const updater_run = async () => { | ||||||
|  | 						filter.update(); | ||||||
|  | 
 | ||||||
|  | 						// Update the last time.
 | ||||||
|  | 						return(await global.write([`settings`,`sync`,`last`], Date.now(), -1)); | ||||||
|  | 					}; | ||||||
|  | 
 | ||||||
|  | 					// Set the interval. 
 | ||||||
|  | 					let updater_set = () => { | ||||||
|  | 						this.update[`checker`] = setInterval(async () => { | ||||||
|  | 							// Update the filters. 
 | ||||||
|  | 							updater_run(); | ||||||
|  | 						}, DURATION_PREFERENCES[`duration`]); | ||||||
|  | 					}; | ||||||
|  | 					 | ||||||
|  | 					/* | ||||||
|  | 					Reset the interval.  | ||||||
|  | 					*/ | ||||||
|  | 					const updater_reset = () => { | ||||||
|  | 						// Cancel the interval. 
 | ||||||
|  | 						(this.update[`checker`]) ? clearInterval(this.update[`checker`]) : false; | ||||||
|  | 
 | ||||||
|  | 						// Run the updater, if necessary. 
 | ||||||
|  | 						(updater_check()) | ||||||
|  | 							? updater_run() | ||||||
|  | 							: false; | ||||||
|  | 						 | ||||||
|  | 						// Start the new interval. 
 | ||||||
|  | 						updater_set(); | ||||||
|  | 					} | ||||||
|  | 					 | ||||||
|  | 					const updater_background = () => { | ||||||
|  | 						this.update[`background`] = async () => { | ||||||
|  | 							if ((await global.read([`settings`, `sync`, `duration`])) ? (await global.read([`settings`, `sync`, `duration`] * (60 ** 2) * 1000 != DURATION_PREFERENCES[`duration`])) : false) { | ||||||
|  | 								// Get the new time. 
 | ||||||
|  | 								DURATION_PREFERENCES[`duration`] = await global.global.read([`settings`, `sync`, `duration`]) * (60 ** 2) * 1000; | ||||||
|  | 
 | ||||||
|  | 								// Reset the updater.
 | ||||||
|  | 								updater_reset();								 | ||||||
|  | 							}; | ||||||
|  | 						}; | ||||||
|  | 
 | ||||||
|  | 						// Set the background checker. 
 | ||||||
|  | 						new background(() => {return(this.update.background())}); | ||||||
|  | 					} | ||||||
|  | 
 | ||||||
|  | 					// Convert DURATION_PREFERENCES[`duration`]) from hrs to milliseconds.
 | ||||||
|  | 					DURATION_PREFERENCES[`duration`] = DURATION_PREFERENCES[`duration`] * (60 ** 2) * 1000; | ||||||
|  | 
 | ||||||
|  | 					// Set the filter management. 
 | ||||||
|  | 					let filter = new filters(); | ||||||
|  | 					 | ||||||
|  | 					// When the browser is started, run the updater immediately only when the filters are not updated yet.
 | ||||||
|  | 					(updater_check()) | ||||||
|  | 						? updater_run() | ||||||
|  | 						: false; | ||||||
|  | 
 | ||||||
|  | 					// Run the background. 
 | ||||||
|  | 					updater_background(); | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  | @ -1,113 +0,0 @@ | ||||||
| /* fc.js |  | ||||||
| This script provides installation run scripts. |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| import { template, global, background} from "../secretariat.js"; |  | ||||||
| import filters from "../filters.js"; |  | ||||||
| import pointer from "../data/pointer.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`]; |  | ||||||
| 				template.set(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(); |  | ||||||
| 
 |  | ||||||
| 		// Might as well set the preferences for storage. 
 |  | ||||||
| 		template.configure(); |  | ||||||
| 		pointer.clear(); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	static async every() { |  | ||||||
| 		global.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 global.write([`settings`, `sync`], DURATION_PREFERENCES, -1, {"silent": true}); |  | ||||||
| 			}; |  | ||||||
| 	 |  | ||||||
| 			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 global.read([`settings`, `sync`, `duration`])) ? (await global.read([`settings`, `sync`, `duration`] * (60 ** 2) * 1000 != DURATION_PREFERENCES[`duration`])) : false) { |  | ||||||
| 						DURATION_PREFERENCES[`duration`] = await global.global.read([`settings`, `sync`, `duration`]) * (60 ** 2) * 1000; |  | ||||||
| 
 |  | ||||||
| 						// Reset the updater. 
 |  | ||||||
| 						updater_cancel(UPDATER); |  | ||||||
| 						UPDATER = updater_set(); |  | ||||||
| 					} |  | ||||||
| 				}; |  | ||||||
| 
 |  | ||||||
| 				new background(updater_cancel); |  | ||||||
| 			}; |  | ||||||
| 		}) |  | ||||||
| 
 |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
							
								
								
									
										68
									
								
								scripts/background/importer.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								scripts/background/importer.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,68 @@ | ||||||
|  | /*  | ||||||
|  | BackgroundImporter | ||||||
|  | This script provides installation run scripts. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | // File importation
 | ||||||
|  | import {template, global} from "../secretariat.js"; | ||||||
|  | import pointer from "../data/pointer.js"; | ||||||
|  | 
 | ||||||
|  | // The URL for the configuration file
 | ||||||
|  | const config = chrome.runtime.getURL("config/config.json"); | ||||||
|  | 
 | ||||||
|  | export default class BackgroundImporter { | ||||||
|  | 	// Start the out of the box experience.
 | ||||||
|  | 	async hello() { | ||||||
|  | 		if (!(await global.read([`init`])) || !(await global.read([`settings`,`analysis`,`api`,`key`]))) { | ||||||
|  | 			let SOURCE = fetch(config);  | ||||||
|  | 			let SITES = [`popup/hello.htm`]; | ||||||
|  | 	 | ||||||
|  | 			if (SOURCE.ok) { | ||||||
|  | 				try { | ||||||
|  | 					let CONFIGURATION = await SOURCE.json(); | ||||||
|  | 					if (CONFIGURATION[`OOBE`]) { | ||||||
|  | 						SITES = [...SITES, ...(Array.isArray(CONFIGURATION[`OOBE`]) ? CONFIGURATION[`OOBE`] : [CONFIGURATION[`OOBE`]])]; | ||||||
|  | 					}; | ||||||
|  | 				} catch(err) {} | ||||||
|  | 			}; | ||||||
|  | 			 | ||||||
|  | 			SITES.forEach((item) => { | ||||||
|  | 				// Get local URL. 
 | ||||||
|  | 				chrome.tabs.create({ url: chrome.runtime.getURL('pages/'.concat(item)) }, function (tab) {}); | ||||||
|  | 			}); | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	// Initialize the configuration. 
 | ||||||
|  | 	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`]; | ||||||
|  | 				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 () { | ||||||
|  | 		this.trigger(); | ||||||
|  | 
 | ||||||
|  | 		// Might as well set the preferences for storage. 
 | ||||||
|  | 		template.configure(); | ||||||
|  | 		pointer.clear(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue