Bugfix and simplify broken folderListOptionsBuilder() due to changes for #112

This commit is contained in:
djmaze 2021-08-19 21:31:08 +02:00
parent ee7d06fbfd
commit e0adf7accd
6 changed files with 31 additions and 72 deletions

View file

@ -214,7 +214,6 @@ rl.Utils = {
};
/**
* @param {Array} aSystem
* @param {Array=} aDisabled
* @param {Array=} aHeaderLines
* @param {Function=} fDisableCallback
@ -223,7 +222,6 @@ rl.Utils = {
* @returns {Array}
*/
export function folderListOptionsBuilder(
aSystem,
aDisabled,
aHeaderLines,
fRenameCallback,
@ -231,86 +229,51 @@ export function folderListOptionsBuilder(
bNoSelectSelectable,
aList = FolderUserStore.folderList()
) {
let /**
* @type {?FolderModel}
*/
bSep = false,
aResult = [];
// FolderUserStore.folderListSystem()
const sDeepPrefix = '\u00A0\u00A0\u00A0',
const
aResult = [],
sDeepPrefix = '\u00A0\u00A0\u00A0',
// FolderSystemPopupView should always be true
showUnsubscribed = (aSystem.length || bNoSelectSelectable) ? !SettingsUserStore.hideUnsubscribed() : true;
showUnsubscribed = fRenameCallback ? !SettingsUserStore.hideUnsubscribed() : true,
foldersWalk = folders => {
folders.forEach(oItem => {
if (showUnsubscribed || oItem.subscribed() || !oItem.exists || oItem.hasSubscribedSubfolders()) {
aResult.push({
id: oItem.fullNameRaw,
name:
sDeepPrefix.repeat(oItem.deep) +
fRenameCallback(oItem),
system: false,
disabled: !bNoSelectSelectable && (
!oItem.selectable ||
aDisabled.includes(oItem.fullNameRaw) ||
fDisableCallback(oItem))
});
}
if (oItem.subFolders.length) {
foldersWalk(oItem.subFolders());
}
});
};
fDisableCallback = fDisableCallback || (() => false);
fRenameCallback = fRenameCallback || (oItem => oItem.name());
if (!isArray(aDisabled)) {
aDisabled = [];
}
isArray(aDisabled) || (aDisabled = []);
isArray(aHeaderLines) && aHeaderLines.forEach(line =>
aResult.push({
id: line[0],
name: line[1],
system: false,
dividerbar: false,
disabled: false
})
);
bSep = true;
aSystem.forEach(oItem => {
aResult.push({
id: oItem.fullNameRaw,
name: fRenameCallback(oItem),
system: true,
dividerbar: bSep,
disabled:
!oItem.selectable ||
aDisabled.includes(oItem.fullNameRaw) ||
fDisableCallback(oItem)
});
bSep = false;
});
bSep = true;
aList.forEach(oItem => {
/*
if ((oItem.subscribed() || !oItem.exists || bBuildUnvisible)
&& (oItem.selectable || oItem.hasSubscribedSubfolders())
&& (FolderType.User === oItem.type() || !bSystem || oItem.hasSubscribedSubfolders()) {
) {
*/
if (showUnsubscribed || oItem.subscribed() || !oItem.exists || oItem.hasSubscribedSubfolders()) {
aResult.push({
id: oItem.fullNameRaw,
name:
sDeepPrefix.repeat(oItem.deep) +
fRenameCallback(oItem),
system: false,
dividerbar: bSep,
disabled: !bNoSelectSelectable && (
!oItem.selectable ||
aDisabled.includes(oItem.fullNameRaw) ||
fDisableCallback(oItem))
});
bSep = false;
}
if (oItem.subFolders.length) {
aResult = aResult.concat(
folderListOptionsBuilder(
[],
aDisabled,
[],
fDisableCallback,
fRenameCallback,
bNoSelectSelectable,
oItem.subFolders()
)
);
}
});
foldersWalk(aList);
return aResult;
}

View file

@ -29,7 +29,6 @@ class FilterPopupView extends AbstractViewPopup {
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
this.folderSelectList = ko.computed(() =>
folderListOptionsBuilder(
FolderUserStore.folderListSystem(),
[FolderUserStore.sieveAllowFileintoInbox ? '' : 'INBOX'],
[['', '']],
item => item ? item.localName() : ''

View file

@ -24,7 +24,6 @@ class FolderCreatePopupView extends AbstractViewPopup {
this.parentFolderSelectList = ko.computed(() =>
folderListOptionsBuilder(
[],
[],
[['', '']],
oItem =>

View file

@ -29,7 +29,6 @@ class FolderSystemPopupView extends AbstractViewPopup {
this.folderSelectList = ko.computed(() =>
folderListOptionsBuilder(
[],
FolderUserStore.folderListSystemNames(),
[
['', this.sChooseOnText],

View file

@ -80,7 +80,6 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.messageListError = MessageUserStore.listError;
this.folderMenuForMove = ko.computed(() =>
folderListOptionsBuilder(
FolderUserStore.folderListSystem(),
[FolderUserStore.currentFolderFullNameRaw()],
[],
item => item ? item.localName() : ''

View file

@ -18,7 +18,7 @@
<span class="caret"></span>
</a>
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="move-dropdown-id" role="menu" data-bind="foreach: folderMenuForMove">
<li class="e-item" role="presentation" data-bind="css: { 'disabled': disabled, 'dividerbar': dividerbar }, click: function (mdata, oEvent) { if (!disabled) $root.moveSelectedMessagesToFolder(id, oEvent && !!oEvent.ctrlKey); }">
<li class="e-item" role="presentation" data-bind="css: { 'disabled': disabled }, click: function (mdata, oEvent) { if (!disabled) $root.moveSelectedMessagesToFolder(id, oEvent && !!oEvent.ctrlKey); }">
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="text: name"></a>
</li>
</ul>