Run the checker if the extension is ready.
This commit is contained in:
		
							parent
							
								
									7a6c6deba9
								
							
						
					
					
						commit
						ff19ca4ec1
					
				
					 1 changed files with 98 additions and 81 deletions
				
			
		|  | @ -10,10 +10,25 @@ import {background, global} from "/scripts/secretariat.js"; | |||
| 
 | ||||
| export default class BackgroundCheck { | ||||
| 	update = {}; | ||||
| 	status = {}; | ||||
| 
 | ||||
| 	constructor () { | ||||
| 		this.manager = new EntryManager(); | ||||
| 		this.updater(); | ||||
| 		const main = () => { | ||||
| 			global.read([`ready`]).then((STATE) => { | ||||
| 				if (STATE && !this.status[`ready`]) { | ||||
| 					this.manager = new EntryManager(); | ||||
| 					this.updater(); | ||||
| 					 | ||||
| 					this.status[`ready`] = true; | ||||
| 				}; | ||||
| 				 | ||||
| 				if (this.status[`ready`]) { | ||||
| 					(this.status.wait) ? this.status.wait.cancel() : false; | ||||
| 				}; | ||||
| 			}); | ||||
| 		}; | ||||
| 		 | ||||
| 		this.status.wait = new background(() => {main();})	 | ||||
| 	}; | ||||
| 
 | ||||
| 	updater() { | ||||
|  | @ -26,94 +41,96 @@ export default class BackgroundCheck { | |||
| 				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)}; | ||||
| 					return(global.write([`settings`, `sync`, `duration`], DURATION_PREFERENCES[`duration`], -1, {"silent": true})); | ||||
| 				} else {return(true)}; | ||||
| 			}; | ||||
| 			 | ||||
| 			// Set the filter management.
 | ||||
| 			let filter = new FilterManager(); | ||||
| 
 | ||||
| 			/* | ||||
| 			Run the update. | ||||
| 
 | ||||
| 			@return {Promise} the last update status. | ||||
| 			*/ | ||||
| 			const updater_run = async () => { | ||||
| 				filter.update(); | ||||
| 
 | ||||
| 				// Update the last update time.
 | ||||
| 				return(await global.write([`settings`,`sync`,`last`], Date.now(), -1, {"silent": true})); | ||||
| 			}; | ||||
| 			 | ||||
| 			/* | ||||
| 			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); | ||||
| 			}; | ||||
| 			 | ||||
| 			// Set the interval.
 | ||||
| 			let updater_set = () => { | ||||
| 				this.update[`checker`] = setInterval(async () => { | ||||
| 					// Update the filters.
 | ||||
| 					updater_run(); | ||||
| 				}, DURATION_PREFERENCES[`duration`]); | ||||
| 			}; | ||||
| 
 | ||||
| 			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); | ||||
| 			/* | ||||
| 			Reset the interval. | ||||
| 			*/ | ||||
| 			const updater_reset = () => { | ||||
| 				// Cancel the interval.
 | ||||
| 				(this.update[`checker`]) ? clearInterval(this.update[`checker`]) : false; | ||||
| 
 | ||||
| 						// 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 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) { | ||||
| 						if (await global.global.read([`settings`, `sync`, `duration`])) { | ||||
| 							// Get the new time.
 | ||||
| 							DURATION_PREFERENCES[`duration`] = await global.read([`settings`, `sync`, `duration`]) * (60 ** 2) * 1000; | ||||
| 
 | ||||
| 							// Reset the updater.
 | ||||
| 							updater_reset(); | ||||
| 						} | ||||
| 					}; | ||||
| 				}; | ||||
| 
 | ||||
| 					/* | ||||
| 					Run the update. | ||||
| 				// Set the background checker.
 | ||||
| 				new background(() => {return(this.update.background())}); | ||||
| 			} | ||||
| 			 | ||||
| 			if (!(DURATION_PREFERENCES)) { | ||||
| 				DURATION_PREFERENCES = {}; | ||||
| 			}; | ||||
| 
 | ||||
| 					@return {Promise} the promise that, once resolved, contains the last update status. | ||||
| 					*/ | ||||
| 					const updater_run = async () => { | ||||
| 						filter.update(); | ||||
| 			// Convert DURATION_PREFERENCES[`duration`]) from hrs to milliseconds.
 | ||||
| 			if (DURATION_PREFERENCES[`duration`]) { | ||||
| 				DURATION_PREFERENCES[`duration`] = DURATION_PREFERENCES[`duration`] * (60 ** 2) * 1000; | ||||
| 			}; | ||||
| 
 | ||||
| 						// Update the last update time.
 | ||||
| 						return(await global.write([`settings`,`sync`,`last`], Date.now(), -1, {"verify": false})); | ||||
| 					}; | ||||
| 			// When the browser is started, run the updater immediately only when the filters are not updated yet.
 | ||||
| 			(updater_check() || !DURATION_PREFERENCES) | ||||
| 				? updater_run() | ||||
| 				: false; | ||||
| 
 | ||||
| 					// 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) { | ||||
| 								if (await global.global.read([`settings`, `sync`, `duration`])) { | ||||
| 									// Get the new time.
 | ||||
| 									DURATION_PREFERENCES[`duration`] = await 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 FilterManager(); | ||||
| 
 | ||||
| 					// 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(); | ||||
| 				} | ||||
| 			}); | ||||
| 			// Run the background.
 | ||||
| 			updater_background(); | ||||
| 		}) | ||||
| 	} | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue