diff --git a/dev/Sieve/Model/Abstract.js b/dev/Sieve/Model/Abstract.js index 4df08e039..b34858a7d 100644 --- a/dev/Sieve/Model/Abstract.js +++ b/dev/Sieve/Model/Abstract.js @@ -46,14 +46,13 @@ export class AbstractModel { onDestroy() { /** dispose ko subscribables */ this.disposables.forEach(disposable => { - disposable && typeof disposable.dispose === 'function' && disposable.dispose(); + typeof disposable?.dispose === 'function' && disposable.dispose(); }); /** clear object entries */ // forEachObjectEntry(this, (key, value) => { forEachObjectValue(this, value => { /** clear CollectionModel */ - let arr = ko.isObservableArray(value) ? value() : value; - arr && arr.onDestroy && arr.onDestroy(); + (ko.isObservableArray(value) ? value() : value)?.onDestroy?.(); /** destroy ko.observable/ko.computed? */ // dispose(value); /** clear object value */ @@ -78,7 +77,7 @@ export class AbstractModel { */ static reviveFromJson(json) { let obj = this.validJson(json) ? new this() : null; - obj && obj.revivePropertiesFromJson(json); + obj?.revivePropertiesFromJson(json); return obj; } diff --git a/dev/Sieve/Model/Filter.js b/dev/Sieve/Model/Filter.js index 220532fe7..e96bf717f 100644 --- a/dev/Sieve/Model/Filter.js +++ b/dev/Sieve/Model/Filter.js @@ -65,7 +65,7 @@ export class FilterModel extends AbstractModel { const fGetRealFolderName = folderFullName => { // const folder = getFolderFromCacheList(folderFullName); -// return folder ? folder.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullName; +// return folder?.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullName; return folderFullName; }; @@ -222,9 +222,9 @@ export class FilterModel extends AbstractModel { static reviveFromJson(json) { const filter = super.reviveFromJson(json); if (filter) { - filter.id = filter.id ? '' + filter.id : ''; + filter.id = '' + (filter.id || ''); filter.conditions( - json.Conditions ? json.Conditions.map(aData => FilterConditionModel.reviveFromJson(aData)).filter(v => v) : [] + (json.Conditions || []).map(aData => FilterConditionModel.reviveFromJson(aData)).filter(v => v) ); filter.actionKeep(0 != json.Keep); filter.actionNoStop(0 == json.Stop); diff --git a/dev/Sieve/Utils.js b/dev/Sieve/Utils.js index 4002b9e15..7544db465 100644 --- a/dev/Sieve/Utils.js +++ b/dev/Sieve/Utils.js @@ -12,7 +12,7 @@ export const data = ko.observableArray(data); data.subscribe(changes => changes.forEach(item => - 'deleted' === item.status && null == item.moved && item.value.onDestroy && item.value.onDestroy() + 'deleted' === item.status && null == item.moved && item.value.onDestroy?.() ) , data, 'arrayChange'); return data; @@ -22,7 +22,7 @@ export const koComputable = fn => ko.computed(fn, {'pure':true}), arrayToString = (arr, separator) => - arr.map(item => item.toString ? item.toString() : item).join(separator), + arr.map(item => item.toString?.() || item).join(separator), /* getNotificationMessage = code => { let key = getKeyByValue(Notification, code); diff --git a/dev/Sieve/View/Filter.js b/dev/Sieve/View/Filter.js index 6c623a2e9..cf5a2a03a 100644 --- a/dev/Sieve/View/Filter.js +++ b/dev/Sieve/View/Filter.js @@ -87,7 +87,7 @@ export class FilterPopupView extends rl.pluginPopupView { folderListOptionsBuilder( [rl.settings.get('SieveAllowFileintoInbox') ? '' : 'INBOX'], [['', '']], - item => item ? item.localName() : '' + item => item?.localName() || '' ) ); diff --git a/dev/Sieve/View/Script.js b/dev/Sieve/View/Script.js index 20dd4a325..9cd1a0663 100644 --- a/dev/Sieve/View/Script.js +++ b/dev/Sieve/View/Script.js @@ -80,7 +80,7 @@ export class SieveScriptPopupView extends rl.pluginPopupView { if (iError) { self.saveError(true); - self.errorText((data && data.ErrorMessageAdditional) || getNotification(iError)); + self.errorText(data?.ErrorMessageAdditional || getNotification(iError)); } else { script.exists() || scripts.push(script); script.exists(true); diff --git a/dev/sieve.js b/dev/sieve.js index b64bcb094..fcae436f7 100644 --- a/dev/sieve.js +++ b/dev/sieve.js @@ -58,7 +58,7 @@ window.Sieve = { Remote.request('FiltersScriptDelete', (iError, data) => { if (iError) { - setError((data && data.ErrorMessageAdditional) || getNotification(iError)); + setError(data?.ErrorMessageAdditional || getNotification(iError)); } else { scripts.remove(script); } @@ -73,7 +73,7 @@ window.Sieve = { Remote.request('FiltersScriptActivate', (iError, data) => { if (iError) { - setError((data && data.ErrorMessageAdditional) || iError) + setError(data?.ErrorMessageAdditional || iError) } else { scripts.forEach(script => script.active(script.name() === name)); }