mirror of
https://github.com/Ximi1970/systray-x.git
synced 2025-11-14 17:26:13 +01:00
Add new folder change methods
This commit is contained in:
@@ -55,6 +55,7 @@ SysTrayX.Messaging = {
|
|||||||
// Send preferences to app
|
// Send preferences to app
|
||||||
SysTrayX.Messaging.sendPreferences();
|
SysTrayX.Messaging.sendPreferences();
|
||||||
|
|
||||||
|
if (SysTrayX.browserInfo.majorVersion < 91) {
|
||||||
// Set TB versionn
|
// Set TB versionn
|
||||||
const version = SysTrayX.browserInfo.version.split(".")[0];
|
const version = SysTrayX.browserInfo.version.split(".")[0];
|
||||||
browser.folderChange.setVersion(Number(version));
|
browser.folderChange.setVersion(Number(version));
|
||||||
@@ -70,7 +71,12 @@ SysTrayX.Messaging = {
|
|||||||
folder,
|
folder,
|
||||||
added
|
added
|
||||||
) {
|
) {
|
||||||
SysTrayX.Messaging.updateFilters(rootFolder, parentFolder, folder, added);
|
SysTrayX.Messaging.updateFilters(
|
||||||
|
rootFolder,
|
||||||
|
parentFolder,
|
||||||
|
folder,
|
||||||
|
added
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Set the count type in the folderChange listener
|
// Set the count type in the folderChange listener
|
||||||
@@ -78,17 +84,48 @@ SysTrayX.Messaging = {
|
|||||||
|
|
||||||
// Set the filters in the folderChange listener
|
// Set the filters in the folderChange listener
|
||||||
browser.folderChange.setFilters(SysTrayX.Messaging.filters);
|
browser.folderChange.setFilters(SysTrayX.Messaging.filters);
|
||||||
|
} else {
|
||||||
// Try to catch the window state
|
browser.folders.onCreated.addListener(
|
||||||
browser.windows.onFocusChanged.addListener(SysTrayX.Window.focusChanged);
|
SysTrayX.Messaging.listenerFolderCreated
|
||||||
|
);
|
||||||
|
browser.folders.onRenamed.addListener(
|
||||||
|
SysTrayX.Messaging.listenerFolderRenamed
|
||||||
|
);
|
||||||
|
browser.folders.onDeleted.addListener(
|
||||||
|
SysTrayX.Messaging.listenerFolderDeleted
|
||||||
|
);
|
||||||
|
|
||||||
// Test new API from TB91
|
// Test new API from TB91
|
||||||
browser.folders.onFolderInfoChanged.addListener(
|
browser.folders.onFolderInfoChanged.addListener(
|
||||||
SysTrayX.Messaging.listenerTest
|
SysTrayX.Messaging.listenerFolderInfoChanged
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to catch the window state
|
||||||
|
browser.windows.onFocusChanged.addListener(SysTrayX.Window.focusChanged);
|
||||||
},
|
},
|
||||||
|
|
||||||
listenerTest: function (folder, folderInfo) {
|
listenerFolderCreated: function (createdFolder) {
|
||||||
|
console.debug("Folder created: " + JSON.stringify(createdFolder));
|
||||||
|
|
||||||
|
const found = isParentFilteredFolder(createdFolder);
|
||||||
|
if (found) {
|
||||||
|
addFolderToFilters(createdFolder);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
listenerFolderRenamed: function (originalFolder, renameFolder) {
|
||||||
|
console.debug("Folder renamed from: " + JSON.stringify(originalFolder));
|
||||||
|
console.debug("Folder renamed to: " + JSON.stringify(renameFolder));
|
||||||
|
},
|
||||||
|
|
||||||
|
listenerFolderDeleted: function (deletedFolder) {
|
||||||
|
console.debug("Folder deleted: " + JSON.stringify(deletedFolder));
|
||||||
|
|
||||||
|
deleteFilteredFolder(deletedFolder);
|
||||||
|
},
|
||||||
|
|
||||||
|
listenerFolderInfoChanged: function (folder, folderInfo) {
|
||||||
console.debug("Folder: " + JSON.stringify(folder));
|
console.debug("Folder: " + JSON.stringify(folder));
|
||||||
console.debug("FolderInfo: " + JSON.stringify(folderInfo));
|
console.debug("FolderInfo: " + JSON.stringify(folderInfo));
|
||||||
|
|
||||||
@@ -155,7 +192,11 @@ SysTrayX.Messaging = {
|
|||||||
if ("filters" in changes && changes["filters"].newValue) {
|
if ("filters" in changes && changes["filters"].newValue) {
|
||||||
SysTrayX.Messaging.filters = changes["filters"].newValue;
|
SysTrayX.Messaging.filters = changes["filters"].newValue;
|
||||||
|
|
||||||
|
if (SysTrayX.browserInfo.majorVersion < 91) {
|
||||||
browser.folderChange.setFilters(SysTrayX.Messaging.filters);
|
browser.folderChange.setFilters(SysTrayX.Messaging.filters);
|
||||||
|
} else {
|
||||||
|
console.debug("StorageChanged filters not available");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("closeType" in changes && changes["closeType"].newValue) {
|
if ("closeType" in changes && changes["closeType"].newValue) {
|
||||||
@@ -177,7 +218,11 @@ SysTrayX.Messaging = {
|
|||||||
if ("countType" in changes && changes["countType"].newValue) {
|
if ("countType" in changes && changes["countType"].newValue) {
|
||||||
SysTrayX.Messaging.countType = changes["countType"].newValue;
|
SysTrayX.Messaging.countType = changes["countType"].newValue;
|
||||||
|
|
||||||
|
if (SysTrayX.browserInfo.majorVersion < 91) {
|
||||||
browser.folderChange.setCountType(Number(SysTrayX.Messaging.countType));
|
browser.folderChange.setCountType(Number(SysTrayX.Messaging.countType));
|
||||||
|
} else {
|
||||||
|
console.debug("StorageChanged counttype not available");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("addonprefchanged" in changes && changes["addonprefchanged"].newValue) {
|
if ("addonprefchanged" in changes && changes["addonprefchanged"].newValue) {
|
||||||
|
|||||||
@@ -460,9 +460,9 @@ async function getFilters() {
|
|||||||
|
|
||||||
console.debug("Checked filters: " + JSON.stringify(newFilters));
|
console.debug("Checked filters: " + JSON.stringify(newFilters));
|
||||||
|
|
||||||
// return newFilters;
|
// return newFilters;
|
||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onFiltersError() {
|
function onFiltersError() {
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -503,3 +503,79 @@ async function getCloseType() {
|
|||||||
const getCloseType = browser.storage.sync.get("closeType");
|
const getCloseType = browser.storage.sync.get("closeType");
|
||||||
return await getCloseType.then(getCloseTypeCb, onCloseTypeError);
|
return await getCloseType.then(getCloseTypeCb, onCloseTypeError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper funcs for TB91 and later folder handling
|
||||||
|
|
||||||
|
// Check if a folder is in the filter list
|
||||||
|
function isFilteredFolder(folder) {
|
||||||
|
return (
|
||||||
|
SysTrayX.Messaging.filters.filter(
|
||||||
|
(filter) =>
|
||||||
|
filter.folder.accountId === folder.accountId &&
|
||||||
|
(filter.folder.path === folder.path ||
|
||||||
|
filter.folder.path.toUpperCase() === folder.path)
|
||||||
|
).length !== 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the parent folder of a folder is in the filter list
|
||||||
|
function isParentFilteredFolder(folder) {
|
||||||
|
const parentPath = folder.path.substring(0, folder.path.lastIndexOf("/"));
|
||||||
|
|
||||||
|
return (
|
||||||
|
SysTrayX.Messaging.filters.filter(
|
||||||
|
(filter) =>
|
||||||
|
filter.folder.accountId === folder.accountId &&
|
||||||
|
(filter.folder.path === parentPath ||
|
||||||
|
filter.folder.path.toUpperCase() === parentPath)
|
||||||
|
).length !== 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete a folder from the filter list
|
||||||
|
function deleteFilteredFolder(deleteFolder) {
|
||||||
|
const newFilters = SysTrayX.Messaging.filters.filter(
|
||||||
|
(filter) =>
|
||||||
|
!(
|
||||||
|
filter.folder.accountId === deleteFolder.accountId &&
|
||||||
|
(filter.folder.path === deleteFolder.path ||
|
||||||
|
filter.folder.path.toUpperCase() === deleteFolder.path)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Store the new filters
|
||||||
|
browser.storage.sync.set({
|
||||||
|
filters: newFilters,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the account name from an id
|
||||||
|
function getAccountName(id) {
|
||||||
|
const account = SysTrayX.Messaging.accounts.filter(
|
||||||
|
(account) => account.id === id
|
||||||
|
)[0];
|
||||||
|
|
||||||
|
return account.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a folder to the filter list
|
||||||
|
function addFolderToFilters(newFolder) {
|
||||||
|
const folder = {
|
||||||
|
...newFolder,
|
||||||
|
accountName: getAccountName(newFolder.accountId),
|
||||||
|
version: SysTrayX.version,
|
||||||
|
};
|
||||||
|
|
||||||
|
const filter = {
|
||||||
|
unread: true,
|
||||||
|
folder: folder,
|
||||||
|
};
|
||||||
|
|
||||||
|
const newFilters = SysTrayX.Messaging.filters;
|
||||||
|
newFilters.push(filter);
|
||||||
|
|
||||||
|
// Store the new filters
|
||||||
|
browser.storage.sync.set({
|
||||||
|
filters: newFilters,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user