mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 15:45:55 +08:00
Bugfix and simplify broken folderListOptionsBuilder() due to changes for #112
This commit is contained in:
parent
ee7d06fbfd
commit
e0adf7accd
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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() : ''
|
||||
|
|
|
@ -24,7 +24,6 @@ class FolderCreatePopupView extends AbstractViewPopup {
|
|||
|
||||
this.parentFolderSelectList = ko.computed(() =>
|
||||
folderListOptionsBuilder(
|
||||
[],
|
||||
[],
|
||||
[['', '']],
|
||||
oItem =>
|
||||
|
|
|
@ -29,7 +29,6 @@ class FolderSystemPopupView extends AbstractViewPopup {
|
|||
|
||||
this.folderSelectList = ko.computed(() =>
|
||||
folderListOptionsBuilder(
|
||||
[],
|
||||
FolderUserStore.folderListSystemNames(),
|
||||
[
|
||||
['', this.sChooseOnText],
|
||||
|
|
|
@ -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() : ''
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue