Improved handling of visible folders

This commit is contained in:
the-djmaze 2024-02-11 15:03:19 +01:00
parent 7ca5991041
commit 6c144b5a28
3 changed files with 9 additions and 8 deletions

View file

@ -254,6 +254,10 @@ export class FolderCollectionModel extends AbstractCollectionModel
return result; return result;
} }
visible() {
return this.filter(folder => folder.visible());
}
storeIt() { storeIt() {
FolderUserStore.displaySpecSetting(Settings.app('folderSpecLimit') < this.CountRec); FolderUserStore.displaySpecSetting(Settings.app('folderSpecLimit') < this.CountRec);
@ -387,6 +391,7 @@ export class FolderModel extends AbstractModel {
// isSubscribed: () => this.attributes().includes('\\subscribed'), // isSubscribed: () => this.attributes().includes('\\subscribed'),
hasVisibleSubfolders: () => !!this.subFolders().find(folder => folder.visible()), hasVisibleSubfolders: () => !!this.subFolders().find(folder => folder.visible()),
visibleSubfolders: () => this.subFolders().visible(),
hasSubscriptions: () => this.isSubscribed() | !!this.subFolders().find( hasSubscriptions: () => this.isSubscribed() | !!this.subFolders().find(
oFolder => { oFolder => {

View file

@ -43,10 +43,8 @@ export class MailFolderList extends AbstractViewLeft {
foldersFilterVisible: () => 20 < FolderUserStore.folderList().CountRec, foldersFilterVisible: () => 20 < FolderUserStore.folderList().CountRec,
folderListVisible: () => { folderListVisible: () => {
let result = FolderUserStore.folderList().filter(folder => folder.visible()); let result = FolderUserStore.folderList().visible();
// https://github.com/the-djmaze/snappymail/issues/1427 return 1 === result.length && result[0].isInbox() ? result[0].visibleSubfolders() : result;
// result.sort((a, b) => a.unreadEmails ? (b.unreadEmails ? 0 : -1) : (b.unreadEmails ? 1 : 0));
return 1 === result.length && result[0].isInbox() ? result[0].subFolders() : result;
} }
}); });
} }

View file

@ -1,4 +1,3 @@
<!-- ko if: visible -->
<li> <li>
<a data-bind="dropmessages: $data, <a data-bind="dropmessages: $data,
css: { 'selected': selected() && !isSystemFolder(), 'system': isSystemFolder, 'selectable': canBeSelected, 'unread-sub': hasSubscribedUnreadMessagesSubfolders, 'anim-action-class': actionBlink }, css: { 'selected': selected() && !isSystemFolder(), 'system': isSystemFolder, 'selectable': canBeSelected, 'unread-sub': hasSubscribedUnreadMessagesSubfolders, 'anim-action-class': actionBlink },
@ -6,8 +5,7 @@
<i data-bind="css: collapsedCss()"></i> <i data-bind="css: collapsedCss()"></i>
<!-- ko text: name --><!-- /ko --> <!-- ko text: name --><!-- /ko -->
</a> </a>
<!-- ko if: subFolders().length --> <!-- ko if: hasVisibleSubfolders -->
<ul data-bind="template: { name: 'MailFolderListItem', foreach: subFolders }, css: { 'collapsed': collapsed() }"></ul> <ul data-bind="template: { name: 'MailFolderListItem', foreach: visibleSubfolders }, css: { 'collapsed': collapsed() }"></ul>
<!-- /ko --> <!-- /ko -->
</li> </li>
<!-- /ko -->