put queue in another module instead
for future reusability
This commit is contained in:
		
							parent
							
								
									586578fe45
								
							
						
					
					
						commit
						f2e9869965
					
				
					 2 changed files with 43 additions and 26 deletions
				
			
		
							
								
								
									
										41
									
								
								scripts/common.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								scripts/common.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | ||||||
|  | // common.js provides the advanced data structures. 
 | ||||||
|  | 
 | ||||||
|  | export class Queue { | ||||||
|  |      #elements; | ||||||
|  | 
 | ||||||
|  |      constructor() { | ||||||
|  |           this.#elements = []; | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      enqueue(element) { | ||||||
|  |           this.#elements.push(element); | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      dequeue() { | ||||||
|  |           return this.#elements.shift(); | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      isEmpty() { | ||||||
|  |           return this.#elements.length <= 0; | ||||||
|  |      } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export class Stack { | ||||||
|  |      #elements; | ||||||
|  | 
 | ||||||
|  |      constructor() { | ||||||
|  |           this.#elements = []; | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      push(element) { | ||||||
|  |           this.#elements.push(element); | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      pop() { | ||||||
|  |           return this.#elements.pop(); | ||||||
|  |      } | ||||||
|  | 
 | ||||||
|  |      isEmpty() { | ||||||
|  |           return this.#elements.length <= 0; | ||||||
|  |      } | ||||||
|  | } | ||||||
|  | @ -6,15 +6,11 @@ const secretariat = await import(chrome.runtime.getURL("scripts/secretariat.js") | ||||||
| const net = await import(chrome.runtime.getURL("scripts/net.js")); | const net = await import(chrome.runtime.getURL("scripts/net.js")); | ||||||
| const texts = (await import(chrome.runtime.getURL("gui/scripts/read.js"))).default; | const texts = (await import(chrome.runtime.getURL("gui/scripts/read.js"))).default; | ||||||
| const alerts = (await import(chrome.runtime.getURL("gui/scripts/alerts.js"))).default; | const alerts = (await import(chrome.runtime.getURL("gui/scripts/alerts.js"))).default; | ||||||
|  | const common = (await import(chrome.runtime.getURL("scripts/common.js"))); | ||||||
| 
 | 
 | ||||||
| export default class filters { | export default class filters { | ||||||
| 	constructor() { | 	constructor() { | ||||||
| 		this.all = async () => { | 		this.all = async () => { | ||||||
| 			// Import the updater.
 |  | ||||||
| 			const secretariat = await import( |  | ||||||
| 				chrome.runtime.getURL("scripts/secretariat.js") |  | ||||||
| 			); |  | ||||||
| 
 |  | ||||||
| 			return secretariat.read(`filters`, -1).then((filters) => { | 			return secretariat.read(`filters`, -1).then((filters) => { | ||||||
| 				return filters; | 				return filters; | ||||||
| 			}); | 			}); | ||||||
|  | @ -43,27 +39,8 @@ export default class filters { | ||||||
| 	@return {boolean} the state | 	@return {boolean} the state | ||||||
| 	*/ | 	*/ | ||||||
| 	async update(URL) { | 	async update(URL) { | ||||||
| 		// Apparently, JS doesn't have a native queueing system, but it might best work here.
 |  | ||||||
| 		class Queue { |  | ||||||
| 			constructor() { |  | ||||||
| 				this.elements = []; |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			enqueue(element) { |  | ||||||
| 				this.elements.push(element); |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			dequeue() { |  | ||||||
| 				return this.elements.shift(); |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			isEmpty() { |  | ||||||
| 				return this.elements.length <= 0; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// Create a queue of the filters.
 | 		// Create a queue of the filters.
 | ||||||
| 		let filters = new Queue(); | 		let filters = new common.Queue(); | ||||||
| 
 | 
 | ||||||
| 		if (URL) { | 		if (URL) { | ||||||
| 			// Check if the URL is in a valid protocol
 | 			// Check if the URL is in a valid protocol
 | ||||||
|  | @ -75,7 +52,6 @@ export default class filters { | ||||||
| 			// Add every item to the queue based on what was loaded first.
 | 			// Add every item to the queue based on what was loaded first.
 | ||||||
| 			if (await secretariat.read(`filters`, -1)) { | 			if (await secretariat.read(`filters`, -1)) { | ||||||
| 				for (let FILTER_URL_INDEX = 0; FILTER_URL_INDEX < Object.keys(await secretariat.read(`filters`, -1)).length; FILTER_URL_INDEX++) { | 				for (let FILTER_URL_INDEX = 0; FILTER_URL_INDEX < Object.keys(await secretariat.read(`filters`, -1)).length; FILTER_URL_INDEX++) { | ||||||
| 					console.log(await secretariat.read([`settings`], 1)); |  | ||||||
| 					let FILTER_URL = Object.keys(await secretariat.read([`settings`, `filters`], 1))[FILTER_URL_INDEX]; | 					let FILTER_URL = Object.keys(await secretariat.read([`settings`, `filters`], 1))[FILTER_URL_INDEX]; | ||||||
| 					if (FILTER_URL.includes(`://`)) { | 					if (FILTER_URL.includes(`://`)) { | ||||||
| 						filters.enqueue(FILTER_URL); | 						filters.enqueue(FILTER_URL); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue