Find the folder changes

This commit is contained in:
Ximi1970
2020-08-29 20:18:40 +02:00
parent 520563f220
commit eb0e2f13b9
4 changed files with 75 additions and 11 deletions

View File

@@ -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>

View File

@@ -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();

View File

@@ -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
);
}
},

View File

@@ -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"
}
]
}
]
}
]