mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Sieve: use Optional chaining operator
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
This commit is contained in:
parent
3a1046f215
commit
e1426b484e
6 changed files with 12 additions and 13 deletions
|
|
@ -46,14 +46,13 @@ export class AbstractModel {
|
||||||
onDestroy() {
|
onDestroy() {
|
||||||
/** dispose ko subscribables */
|
/** dispose ko subscribables */
|
||||||
this.disposables.forEach(disposable => {
|
this.disposables.forEach(disposable => {
|
||||||
disposable && typeof disposable.dispose === 'function' && disposable.dispose();
|
typeof disposable?.dispose === 'function' && disposable.dispose();
|
||||||
});
|
});
|
||||||
/** clear object entries */
|
/** clear object entries */
|
||||||
// forEachObjectEntry(this, (key, value) => {
|
// forEachObjectEntry(this, (key, value) => {
|
||||||
forEachObjectValue(this, value => {
|
forEachObjectValue(this, value => {
|
||||||
/** clear CollectionModel */
|
/** clear CollectionModel */
|
||||||
let arr = ko.isObservableArray(value) ? value() : value;
|
(ko.isObservableArray(value) ? value() : value)?.onDestroy?.();
|
||||||
arr && arr.onDestroy && arr.onDestroy();
|
|
||||||
/** destroy ko.observable/ko.computed? */
|
/** destroy ko.observable/ko.computed? */
|
||||||
// dispose(value);
|
// dispose(value);
|
||||||
/** clear object value */
|
/** clear object value */
|
||||||
|
|
@ -78,7 +77,7 @@ export class AbstractModel {
|
||||||
*/
|
*/
|
||||||
static reviveFromJson(json) {
|
static reviveFromJson(json) {
|
||||||
let obj = this.validJson(json) ? new this() : null;
|
let obj = this.validJson(json) ? new this() : null;
|
||||||
obj && obj.revivePropertiesFromJson(json);
|
obj?.revivePropertiesFromJson(json);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ export class FilterModel extends AbstractModel {
|
||||||
|
|
||||||
const fGetRealFolderName = folderFullName => {
|
const fGetRealFolderName = folderFullName => {
|
||||||
// const folder = getFolderFromCacheList(folderFullName);
|
// const folder = getFolderFromCacheList(folderFullName);
|
||||||
// return folder ? folder.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullName;
|
// return folder?.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullName;
|
||||||
return folderFullName;
|
return folderFullName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -222,9 +222,9 @@ export class FilterModel extends AbstractModel {
|
||||||
static reviveFromJson(json) {
|
static reviveFromJson(json) {
|
||||||
const filter = super.reviveFromJson(json);
|
const filter = super.reviveFromJson(json);
|
||||||
if (filter) {
|
if (filter) {
|
||||||
filter.id = filter.id ? '' + filter.id : '';
|
filter.id = '' + (filter.id || '');
|
||||||
filter.conditions(
|
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.actionKeep(0 != json.Keep);
|
||||||
filter.actionNoStop(0 == json.Stop);
|
filter.actionNoStop(0 == json.Stop);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ export const
|
||||||
data = ko.observableArray(data);
|
data = ko.observableArray(data);
|
||||||
data.subscribe(changes =>
|
data.subscribe(changes =>
|
||||||
changes.forEach(item =>
|
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');
|
, data, 'arrayChange');
|
||||||
return data;
|
return data;
|
||||||
|
|
@ -22,7 +22,7 @@ export const
|
||||||
koComputable = fn => ko.computed(fn, {'pure':true}),
|
koComputable = fn => ko.computed(fn, {'pure':true}),
|
||||||
|
|
||||||
arrayToString = (arr, separator) =>
|
arrayToString = (arr, separator) =>
|
||||||
arr.map(item => item.toString ? item.toString() : item).join(separator),
|
arr.map(item => item.toString?.() || item).join(separator),
|
||||||
/*
|
/*
|
||||||
getNotificationMessage = code => {
|
getNotificationMessage = code => {
|
||||||
let key = getKeyByValue(Notification, code);
|
let key = getKeyByValue(Notification, code);
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ export class FilterPopupView extends rl.pluginPopupView {
|
||||||
folderListOptionsBuilder(
|
folderListOptionsBuilder(
|
||||||
[rl.settings.get('SieveAllowFileintoInbox') ? '' : 'INBOX'],
|
[rl.settings.get('SieveAllowFileintoInbox') ? '' : 'INBOX'],
|
||||||
[['', '']],
|
[['', '']],
|
||||||
item => item ? item.localName() : ''
|
item => item?.localName() || ''
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
||||||
|
|
||||||
if (iError) {
|
if (iError) {
|
||||||
self.saveError(true);
|
self.saveError(true);
|
||||||
self.errorText((data && data.ErrorMessageAdditional) || getNotification(iError));
|
self.errorText(data?.ErrorMessageAdditional || getNotification(iError));
|
||||||
} else {
|
} else {
|
||||||
script.exists() || scripts.push(script);
|
script.exists() || scripts.push(script);
|
||||||
script.exists(true);
|
script.exists(true);
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ window.Sieve = {
|
||||||
Remote.request('FiltersScriptDelete',
|
Remote.request('FiltersScriptDelete',
|
||||||
(iError, data) => {
|
(iError, data) => {
|
||||||
if (iError) {
|
if (iError) {
|
||||||
setError((data && data.ErrorMessageAdditional) || getNotification(iError));
|
setError(data?.ErrorMessageAdditional || getNotification(iError));
|
||||||
} else {
|
} else {
|
||||||
scripts.remove(script);
|
scripts.remove(script);
|
||||||
}
|
}
|
||||||
|
|
@ -73,7 +73,7 @@ window.Sieve = {
|
||||||
Remote.request('FiltersScriptActivate',
|
Remote.request('FiltersScriptActivate',
|
||||||
(iError, data) => {
|
(iError, data) => {
|
||||||
if (iError) {
|
if (iError) {
|
||||||
setError((data && data.ErrorMessageAdditional) || iError)
|
setError(data?.ErrorMessageAdditional || iError)
|
||||||
} else {
|
} else {
|
||||||
scripts.forEach(script => script.active(script.name() === name));
|
scripts.forEach(script => script.active(script.name() === name));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue