diff --git a/dev/External/ko.js b/dev/External/ko.js index 6107a3a43..bccc8f86a 100644 --- a/dev/External/ko.js +++ b/dev/External/ko.js @@ -3,15 +3,17 @@ import { doc, createElement } from 'Common/Globals'; import { SaveSettingsStep } from 'Common/Enums'; import { arrayLength, isFunction } from 'Common/Utils'; -const - koValue = value => !ko.isObservable(value) && isFunction(value) ? value() : ko.unwrap(value); - ko.bindingHandlers.tooltipErrorTip = { - init: element => { - doc.addEventListener('click', () => element.removeAttribute('data-rainloopErrorTip')); + init: (element, fValueAccessor) => { + doc.addEventListener('click', () => { + let value = fValueAccessor(); + ko.isObservable(value) && value(''); + element.removeAttribute('data-rainloopErrorTip'); + }); }, update: (element, fValueAccessor) => { - const value = koValue(fValueAccessor()); + let value = ko.unwrap(fValueAccessor()); + value = isFunction(value) ? value() : value; if (value) { setTimeout(() => element.setAttribute('data-rainloopErrorTip', value), 100); } else { diff --git a/dev/Model/FolderCollection.js b/dev/Model/FolderCollection.js index ee8559552..8513e3ce2 100644 --- a/dev/Model/FolderCollection.js +++ b/dev/Model/FolderCollection.js @@ -219,6 +219,7 @@ export class FolderModel extends AbstractModel { deleteAccess: false, nameForEdit: '', + errorMsg: '', privateMessageCountAll: 0, privateMessageCountUnread: 0, diff --git a/dev/Settings/User/Folders.js b/dev/Settings/User/Folders.js index 05ecffd5c..b3a3e5b61 100644 --- a/dev/Settings/User/Folders.js +++ b/dev/Settings/User/Folders.js @@ -121,39 +121,40 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ { } deleteFolder(folderToRemove) { - if ( - folderToRemove && - folderToRemove.canBeDeleted() && - folderToRemove.deleteAccess() && - 0 === folderToRemove.privateMessageCountAll() + if (folderToRemove + && folderToRemove.canBeDeleted() + && folderToRemove.deleteAccess() ) { - folderForDeletion(null); + if (0 < folderToRemove.privateMessageCountAll()) { +// FolderUserStore.folderListError(getNotification(Notification.CantDeleteNonEmptyFolder)); + folderToRemove.errorMsg(getNotification(Notification.CantDeleteNonEmptyFolder)); + } else { + folderForDeletion(null); - if (folderToRemove) { - Remote.abort('Folders').post('FolderDelete', FolderUserStore.foldersDeleting, { - Folder: folderToRemove.fullName - }).then( - () => { -// folderToRemove.flags.push('\\nonexistent'); - folderToRemove.selectable(false); -// folderToRemove.subscribed(false); -// folderToRemove.checkable(false); - if (!folderToRemove.subFolders.length) { - removeFolderFromCacheList(folderToRemove.fullName); - const folder = getFolderFromCacheList(folderToRemove.parentName); - (folder ? folder.subFolders : FolderUserStore.folderList).remove(folderToRemove); + if (folderToRemove) { + Remote.abort('Folders').post('FolderDelete', FolderUserStore.foldersDeleting, { + Folder: folderToRemove.fullName + }).then( + () => { +// folderToRemove.flags.push('\\nonexistent'); + folderToRemove.selectable(false); +// folderToRemove.subscribed(false); +// folderToRemove.checkable(false); + if (!folderToRemove.subFolders.length) { + removeFolderFromCacheList(folderToRemove.fullName); + const folder = getFolderFromCacheList(folderToRemove.parentName); + (folder ? folder.subFolders : FolderUserStore.folderList).remove(folderToRemove); + } + }, + error => { + FolderUserStore.folderListError( + getNotification(error.code, '', Notification.CantDeleteFolder) + + '.\n' + error.message + ); } - }, - error => { - FolderUserStore.folderListError( - getNotification(error.code, '', Notification.CantDeleteFolder) - + '.\n' + error.message - ); - } - ); + ); + } } - } else if (0 < folderToRemove.privateMessageCountAll()) { - FolderUserStore.folderListError(getNotification(Notification.CantDeleteNonEmptyFolder)); } } diff --git a/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html b/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html index 9b785e126..54fb44298 100644 --- a/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html +++ b/snappymail/v/0.0.0/app/templates/Views/User/SettingsFolderItem.html @@ -1,6 +1,8 @@