mirror of
https://github.com/Ximi1970/systray-x.git
synced 2026-01-22 15:12:04 +01:00
Find the folder changes
This commit is contained in:
@@ -6,11 +6,12 @@
|
||||
<style></style>
|
||||
</head>
|
||||
<body>
|
||||
<script src="js/defaults.js"></script>
|
||||
<script src="js/folderTree.js"></script>
|
||||
|
||||
<h3>Background</h3>
|
||||
<p>Background HTML</p>
|
||||
|
||||
<script src="js/defaults.js"></script>
|
||||
|
||||
<div id="defaultIcon" data-default-icon-mime="" data-default-icon=""></div>
|
||||
<div id="icon" data-icon-mime="" data-icon=""></div>
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ var SysTrayX = {
|
||||
|
||||
SysTrayX.Messaging = {
|
||||
accounts: [],
|
||||
folderTree: {},
|
||||
countType: 0,
|
||||
closeType: 1,
|
||||
filters: undefined,
|
||||
@@ -56,8 +57,13 @@ SysTrayX.Messaging = {
|
||||
SysTrayX.Messaging.unreadCb(unread);
|
||||
});
|
||||
|
||||
browser.folderChange.onFolderChange.addListener(function () {
|
||||
SysTrayX.Messaging.updateFilters();
|
||||
browser.folderChange.onFolderChange.addListener(function (
|
||||
rootFolder,
|
||||
parentFolder,
|
||||
folder,
|
||||
added
|
||||
) {
|
||||
SysTrayX.Messaging.updateFilters(rootFolder, parentFolder, folder, added);
|
||||
});
|
||||
|
||||
// Set the count type in the folderChange listener
|
||||
@@ -136,8 +142,36 @@ SysTrayX.Messaging = {
|
||||
//
|
||||
// Callback for folder changes
|
||||
//
|
||||
updateFilters: function (count) {
|
||||
console.debug("Folder changed");
|
||||
updateFilters: async function (rootFolder, parentFolder, folder, added) {
|
||||
console.debug("Folder changed account: " + rootFolder);
|
||||
console.debug("Folder changed parent folder: " + parentFolder);
|
||||
console.debug("Folder changed folder: " + folder);
|
||||
|
||||
if (added) {
|
||||
console.debug("Folder changed : added");
|
||||
} else {
|
||||
console.debug("Folder changed : removed");
|
||||
}
|
||||
|
||||
const oldFolders = SysTrayX.Messaging.folderTree[rootFolder];
|
||||
const oldPaths = getFolderPaths(oldFolders);
|
||||
|
||||
// Get new accounts for the changes
|
||||
const accounts = await browser.accounts.list();
|
||||
|
||||
// Get new folder tree
|
||||
const folderTree = getFolderTree(accounts, SysTrayX.browserInfo);
|
||||
const newFolders = folderTree[rootFolder];
|
||||
const newPaths = getFolderPaths(newFolders);
|
||||
const changes = findFolderPathsDiff(oldPaths, newPaths);
|
||||
|
||||
console.debug("Folder paths old: " + JSON.stringify(oldPaths));
|
||||
console.debug("Folder paths new: " + JSON.stringify(newPaths));
|
||||
console.debug("Folder changes: " + JSON.stringify(changes));
|
||||
|
||||
// Store the new accounts and folder tree
|
||||
SysTrayX.Messaging.accounts = accounts;
|
||||
SysTrayX.Messaging.folderTree = folderTree;
|
||||
},
|
||||
|
||||
sendBrowserInfo: function () {
|
||||
@@ -497,6 +531,12 @@ async function start() {
|
||||
// Get all accounts
|
||||
SysTrayX.Messaging.accounts = await browser.accounts.list();
|
||||
|
||||
// Get folder tree
|
||||
SysTrayX.Messaging.folderTree = getFolderTree(
|
||||
SysTrayX.Messaging.accounts,
|
||||
SysTrayX.browserInfo
|
||||
);
|
||||
|
||||
// Get the filters (needs the accounts)
|
||||
SysTrayX.Messaging.filters = await getFilters();
|
||||
|
||||
|
||||
@@ -89,8 +89,8 @@ var folderChange = class extends ExtensionCommon.ExtensionAPI {
|
||||
// function that removes those listeners. To have the event fire in your extension,
|
||||
// call fire.async.
|
||||
register(fire) {
|
||||
function callback(event,added) {
|
||||
return fire.async(added);
|
||||
function callback(event, rootFolder, parentFolder, folder, added) {
|
||||
return fire.async(rootFolder, parentFolder, folder, added);
|
||||
}
|
||||
|
||||
SysTrayX.addOnFolderChange(callback);
|
||||
@@ -201,13 +201,25 @@ var SysTrayX = {
|
||||
|
||||
OnItemAdded(parentItem, item) {
|
||||
if (SysTrayX.callbackOnFolderChange) {
|
||||
SysTrayX.callbackOnFolderChange("folder-changed", true);
|
||||
SysTrayX.callbackOnFolderChange(
|
||||
"folder-changed",
|
||||
parentItem.rootFolder.prettyName,
|
||||
parentItem.prettyName,
|
||||
item.prettyName,
|
||||
true
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
OnItemRemoved(parentItem, item) {
|
||||
if (SysTrayX.callbackOnFolderChange) {
|
||||
SysTrayX.callbackOnFolderChange("folder-changed", false);
|
||||
SysTrayX.callbackOnFolderChange(
|
||||
"folder-changed",
|
||||
parentItem.rootFolder.prettyName,
|
||||
parentItem.prettyName,
|
||||
item.prettyName,
|
||||
false
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -74,13 +74,24 @@
|
||||
"type": "function",
|
||||
"description": "Fires when there is a folder added or removed.",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "rootFolder",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "parentFolder",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "folder",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "added",
|
||||
"type": "boolean"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user