| 
									
										
										
										
											2020-01-12 15:09:47 +01:00
										 |  |  | var SysTrayX = { | 
					
						
							| 
									
										
										
										
											2020-04-21 21:38:44 +02:00
										 |  |  |   startupState: undefined, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-05 15:18:30 +01:00
										 |  |  |   restorePositions: false, | 
					
						
							|  |  |  |   startupWindowPositions: [], | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-05 19:37:15 +02:00
										 |  |  |   hideDefaultIcon: false, | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |   startApp: "", | 
					
						
							|  |  |  |   startAppArgs: "", | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-06-05 19:37:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  | SysTrayX.Info = { | 
					
						
							|  |  |  |   version: "0", | 
					
						
							|  |  |  |   platformInfo: {}, | 
					
						
							|  |  |  |   browserInfo: {}, | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   displayInfo: function () { | 
					
						
							|  |  |  |     console.debug("Info Addon version: " + this.version); | 
					
						
							|  |  |  |     console.debug("Info Platform: " + JSON.stringify(this.platformInfo)); | 
					
						
							|  |  |  |     console.debug("Info Browser: " + JSON.stringify(this.browserInfo)); | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2020-01-12 15:09:47 +01:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-01-04 23:47:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | SysTrayX.Messaging = { | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |   startupDelayFinished: false, | 
					
						
							| 
									
										
										
										
											2020-05-03 23:39:02 +02:00
										 |  |  |   accounts: [], | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  |   folderTree: {}, | 
					
						
							| 
									
										
										
										
											2022-06-19 22:01:58 +02:00
										 |  |  |   countType: "0", | 
					
						
							|  |  |  |   closeType: "1", | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  |   filters: undefined, | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |   newMailCache: [], | 
					
						
							|  |  |  |   folderInfoChangeCache: [], | 
					
						
							| 
									
										
										
										
											2021-08-08 21:52:33 +02:00
										 |  |  |   unread: {}, | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  |   new: {}, | 
					
						
							| 
									
										
										
										
											2022-06-20 20:48:48 +02:00
										 |  |  |   displayedFolder: undefined, | 
					
						
							| 
									
										
										
										
											2020-01-11 22:08:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-10 21:39:35 +02:00
										 |  |  |   init: async function () { | 
					
						
							| 
									
										
										
										
											2020-12-05 15:18:30 +01:00
										 |  |  |     // Send the startup positions?
 | 
					
						
							|  |  |  |     if (SysTrayX.restorePositions) { | 
					
						
							|  |  |  |       SysTrayX.Link.postSysTrayXMessage({ | 
					
						
							|  |  |  |         positions: SysTrayX.startupWindowPositions, | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2020-11-28 14:51:06 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-31 16:43:02 +01:00
										 |  |  |     // Minimize on startup handled by Companion app as backup
 | 
					
						
							| 
									
										
										
										
											2021-09-26 12:30:08 +02:00
										 |  |  |     if (SysTrayX.startupState === "minimized") { | 
					
						
							| 
									
										
										
										
											2020-12-31 16:43:02 +01:00
										 |  |  |       SysTrayX.Link.postSysTrayXMessage({ window: "minimized_all_startup" }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 17:45:20 +02:00
										 |  |  |     // Lookout for storage changes
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     browser.storage.onChanged.addListener(SysTrayX.Messaging.storageChanged); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-14 23:20:29 +02:00
										 |  |  |     //  Send the platform info to app
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendLocale(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 23:31:41 +02:00
										 |  |  |     //  Send the platform info to app
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendPlatformInfo(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //  Send the browser info to app
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendBrowserInfo(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |     //  Send version to app
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendVersion(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-05 19:37:15 +02:00
										 |  |  |     //  Send hide default icon preference
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendHideDefaultIcon(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     //  Send preferences to app
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendPreferences(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |     //  Send start app trigger
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.sendStartApp(); | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-07 09:51:06 +02:00
										 |  |  |     //  Let us wait until TB is ready, needed for TB91 (no accounts found, cannot create filters) and higher?
 | 
					
						
							|  |  |  |     const startupDelay = await storage() | 
					
						
							| 
									
										
										
										
											2021-09-05 17:04:13 +02:00
										 |  |  |       .get("startupDelay") | 
					
						
							|  |  |  |       .then((result) => result.startupDelay || "5"); | 
					
						
							|  |  |  |     const delay = (ms) => new Promise((res) => setTimeout(res, ms)); | 
					
						
							| 
									
										
										
										
											2021-09-05 21:37:04 +02:00
										 |  |  |     await delay(startupDelay * 1000); | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-16 22:09:00 +02:00
										 |  |  |     //  Keep trace of account changes
 | 
					
						
							|  |  |  |     if (SysTrayX.Info.browserInfo.majorVersion >= 98) { | 
					
						
							|  |  |  |       browser.accounts.onCreated.addListener(SysTrayX.Messaging.accountAdded); | 
					
						
							|  |  |  |       browser.accounts.onDeleted.addListener(SysTrayX.Messaging.accountDeleted); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     //  Get all accounts
 | 
					
						
							| 
									
										
										
										
											2023-09-06 22:04:41 +02:00
										 |  |  |     SysTrayX.Messaging.accounts = await browser.accounts.list(false); | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-06 22:04:41 +02:00
										 |  |  |     // Fill the sub folders using the folders API, they are not same...
 | 
					
						
							|  |  |  |     for (let i = 0; i < SysTrayX.Messaging.accounts.length; ++i) { | 
					
						
							|  |  |  |       const subFolders = await browser.folders.getSubFolders( | 
					
						
							|  |  |  |         SysTrayX.Messaging.accounts[i], | 
					
						
							|  |  |  |         true | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |       ); | 
					
						
							| 
									
										
										
										
											2023-09-06 22:04:41 +02:00
										 |  |  |       SysTrayX.Messaging.accounts[i].folders = subFolders; | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-06 22:04:41 +02:00
										 |  |  |     console.debug("Accounts: " + JSON.stringify(SysTrayX.Messaging.accounts)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     // Get the filters (needs the accounts)
 | 
					
						
							|  |  |  |     const getFiltersPromise = () => new Promise((res) => res(getFilters())); | 
					
						
							|  |  |  |     SysTrayX.Messaging.filters = await getFiltersPromise(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Get the count type
 | 
					
						
							|  |  |  |     const getCountTypePromise = () => new Promise((res) => res(getCountType())); | 
					
						
							|  |  |  |     SysTrayX.Messaging.countType = await getCountTypePromise(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-16 22:09:00 +02:00
										 |  |  |     // Check the filters for the accounts
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.accountFilterCheck(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |     // Handle cached mail changes on startup
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.startupDelayFinished = true; | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |     if (SysTrayX.Info.browserInfo.majorVersion < 115) { | 
					
						
							|  |  |  |       SysTrayX.Messaging.listenerNewMail(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |     SysTrayX.Messaging.listenerFolderInfoChanged(); | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |     // Catch folder changes
 | 
					
						
							| 
									
										
										
										
											2023-09-06 22:04:41 +02:00
										 |  |  |     browser.folders.onCreated.addListener( | 
					
						
							|  |  |  |       SysTrayX.Messaging.listenerFolderCreated | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     browser.folders.onRenamed.addListener( | 
					
						
							|  |  |  |       SysTrayX.Messaging.listenerFolderRenamed | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     browser.folders.onDeleted.addListener( | 
					
						
							|  |  |  |       SysTrayX.Messaging.listenerFolderDeleted | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2021-08-10 21:39:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-03 23:05:20 +01:00
										 |  |  |     //  Try to catch the window state
 | 
					
						
							| 
									
										
										
										
											2020-02-24 23:00:45 +01:00
										 |  |  |     browser.windows.onFocusChanged.addListener(SysTrayX.Window.focusChanged); | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-16 22:09:00 +02:00
										 |  |  |   accountAdded: function (id, account) { | 
					
						
							|  |  |  |     //console.debug("accountAdded: Id: " + id);
 | 
					
						
							|  |  |  |     //console.debug("accountAdded: Account: " + JSON.stringify(account));
 | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   accountDeleted: function (id) { | 
					
						
							|  |  |  |     for (let i = 0; i < SysTrayX.Messaging.accounts.length; ++i) { | 
					
						
							|  |  |  |       if (SysTrayX.Messaging.accounts[i].id === id) { | 
					
						
							|  |  |  |         SysTrayX.Messaging.accounts.splice(i,1); | 
					
						
							|  |  |  |         break; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.accountFilterCheck(); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   accountFilterCheck: async function () { | 
					
						
							|  |  |  |     let ids = []; | 
					
						
							|  |  |  |     for (let i = 0; i < SysTrayX.Messaging.accounts.length; ++i) { | 
					
						
							|  |  |  |       ids.push(SysTrayX.Messaging.accounts[i].id); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let newFilters = []; | 
					
						
							|  |  |  |     let filtersChanged = false; | 
					
						
							|  |  |  |     for (let i = 0; i < SysTrayX.Messaging.filters.length; ++i) { | 
					
						
							|  |  |  |       const id = SysTrayX.Messaging.filters[i].accountId; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (ids.includes(id)) { | 
					
						
							|  |  |  |         newFilters.push(SysTrayX.Messaging.filters[i]); | 
					
						
							|  |  |  |       } else { | 
					
						
							|  |  |  |         if (SysTrayX.Info.browserInfo.majorVersion < 115) { | 
					
						
							|  |  |  |           if (SysTrayX.Messaging.new[id] != undefined) { | 
					
						
							|  |  |  |             delete SysTrayX.Messaging.new[id]; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           if (SysTrayX.Messaging.unread[id] != undefined) { | 
					
						
							|  |  |  |             delete SysTrayX.Messaging.unread[id]; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         filtersChanged = true; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //console.debug("checkFilters: Old: " + JSON.stringify(SysTrayX.Messaging.filters));
 | 
					
						
							|  |  |  |     //console.debug("checkFilters: New: " + JSON.stringify(newFilters));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //console.debug("checkFilters: MesNew: " + JSON.stringify(SysTrayX.Messaging.new));
 | 
					
						
							|  |  |  |     //console.debug("checkFilters: MesUnread: " + JSON.stringify(SysTrayX.Messaging.unread));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (filtersChanged) { | 
					
						
							|  |  |  |       SysTrayX.Messaging.filters = [...newFilters]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       await storage().set({ | 
					
						
							|  |  |  |         filters: SysTrayX.Messaging.filters, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  |   listenerNewMail: function (folder, messages) { | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // Cache the new mail
 | 
					
						
							|  |  |  |     if (folder) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       SysTrayX.Messaging.newMailCache.push({ folder, messages }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 21:46:28 +02:00
										 |  |  |     //console.debug("listenerNewMailCache: New mail in: " + JSON.stringify(folder));
 | 
					
						
							|  |  |  |     //console.debug("listenerNewMailCache: New messages: " + JSON.stringify(messages));
 | 
					
						
							|  |  |  |     //console.debug("listenerNewMailCache: Cache: " + SysTrayX.Messaging.newMailCache.length );
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (SysTrayX.Messaging.startupDelayFinished) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       // Process the received messages
 | 
					
						
							|  |  |  |       SysTrayX.Messaging.newMailCache.forEach( (mail) => | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         if (mail.messages.messages.length > 0) { | 
					
						
							|  |  |  |           if (SysTrayX.Messaging.new[mail.folder.accountId] === undefined) { | 
					
						
							|  |  |  |             SysTrayX.Messaging.new[mail.folder.accountId] = {}; | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2023-09-06 21:21:06 +02:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |           if (SysTrayX.Messaging.new[mail.folder.accountId][mail.folder.path] === undefined) { | 
					
						
							|  |  |  |             SysTrayX.Messaging.new[mail.folder.accountId][mail.folder.path] = []; | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2023-09-06 21:21:06 +02:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |           SysTrayX.Messaging.new[mail.folder.accountId][mail.folder.path] = | 
					
						
							|  |  |  |             SysTrayX.Messaging.new[mail.folder.accountId][mail.folder.path].concat( | 
					
						
							|  |  |  |               mail.messages.messages | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |       // Cache handled
 | 
					
						
							|  |  |  |       SysTrayX.Messaging.newMailCache = []; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |   listenerFolderInfoChanged: async function (folder, folderInfo) { | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |     if (SysTrayX.Info.browserInfo.majorVersion < 115) { | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |       // Cache the folder change
 | 
					
						
							|  |  |  |       if (folder) | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         SysTrayX.Messaging.folderInfoChangeCache.push({ folder, folderInfo }); | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 21:46:28 +02:00
										 |  |  |       //console.debug("folderInfoChanged: " + JSON.stringify(folder));
 | 
					
						
							|  |  |  |       //console.debug("folderInfoChanged: " + JSON.stringify(folderInfo));
 | 
					
						
							|  |  |  |       //console.debug("folderInfoChanged: Cache: " + SysTrayX.Messaging.folderInfoChangeCache.length );
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |       if (SysTrayX.Messaging.startupDelayFinished) | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         if( SysTrayX.Messaging.folderInfoChangeCache.length > 0 ) { | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |           // Process the received messages
 | 
					
						
							|  |  |  |           for (const cache of SysTrayX.Messaging.folderInfoChangeCache) { | 
					
						
							|  |  |  |             if (cache.folderInfo.unreadMessageCount !== undefined) { | 
					
						
							|  |  |  |               if (SysTrayX.Messaging.unread[cache.folder.accountId] === undefined) { | 
					
						
							|  |  |  |                 SysTrayX.Messaging.unread[cache.folder.accountId] = {}; | 
					
						
							|  |  |  |               } | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |               if (SysTrayX.Messaging.new[cache.folder.accountId] === undefined) { | 
					
						
							|  |  |  |                 SysTrayX.Messaging.new[cache.folder.accountId] = {}; | 
					
						
							|  |  |  |               } | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |               if (SysTrayX.Messaging.new[cache.folder.accountId][cache.folder.path] === undefined) { | 
					
						
							|  |  |  |                 SysTrayX.Messaging.new[cache.folder.accountId][cache.folder.path] = []; | 
					
						
							|  |  |  |               } | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |               SysTrayX.Messaging.unread[cache.folder.accountId][cache.folder.path] = | 
					
						
							|  |  |  |                 cache.folderInfo.unreadMessageCount; | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |               // Check if the new mails have been read, remove from new storage
 | 
					
						
							|  |  |  |               const messages = SysTrayX.Messaging.new[cache.folder.accountId][cache.folder.path]; | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |               if (messages.length > 0) { | 
					
						
							|  |  |  |                 const newMessages = []; | 
					
						
							|  |  |  |                 for (let i = 0; i < messages.length; ++i) { | 
					
						
							|  |  |  |                   const message = messages[i]; | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |                   const getHeaderPromise = (messageId) => | 
					
						
							|  |  |  |                     new Promise((res) => res(messenger.messages.get(messageId))); | 
					
						
							|  |  |  |                   const header = await getHeaderPromise(message.id); | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |                   if (!header.read) { | 
					
						
							|  |  |  |                     newMessages.push(message); | 
					
						
							|  |  |  |                   } | 
					
						
							| 
									
										
										
										
											2023-09-10 21:08:31 +02:00
										 |  |  |                 } | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 21:46:28 +02:00
										 |  |  |                 //console.debug("FolderInfoChanged: Clear");
 | 
					
						
							|  |  |  |                 //console.debug("FolderInfoChanged: Old: " + JSON.stringify(SysTrayX.Messaging.new[cache.folder.accountId][cache.folder.path]));
 | 
					
						
							|  |  |  |                 //console.debug("FolderInfoChanged: New: " + JSON.stringify(newMessages));
 | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |                 SysTrayX.Messaging.new[cache.folder.accountId][cache.folder.path] = [ | 
					
						
							|  |  |  |                   ...newMessages, | 
					
						
							|  |  |  |                 ]; | 
					
						
							|  |  |  |               } | 
					
						
							| 
									
										
										
										
											2023-09-10 21:08:31 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |            | 
					
						
							|  |  |  |             // Cache handled
 | 
					
						
							|  |  |  |             SysTrayX.Messaging.folderInfoChangeCache = []; | 
					
						
							| 
									
										
										
										
											2023-09-10 21:08:31 +02:00
										 |  |  |           } | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |         } else { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           // Count the initial unread messages
 | 
					
						
							|  |  |  |           for (const filter of SysTrayX.Messaging.filters) { | 
					
						
							|  |  |  |             for (const path of filter.folders) { | 
					
						
							|  |  |  |               const folder = { | 
					
						
							|  |  |  |                 accountId: filter.accountId, | 
					
						
							|  |  |  |                 path: path, | 
					
						
							|  |  |  |               }; | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |               let mailFolderInfo = {}; | 
					
						
							|  |  |  |               try { | 
					
						
							|  |  |  |                 mailFolderInfo = await browser.folders.getFolderInfo(folder); | 
					
						
							|  |  |  |               } catch (err) { | 
					
						
							|  |  |  |                 console.debug("Filter error: " + err); | 
					
						
							|  |  |  |                 console.debug("Filter error: " + JSON.stringify(folder)); | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |               if (mailFolderInfo.unreadMessageCount !== undefined) { | 
					
						
							|  |  |  |                 if (SysTrayX.Messaging.unread[folder.accountId] === undefined) { | 
					
						
							|  |  |  |                   SysTrayX.Messaging.unread[folder.accountId] = {}; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |                 SysTrayX.Messaging.unread[folder.accountId][folder.path] = | 
					
						
							|  |  |  |                   mailFolderInfo.unreadMessageCount; | 
					
						
							| 
									
										
										
										
											2023-09-10 21:08:31 +02:00
										 |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |         sendMailCountPre115(); | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |     } else { | 
					
						
							| 
									
										
										
										
											2023-09-10 21:08:31 +02:00
										 |  |  |       sendMailCount(); | 
					
						
							| 
									
										
										
										
											2023-09-09 19:58:00 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-06-16 23:11:59 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  |   listenerFolderCreated: function (createdFolder) { | 
					
						
							| 
									
										
										
										
											2021-08-10 20:13:33 +02:00
										 |  |  |     const found = isParentFolderInFilters(createdFolder); | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  |     if (found) { | 
					
						
							|  |  |  |       addFolderToFilters(createdFolder); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-08-08 17:34:42 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  |   listenerFolderRenamed: function (originalFolder, renameFolder) { | 
					
						
							| 
									
										
										
										
											2021-08-10 20:13:33 +02:00
										 |  |  |     deleteFolderFromFilters(originalFolder); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const found = isParentFolderInFilters(renameFolder); | 
					
						
							|  |  |  |     if (found) { | 
					
						
							|  |  |  |       addFolderToFilters(renameFolder); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   listenerFolderDeleted: function (deletedFolder) { | 
					
						
							| 
									
										
										
										
											2021-08-10 20:13:33 +02:00
										 |  |  |     deleteFolderFromFilters(deletedFolder); | 
					
						
							| 
									
										
										
										
											2021-08-10 19:58:16 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  |   onCloseButton: function () { | 
					
						
							| 
									
										
										
										
											2022-07-09 16:52:52 +02:00
										 |  |  |     //console.debug("Minimize all")
 | 
					
						
							| 
									
										
										
										
											2022-07-08 14:25:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-21 11:12:49 +02:00
										 |  |  |     SysTrayX.Link.postSysTrayXMessage({ window: "minimized_all" }); | 
					
						
							|  |  |  |     /* | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  |     browser.windows.update(browser.windows.WINDOW_ID_CURRENT, { | 
					
						
							|  |  |  |       state: "minimized", | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-06-21 11:12:49 +02:00
										 |  |  |     */ | 
					
						
							| 
									
										
										
										
											2020-05-05 16:44:37 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |   //
 | 
					
						
							|  |  |  |   //  Handle a storage change
 | 
					
						
							|  |  |  |   //
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   storageChanged: async function (changes, area) { | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     //  Get the new preferences
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  |     if ("filters" in changes && changes["filters"].newValue) { | 
					
						
							|  |  |  |       SysTrayX.Messaging.filters = changes["filters"].newValue; | 
					
						
							| 
									
										
										
										
											2020-05-12 21:38:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |       sendMailCountPre115(); | 
					
						
							|  |  |  |       sendMailCount(); | 
					
						
							| 
									
										
										
										
											2020-04-03 17:45:20 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-09 20:22:19 +02:00
										 |  |  |     if ("closeType" in changes && changes["closeType"].newValue) { | 
					
						
							|  |  |  |       SysTrayX.Messaging.closeType = changes["closeType"].newValue; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       browser.windowEvent.setCloseType(Number(SysTrayX.Messaging.closeType)); | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-09 20:22:19 +02:00
										 |  |  |       if (SysTrayX.Messaging.closeType !== "0") { | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  |         browser.windowEvent.onCloseButtonClick.addListener( | 
					
						
							|  |  |  |           SysTrayX.Messaging.onCloseButton | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |       } else { | 
					
						
							|  |  |  |         browser.windowEvent.onCloseButtonClick.removeListener( | 
					
						
							|  |  |  |           SysTrayX.Messaging.onCloseButton | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  |     if ("countType" in changes && changes["countType"].newValue) { | 
					
						
							|  |  |  |       SysTrayX.Messaging.countType = changes["countType"].newValue; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |       sendMailCountPre115(); | 
					
						
							|  |  |  |       sendMailCount(); | 
					
						
							| 
									
										
										
										
											2020-04-03 17:45:20 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     if ("addonprefchanged" in changes && changes["addonprefchanged"].newValue) { | 
					
						
							|  |  |  |       //
 | 
					
						
							|  |  |  |       //  Send new preferences to the app
 | 
					
						
							|  |  |  |       //
 | 
					
						
							|  |  |  |       SysTrayX.Messaging.sendPreferences(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       //  Reset flag
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |       await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |         addonprefchanged: false, | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-21 21:02:07 +02:00
										 |  |  |   //
 | 
					
						
							|  |  |  |   //  Callback for folder changes
 | 
					
						
							|  |  |  |   //
 | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |   updateFilters: function (rootFolder, parentFolder, folder, added) { | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  |     const oldFolders = SysTrayX.Messaging.folderTree[rootFolder]; | 
					
						
							|  |  |  |     const oldPaths = getFolderPaths(oldFolders); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |     browser.accounts.list().then( | 
					
						
							|  |  |  |       (accounts) => { | 
					
						
							|  |  |  |         this.updateFiltersCallback( | 
					
						
							|  |  |  |           rootFolder, | 
					
						
							|  |  |  |           parentFolder, | 
					
						
							|  |  |  |           folder, | 
					
						
							|  |  |  |           added, | 
					
						
							|  |  |  |           oldFolders, | 
					
						
							|  |  |  |           oldPaths, | 
					
						
							|  |  |  |           accounts | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       () => console.log("Failed to get the accounts") | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   updateFiltersCallback: async function ( | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |     rootFolder, | 
					
						
							|  |  |  |     parentFolder, | 
					
						
							|  |  |  |     folder, | 
					
						
							|  |  |  |     added, | 
					
						
							|  |  |  |     oldFolders, | 
					
						
							|  |  |  |     oldPaths, | 
					
						
							|  |  |  |     accounts | 
					
						
							|  |  |  |   ) { | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  |     //  Get new folder tree
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     const folderTree = getFolderTree(accounts, SysTrayX.Info.browserInfo); | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  |     const newFolders = folderTree[rootFolder]; | 
					
						
							|  |  |  |     const newPaths = getFolderPaths(newFolders); | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |     const changes = findFolderPathsDiff(oldPaths, newPaths).filter((change) => | 
					
						
							|  |  |  |       change.endsWith(parentFolder + "/" + folder) | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (changes.length === 1 && added) { | 
					
						
							|  |  |  |       //  Folder has beeen added
 | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |       const addedFolder = changes[0]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       //  Is parent selected?
 | 
					
						
							|  |  |  |       const parentAddedFolder = addedFolder.substring( | 
					
						
							|  |  |  |         0, | 
					
						
							|  |  |  |         addedFolder.lastIndexOf("/") | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const parentSelected = findFolderPath( | 
					
						
							|  |  |  |         SysTrayX.Messaging.filters, | 
					
						
							|  |  |  |         parentAddedFolder | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (parentSelected) { | 
					
						
							|  |  |  |         //  Add the new folder to the filters
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const newFilter = { | 
					
						
							|  |  |  |           ...parentSelected, | 
					
						
							|  |  |  |           folder: { | 
					
						
							|  |  |  |             ...parentSelected.folder, | 
					
						
							|  |  |  |             path: changes[0], | 
					
						
							|  |  |  |             name: changes[0].substring(changes[0].lastIndexOf("/") + 1), | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ( | 
					
						
							|  |  |  |           SysTrayX.Messaging.filters.filter( | 
					
						
							|  |  |  |             (filter) => filter.folder.path === newFilter.folder.path | 
					
						
							|  |  |  |           ).length === 0 | 
					
						
							|  |  |  |         ) { | 
					
						
							|  |  |  |           SysTrayX.Messaging.filters.push(newFilter); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           //  Store the new filters
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |           await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |             filters: SysTrayX.Messaging.filters, | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } else if (changes.length === 1 && !added) { | 
					
						
							|  |  |  |       //  Folder has been removed, remove also all children
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const filters = SysTrayX.Messaging.filters.filter( | 
					
						
							|  |  |  |         (filter) => !filter.folder.path.startsWith(changes[0]) | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (filters.length !== SysTrayX.Messaging.filters.length) { | 
					
						
							|  |  |  |         //  Remove found filters (and children) from the filters
 | 
					
						
							|  |  |  |         SysTrayX.Messaging.filters = filters; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //  Store the new filters
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-10-05 22:30:34 +02:00
										 |  |  |           filters: SysTrayX.Messaging.filters, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //  Store the new accounts and folder tree
 | 
					
						
							|  |  |  |     SysTrayX.Messaging.accounts = accounts; | 
					
						
							|  |  |  |     SysTrayX.Messaging.folderTree = folderTree; | 
					
						
							| 
									
										
										
										
											2020-08-21 21:02:07 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 23:31:41 +02:00
										 |  |  |   sendBrowserInfo: function () { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     const info = SysTrayX.Info.browserInfo; | 
					
						
							| 
									
										
										
										
											2020-05-02 14:49:05 +02:00
										 |  |  |     SysTrayX.Link.postSysTrayXMessage({ browserInfo: info }); | 
					
						
							| 
									
										
										
										
											2020-04-27 23:31:41 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   sendPlatformInfo: function () { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     const info = SysTrayX.Info.platformInfo; | 
					
						
							| 
									
										
										
										
											2020-05-02 14:49:05 +02:00
										 |  |  |     SysTrayX.Link.postSysTrayXMessage({ platformInfo: info }); | 
					
						
							| 
									
										
										
										
											2020-04-27 23:31:41 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   sendVersion: function () { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |     SysTrayX.Link.postSysTrayXMessage({ version: SysTrayX.Info.version }); | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-05 19:37:15 +02:00
										 |  |  |   sendHideDefaultIcon: function () { | 
					
						
							|  |  |  |     SysTrayX.Link.postSysTrayXMessage({ | 
					
						
							|  |  |  |       hideDefaultIcon: SysTrayX.hideDefaultIcon, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-14 23:20:29 +02:00
										 |  |  |   sendLocale: function () { | 
					
						
							|  |  |  |     const locale = browser.i18n.getUILanguage(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SysTrayX.Link.postSysTrayXMessage({ | 
					
						
							|  |  |  |       locale: locale, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |   sendStartApp: function () { | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |     SysTrayX.Link.postSysTrayXMessage({ | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |       startApp: SysTrayX.startApp, | 
					
						
							|  |  |  |       startAppArgs: SysTrayX.startAppArgs, | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   sendCloseApp: function () { | 
					
						
							|  |  |  |     SysTrayX.Link.postSysTrayXMessage({ | 
					
						
							|  |  |  |       closeApp: "closeApp", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   sendPreferences: async function () { | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |     await storage() | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |       .get([ | 
					
						
							|  |  |  |         "debug", | 
					
						
							|  |  |  |         "minimizeType", | 
					
						
							| 
									
										
										
										
											2023-07-22 22:20:28 +02:00
										 |  |  |         "minimizeIconType", | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         "closeType", | 
					
						
							|  |  |  |         "startMinimized", | 
					
						
							|  |  |  |         "restorePositions", | 
					
						
							|  |  |  |         "defaultIconType", | 
					
						
							|  |  |  |         "defaultIconMime", | 
					
						
							|  |  |  |         "defaultIcon", | 
					
						
							|  |  |  |         "hideDefaultIcon", | 
					
						
							|  |  |  |         "iconType", | 
					
						
							|  |  |  |         "iconMime", | 
					
						
							|  |  |  |         "icon", | 
					
						
							| 
									
										
										
										
											2023-10-24 22:42:56 +02:00
										 |  |  |         "invertIcon", | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         "showNumber", | 
					
						
							| 
									
										
										
										
											2023-08-27 21:01:48 +02:00
										 |  |  |         "showNewIndicator", | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |         "countType", | 
					
						
							|  |  |  |         "startupDelay", | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         "numberColor", | 
					
						
							|  |  |  |         "numberSize", | 
					
						
							|  |  |  |         "numberAlignment", | 
					
						
							|  |  |  |         "numberMargins", | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |         "newIndicatorType", | 
					
						
							|  |  |  |         "newShadeColor", | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |         "startApp", | 
					
						
							|  |  |  |         "startAppArgs", | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |         "closeApp", | 
					
						
							|  |  |  |         "closeAppArgs", | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |       ]) | 
					
						
							|  |  |  |       .then( | 
					
						
							|  |  |  |         SysTrayX.Messaging.sendPreferencesStorage, | 
					
						
							|  |  |  |         SysTrayX.Messaging.onSendPreferecesStorageError | 
					
						
							|  |  |  |       ); | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2020-01-12 15:09:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   sendPreferencesStorage: function (result) { | 
					
						
							| 
									
										
										
										
											2020-01-23 23:28:52 +01:00
										 |  |  |     const debug = result.debug || "false"; | 
					
						
							| 
									
										
										
										
											2021-01-03 22:01:20 +01:00
										 |  |  |     const minimizeType = result.minimizeType || "1"; | 
					
						
							| 
									
										
										
										
											2023-07-22 22:20:28 +02:00
										 |  |  |     const minimizeIconType = result.minimizeIconType || "1"; | 
					
						
							| 
									
										
										
										
											2020-08-02 16:59:53 +02:00
										 |  |  |     const closeType = result.closeType || "1"; | 
					
						
							| 
									
										
										
										
											2020-03-01 23:43:01 +01:00
										 |  |  |     const startMinimized = result.startMinimized || "false"; | 
					
						
							| 
									
										
										
										
											2020-12-20 13:05:27 +01:00
										 |  |  |     const restorePositions = result.restorePositions || "false"; | 
					
						
							| 
									
										
										
										
											2020-05-22 22:54:10 +02:00
										 |  |  |     const defaultIconType = result.defaultIconType || "0"; | 
					
						
							|  |  |  |     const defaultIconMime = result.defaultIconMime || "image/png"; | 
					
						
							|  |  |  |     const defaultIcon = result.defaultIcon || []; | 
					
						
							| 
									
										
										
										
											2020-06-04 17:58:27 +02:00
										 |  |  |     const hideDefaultIcon = result.hideDefaultIcon || "false"; | 
					
						
							| 
									
										
										
										
											2020-01-23 23:28:52 +01:00
										 |  |  |     const iconType = result.iconType || "0"; | 
					
						
							|  |  |  |     const iconMime = result.iconMime || "image/png"; | 
					
						
							|  |  |  |     const icon = result.icon || []; | 
					
						
							| 
									
										
										
										
											2023-10-24 22:42:56 +02:00
										 |  |  |     const invertIcon = result.invertIcon || "false"; | 
					
						
							| 
									
										
										
										
											2020-04-05 14:39:19 +02:00
										 |  |  |     const showNumber = result.showNumber || "true"; | 
					
						
							| 
									
										
										
										
											2023-08-29 21:13:42 +02:00
										 |  |  |     const showNewIndicator = result.showNewIndicator || "false"; | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |     const countType = result.countType || "0"; | 
					
						
							|  |  |  |     const startupDelay = result.startupDelay || "5"; | 
					
						
							| 
									
										
										
										
											2020-12-06 00:36:31 +01:00
										 |  |  |     let numberColor = result.numberColor || "#000000"; | 
					
						
							| 
									
										
										
										
											2020-06-13 21:31:28 +02:00
										 |  |  |     const numberSize = result.numberSize || "10"; | 
					
						
							| 
									
										
										
										
											2020-12-11 20:57:30 +01:00
										 |  |  |     const numberAlignment = result.numberAlignment || "4"; | 
					
						
							|  |  |  |     const numberMargins = result.numberMargins || { | 
					
						
							|  |  |  |       left: 0, | 
					
						
							|  |  |  |       top: 0, | 
					
						
							|  |  |  |       right: 0, | 
					
						
							|  |  |  |       bottom: 0, | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |     const newIndicatorType = result.newIndicatorType || "2"; | 
					
						
							|  |  |  |     const newShadeColor = result.newShadeColor || "#ff8000"; | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |     const startApp = result.startApp || ""; | 
					
						
							|  |  |  |     const startAppArgs = result.startAppArgs || ""; | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |     const closeApp = result.closeApp || ""; | 
					
						
							|  |  |  |     const closeAppArgs = result.closeAppArgs || ""; | 
					
						
							| 
									
										
										
										
											2020-12-06 00:36:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     //  Send it to the app
 | 
					
						
							|  |  |  |     SysTrayX.Link.postSysTrayXMessage({ | 
					
						
							|  |  |  |       preferences: { | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |         debug, | 
					
						
							|  |  |  |         minimizeType, | 
					
						
							| 
									
										
										
										
											2023-07-22 22:20:28 +02:00
										 |  |  |         minimizeIconType, | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |         closeType, | 
					
						
							|  |  |  |         startMinimized, | 
					
						
							|  |  |  |         restorePositions, | 
					
						
							|  |  |  |         defaultIconType, | 
					
						
							|  |  |  |         defaultIconMime, | 
					
						
							|  |  |  |         defaultIcon, | 
					
						
							|  |  |  |         hideDefaultIcon, | 
					
						
							|  |  |  |         iconType, | 
					
						
							|  |  |  |         iconMime, | 
					
						
							|  |  |  |         icon, | 
					
						
							| 
									
										
										
										
											2023-10-24 22:42:56 +02:00
										 |  |  |         invertIcon, | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |         showNumber, | 
					
						
							| 
									
										
										
										
											2023-08-27 21:01:48 +02:00
										 |  |  |         showNewIndicator, | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |         countType, | 
					
						
							|  |  |  |         startupDelay, | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |         numberColor, | 
					
						
							|  |  |  |         numberSize, | 
					
						
							|  |  |  |         numberAlignment, | 
					
						
							|  |  |  |         numberMargins, | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |         newIndicatorType, | 
					
						
							|  |  |  |         newShadeColor, | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |         startApp, | 
					
						
							|  |  |  |         startAppArgs, | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |         closeApp, | 
					
						
							|  |  |  |         closeAppArgs, | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-04-21 21:38:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (SysTrayX.startupState) { | 
					
						
							|  |  |  |       //  Send startup state after the prefs
 | 
					
						
							|  |  |  |       //  so the hide is handled conform the prefs
 | 
					
						
							| 
									
										
										
										
											2020-06-28 13:03:53 +02:00
										 |  |  |       if (SysTrayX.startupState === "minimized") { | 
					
						
							|  |  |  |         SysTrayX.Link.postSysTrayXMessage({ window: "minimized_all" }); | 
					
						
							|  |  |  |         //SysTrayX.Link.postSysTrayXMessage({ window: SysTrayX.startupState });
 | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2020-04-21 21:38:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       SysTrayX.startupState = undefined; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-01-11 22:08:11 +01:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   onSendIconStorageError: function (error) { | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     console.log(`GetIcon Error: ${error}`); | 
					
						
							| 
									
										
										
										
											2020-01-11 22:08:11 +01:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   onGetAccountsStorageError: function (error) { | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     console.log(`GetAccounts Error: ${error}`); | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2020-01-12 15:09:47 +01:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-01-11 22:08:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-13 23:22:11 +01:00
										 |  |  | //
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  | //  Link object. Handles the native messaging to the system tray app
 | 
					
						
							| 
									
										
										
										
											2020-01-13 23:22:11 +01:00
										 |  |  | //
 | 
					
						
							|  |  |  | SysTrayX.Link = { | 
					
						
							|  |  |  |   portSysTrayX: undefined, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   init: function () { | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     //  Connect to the app
 | 
					
						
							| 
									
										
										
										
											2020-01-13 23:22:11 +01:00
										 |  |  |     this.portSysTrayX = browser.runtime.connectNative("SysTray_X"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //  Listen for messages from the app.
 | 
					
						
							|  |  |  |     this.portSysTrayX.onMessage.addListener( | 
					
						
							|  |  |  |       SysTrayX.Link.receiveSysTrayXMessage | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   postSysTrayXMessage: function (object) { | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     //  Send object (will be stringified by postMessage)
 | 
					
						
							| 
									
										
										
										
											2022-07-03 14:16:05 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-03 21:46:28 +02:00
										 |  |  |     //console.debug("postSysTrayXMessage: " + JSON.stringify(object));
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     SysTrayX.Link.portSysTrayX.postMessage(object); | 
					
						
							| 
									
										
										
										
											2020-01-13 23:22:11 +01:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   receiveSysTrayXMessage: async function (response) { | 
					
						
							| 
									
										
										
										
											2020-02-29 19:04:43 +01:00
										 |  |  |     if (response["shutdown"]) { | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  |       browser.windowEvent.onCloseButtonClick.removeListener( | 
					
						
							|  |  |  |         SysTrayX.Messaging.onCloseButton | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       SysTrayX.Link.postSysTrayXMessage({ shutdown: "true" }); | 
					
						
							| 
									
										
										
										
											2020-02-29 19:04:43 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-07 16:19:39 +02:00
										 |  |  |     const kdeIntegration = response["kdeIntegration"]; | 
					
						
							| 
									
										
										
										
											2021-09-13 20:54:46 +02:00
										 |  |  |     if (kdeIntegration !== undefined) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |       await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-06-07 16:19:39 +02:00
										 |  |  |         kdeIntegration: kdeIntegration, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-05 15:18:30 +01:00
										 |  |  |     const positions = response["positions"]; | 
					
						
							|  |  |  |     if (positions) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |       await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-12-05 15:18:30 +01:00
										 |  |  |         windowPositions: positions, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |     if (response["preferences"]) { | 
					
						
							|  |  |  |       //  Store the preferences from the app
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const minimizeType = response["preferences"].minimizeType; | 
					
						
							|  |  |  |       if (minimizeType) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           minimizeType: minimizeType, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const minimizeIconType = response["preferences"].minimizeIconType; | 
					
						
							|  |  |  |       if (minimizeIconType) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           minimizeIconType: minimizeIconType, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const closeType = response["preferences"].closeType; | 
					
						
							|  |  |  |       if (closeType) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           closeType: closeType, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const startMinimized = response["preferences"].startMinimized; | 
					
						
							|  |  |  |       if (startMinimized) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           startMinimized: startMinimized, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const restorePositions = response["preferences"].restorePositions; | 
					
						
							|  |  |  |       if (restorePositions) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           restorePositions: restorePositions, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-22 22:54:10 +02:00
										 |  |  |       const defaultIconMime = response["preferences"].defaultIconMime; | 
					
						
							|  |  |  |       if (defaultIconMime) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-05-22 22:54:10 +02:00
										 |  |  |           defaultIconMime: defaultIconMime, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const defaultIcon = response["preferences"].defaultIcon; | 
					
						
							|  |  |  |       if (defaultIcon) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-05-22 22:54:10 +02:00
										 |  |  |           defaultIcon: defaultIcon, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const defaultIconType = response["preferences"].defaultIconType; | 
					
						
							|  |  |  |       if (defaultIconType) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-05-22 22:54:10 +02:00
										 |  |  |           defaultIconType: defaultIconType, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-03 22:46:46 +02:00
										 |  |  |       const hideDefaultIcon = response["preferences"].hideDefaultIcon; | 
					
						
							|  |  |  |       if (hideDefaultIcon) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-06-03 22:46:46 +02:00
										 |  |  |           hideDefaultIcon: hideDefaultIcon, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-23 23:28:52 +01:00
										 |  |  |       const iconMime = response["preferences"].iconMime; | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |       if (iconMime) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |           iconMime: iconMime, | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-23 23:28:52 +01:00
										 |  |  |       const icon = response["preferences"].icon; | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |       if (icon) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |           icon: icon, | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-23 23:28:52 +01:00
										 |  |  |       const iconType = response["preferences"].iconType; | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |       if (iconType) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |           iconType: iconType, | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 22:42:56 +02:00
										 |  |  |       const invertIcon = response["preferences"].invertIcon; | 
					
						
							|  |  |  |       if (invertIcon) { | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-10-24 22:42:56 +02:00
										 |  |  |           invertIcon: invertIcon, | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-05 14:39:19 +02:00
										 |  |  |       const showNumber = response["preferences"].showNumber; | 
					
						
							|  |  |  |       if (showNumber) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-04-05 14:39:19 +02:00
										 |  |  |           showNumber: showNumber, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-27 21:01:48 +02:00
										 |  |  |       const showNewIndicator = response["preferences"].showNewIndicator; | 
					
						
							|  |  |  |       if (showNewIndicator) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           showNewIndicator: showNewIndicator, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  |       const countType = response["preferences"].countType; | 
					
						
							|  |  |  |       if (countType) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  |           countType: countType, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-05 17:04:13 +02:00
										 |  |  |       const startupDelay = response["preferences"].startupDelay; | 
					
						
							|  |  |  |       if (startupDelay) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           startupDelay: startupDelay, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const numberColor = response["preferences"].numberColor; | 
					
						
							|  |  |  |       if (numberColor) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |           numberColor: numberColor, | 
					
						
							| 
									
										
										
										
											2020-04-07 17:19:02 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const numberSize = response["preferences"].numberSize; | 
					
						
							|  |  |  |       if (numberSize) { | 
					
						
							| 
									
										
										
										
											2023-07-22 22:20:28 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |           numberSize: numberSize, | 
					
						
							| 
									
										
										
										
											2023-07-22 22:20:28 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const numberAlignment = response["preferences"].numberAlignment; | 
					
						
							|  |  |  |       if (numberAlignment) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |           numberAlignment: numberAlignment, | 
					
						
							| 
									
										
										
										
											2020-06-28 23:23:12 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const numberMargins = response["preferences"].numberMargins; | 
					
						
							|  |  |  |       if (numberMargins) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |           numberMargins: numberMargins, | 
					
						
							| 
									
										
										
										
											2020-02-18 00:24:31 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const newIndicatorType = response["preferences"].newIndicatorType; | 
					
						
							|  |  |  |       if (newIndicatorType) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |           newIndicatorType: newIndicatorType, | 
					
						
							| 
									
										
										
										
											2020-12-20 13:05:27 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |       const newShadeColor = response["preferences"].newShadeColor; | 
					
						
							|  |  |  |       if (newShadeColor) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-29 19:41:21 +02:00
										 |  |  |           newShadeColor: newShadeColor, | 
					
						
							| 
									
										
										
										
											2020-12-06 00:36:31 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |       const startApp = response["preferences"].startApp; | 
					
						
							|  |  |  |       if (startApp !== undefined) { | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |           startApp: startApp, | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |       const startAppArgs = response["preferences"].startAppArgs; | 
					
						
							|  |  |  |       if (startAppArgs !== undefined) { | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |           startAppArgs: startAppArgs, | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const closeApp = response["preferences"]. closeApp; | 
					
						
							|  |  |  |       if (closeApp !== undefined) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           closeApp: closeApp, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const closeAppArgs = response["preferences"].closeAppArgs; | 
					
						
							|  |  |  |       if (closeAppArgs !== undefined) { | 
					
						
							|  |  |  |         await storage().set({ | 
					
						
							|  |  |  |           closeAppArgs: closeAppArgs, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-23 23:28:52 +01:00
										 |  |  |       const debug = response["preferences"].debug; | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |       if (debug) { | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |         await storage().set({ | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |           debug: debug, | 
					
						
							| 
									
										
										
										
											2020-01-22 23:14:46 +01:00
										 |  |  |         }); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2020-01-13 23:22:11 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-03 23:05:20 +01:00
										 |  |  | SysTrayX.Window = { | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   focusChanged: function (windowId) { | 
					
						
							|  |  |  |     browser.windows.getCurrent().then((win) => { | 
					
						
							| 
									
										
										
										
											2020-02-03 23:05:20 +01:00
										 |  |  |       SysTrayX.Link.postSysTrayXMessage({ window: win.state }); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2020-04-04 19:34:19 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2022-06-19 22:01:58 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   folderChanged: function (tab, displayedFolder) { | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2023-10-03 21:46:28 +02:00
										 |  |  |     //console.debug("Folder changed tab: " + JSON.stringify(tab));
 | 
					
						
							|  |  |  |     //console.debug("Folder changed displayedFolder: " + JSON.stringify(displayedFolder));
 | 
					
						
							| 
									
										
										
										
											2022-07-03 17:43:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |     if (SysTrayX.Info.browserInfo.majorVersion < 115) { | 
					
						
							|  |  |  |       const oldDisplayedFolder = SysTrayX.Messaging.displayedFolder; | 
					
						
							|  |  |  |       if (oldDisplayedFolder !== undefined) { | 
					
						
							|  |  |  |         if ( | 
					
						
							|  |  |  |           SysTrayX.Messaging.new[oldDisplayedFolder.accountId] !== undefined && | 
					
						
							|  |  |  |           SysTrayX.Messaging.new[oldDisplayedFolder.accountId][ | 
					
						
							|  |  |  |             oldDisplayedFolder.path | 
					
						
							|  |  |  |           ] !== undefined | 
					
						
							|  |  |  |         ) { | 
					
						
							|  |  |  |           SysTrayX.Messaging.new[oldDisplayedFolder.accountId][ | 
					
						
							|  |  |  |             oldDisplayedFolder.path | 
					
						
							|  |  |  |           ] = []; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-06-20 20:48:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |         if (SysTrayX.Messaging.startupDelayFinished) { | 
					
						
							|  |  |  |           sendMailCountPre115(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       SysTrayX.Messaging.displayedFolder = displayedFolder; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |       if (SysTrayX.Messaging.startupDelayFinished) { | 
					
						
							|  |  |  |         sendMailCount(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-06-19 22:01:58 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2020-02-03 23:05:20 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-24 22:20:30 +01:00
										 |  |  | async function start() { | 
					
						
							| 
									
										
										
										
											2021-09-05 21:37:04 +02:00
										 |  |  |   //  Set platform
 | 
					
						
							|  |  |  |   SysTrayX.Info.platformInfo = await browser.runtime | 
					
						
							|  |  |  |     .getPlatformInfo() | 
					
						
							|  |  |  |     .then((info) => info); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //  Set browser
 | 
					
						
							|  |  |  |   SysTrayX.Info.browserInfo = await browser.runtime | 
					
						
							|  |  |  |     .getBrowserInfo() | 
					
						
							|  |  |  |     .then((info) => info); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const version = SysTrayX.Info.browserInfo.version.split("."); | 
					
						
							|  |  |  |   SysTrayX.Info.browserInfo.majorVersion = version[0]; | 
					
						
							|  |  |  |   SysTrayX.Info.browserInfo.minorVersion = version[1]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //  Get addon version
 | 
					
						
							|  |  |  |   SysTrayX.Info.version = browser.runtime.getManifest().version; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SysTrayX.Info.displayInfo(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-13 22:44:25 +02:00
										 |  |  |   // Try to catch the mails
 | 
					
						
							|  |  |  |   if (SysTrayX.Info.browserInfo.majorVersion < 115) { | 
					
						
							|  |  |  |     // Catch the new incomming mail
 | 
					
						
							|  |  |  |     browser.messages.onNewMailReceived.addListener( | 
					
						
							|  |  |  |       SysTrayX.Messaging.listenerNewMail | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //  Set catch folder changes
 | 
					
						
							|  |  |  |   browser.folders.onFolderInfoChanged.addListener( | 
					
						
							|  |  |  |     SysTrayX.Messaging.listenerFolderInfoChanged | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-11 21:31:07 +02:00
										 |  |  |   //  Catch a folder change to reset the new counter
 | 
					
						
							|  |  |  |   browser.mailTabs.onDisplayedFolderChanged.addListener( | 
					
						
							|  |  |  |     SysTrayX.Window.folderChanged | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-29 20:36:08 +01:00
										 |  |  |   //  Get the prefered start state
 | 
					
						
							|  |  |  |   const state = await getStartupState(); | 
					
						
							| 
									
										
										
										
											2020-04-21 21:38:44 +02:00
										 |  |  |   SysTrayX.startupState = state; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-05 15:18:30 +01:00
										 |  |  |   //  Restore window positions
 | 
					
						
							|  |  |  |   const restorePositions = await getRestorePositionsState(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   if (restorePositions === "true") { | 
					
						
							| 
									
										
										
										
											2020-12-05 15:18:30 +01:00
										 |  |  |     SysTrayX.restorePositions = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Get the start window positions
 | 
					
						
							|  |  |  |     SysTrayX.startupWindowPositions = await getStartupWindowPositions(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-02 21:32:09 +02:00
										 |  |  |   // Get the close type
 | 
					
						
							|  |  |  |   SysTrayX.Messaging.closeType = await getCloseType(); | 
					
						
							|  |  |  |   browser.windowEvent.setCloseType(Number(SysTrayX.Messaging.closeType)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  |   //  Intercept close button?
 | 
					
						
							| 
									
										
										
										
											2020-08-09 20:22:19 +02:00
										 |  |  |   if (SysTrayX.Messaging.closeType !== "0") { | 
					
						
							| 
									
										
										
										
											2020-05-10 20:55:27 +02:00
										 |  |  |     browser.windowEvent.onCloseButtonClick.addListener( | 
					
						
							|  |  |  |       SysTrayX.Messaging.onCloseButton | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-05 19:37:15 +02:00
										 |  |  |   //  Hide the default icon
 | 
					
						
							|  |  |  |   const hideDefaultIcon = await getHideDefaultIcon(); | 
					
						
							|  |  |  |   SysTrayX.hideDefaultIcon = hideDefaultIcon; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-25 20:44:32 +02:00
										 |  |  |   //  Get start app launch parameters
 | 
					
						
							| 
									
										
										
										
											2023-08-25 18:18:20 +02:00
										 |  |  |   const {startApp, startAppArgs} = await getStartAppParam(); | 
					
						
							|  |  |  |   SysTrayX.startApp = startApp; | 
					
						
							|  |  |  |   SysTrayX.startAppArgs = startAppArgs; | 
					
						
							| 
									
										
										
										
											2023-08-22 16:02:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   //   Used sync storage
 | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |   //  const inUse = await browser.storage.sync.getBytesInUse();
 | 
					
						
							|  |  |  |   //  console.log("Storage in use: " + inUse);
 | 
					
						
							| 
									
										
										
										
											2020-04-04 16:51:13 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-29 19:04:43 +01:00
										 |  |  |   //  Init defaults before everything
 | 
					
						
							| 
									
										
										
										
											2020-08-29 20:18:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-04 22:16:18 +02:00
										 |  |  |   //  Reset KDE integration
 | 
					
						
							|  |  |  |   await storage().set({ | 
					
						
							|  |  |  |     kdeIntegration: true, | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-05 13:55:39 +02:00
										 |  |  |   // Get the default icons
 | 
					
						
							|  |  |  |   const getDefaultIconPromise = () => | 
					
						
							|  |  |  |     new Promise((res) => res(getDefaultIcon())); | 
					
						
							|  |  |  |   await getDefaultIconPromise(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const getIconPromise = () => new Promise((res) => res(getIcon())); | 
					
						
							|  |  |  |   await getIconPromise(); | 
					
						
							| 
									
										
										
										
											2020-05-09 17:10:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-24 22:20:30 +01:00
										 |  |  |   //  Setup the link first
 | 
					
						
							|  |  |  |   SysTrayX.Link.init(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //  Main start
 | 
					
						
							|  |  |  |   SysTrayX.Messaging.init(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | console.log("Starting SysTray-X"); | 
					
						
							| 
									
										
										
										
											2020-01-04 23:47:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-24 22:20:30 +01:00
										 |  |  | //  Start the add-on
 | 
					
						
							|  |  |  | start(); |