Use JavaScript Optional chaining

This commit is contained in:
the-djmaze 2022-09-02 11:52:07 +02:00
parent d9bc435e2c
commit 732b6eb641
55 changed files with 169 additions and 199 deletions

View file

@ -114,9 +114,9 @@ export class LoginUserView extends AbstractViewLogin {
if (Notification.InvalidInputArgument == iError) {
iError = Notification.AuthError;
}
this.submitError(getNotification(iError, (oData ? oData.ErrorMessage : ''),
this.submitError(getNotification(iError, oData?.ErrorMessage,
Notification.UnknownNotification));
this.submitErrorAdditional((oData && oData.ErrorMessageAdditional) || '');
this.submitErrorAdditional(oData?.ErrorMessageAdditional);
} else {
rl.setData(oData.Result);
}

View file

@ -82,7 +82,7 @@ export class MailFolderList extends AbstractViewLeft {
}
el = eqs(event, 'a');
if (el && el.matches('.selectable')) {
if (el?.matches('.selectable')) {
event.preventDefault();
const folder = ko.dataFor(el);
if (folder) {
@ -170,10 +170,10 @@ export class MailFolderList extends AbstractViewLeft {
AppUserStore.focusedState.subscribe(value => {
let el = qs('li a.focused');
el && el.classList.remove('focused');
el?.classList.remove('focused');
if (Scope.FolderList === value) {
el = qs('li a.selected');
el && el.classList.add('focused');
el?.classList.add('focused');
}
});
}

View file

@ -210,7 +210,7 @@ export class MailMessageList extends AbstractViewRight {
const sFolder = e.detail.Folder, iUid = e.detail.Uid;
const message = MessagelistUserStore.find(
item => item && sFolder === item.folder && iUid == item.uid
item => sFolder === item?.folder && iUid == item?.uid
);
if ('INBOX' === sFolder) {
@ -326,7 +326,7 @@ export class MailMessageList extends AbstractViewRight {
moveNewCommand(vm, event) {
if (this.newMoveToFolder && this.mobileCheckedStateShow()) {
if (vm && event && event.preventDefault) {
if (vm && event?.preventDefault) {
event.preventDefault();
event.stopPropagation();
}
@ -428,7 +428,7 @@ export class MailMessageList extends AbstractViewRight {
getDragData(event) {
const item = ko.dataFor(doc.elementFromPoint(event.clientX, event.clientY));
item && item.checked && item.checked(true);
item?.checked?.(true);
const uids = MessagelistUserStore.listCheckedOrSelectedUidsWithSubMails();
item && !uids.includes(item.uid) && uids.push(item.uid);
return uids.length ? {
@ -571,7 +571,7 @@ export class MailMessageList extends AbstractViewRight {
}
gotoThread(message) {
if (message && 0 < message.threadsLen()) {
if (0 < message?.threadsLen()) {
MessagelistUserStore.pageBeforeThread(MessagelistUserStore.page());
hasher.setHash(
@ -718,7 +718,7 @@ export class MailMessageList extends AbstractViewRight {
registerShortcut('t', '', [Scope.MessageList], () => {
let message = MessagelistUserStore.selectedMessage() || MessagelistUserStore.focusedMessage();
if (message && 0 < message.threadsLen()) {
if (0 < message?.threadsLen()) {
this.gotoThread(message);
}
return false;

View file

@ -134,8 +134,8 @@ export class MailMessageView extends AbstractViewRight {
allowAttachmentControls: () => arrayLength(attachmentsActions) && SettingsCapa('AttachmentsActions'),
downloadAsZipAllowed: () => this.attachmentsActions.includes('zip')
&& (currentMessage() ? currentMessage().attachments : [])
.filter(item => item && !item.isLinked() && item.checked() && item.download)
&& (currentMessage()?.attachments || [])
.filter(item => item?.download && !item?.isLinked() && item?.checked())
.length,
tagsAllowed: () => FolderUserStore.currentFolder() ? FolderUserStore.currentFolder().tagsAllowed() : false,
@ -286,7 +286,7 @@ export class MailMessageView extends AbstractViewRight {
el = eqs(event, '.attachmentsPlace .attachmentItem .attachmentNameParent');
if (el) {
const attachment = ko.dataFor(el);
if (attachment && attachment.linkDownload()) {
if (attachment?.linkDownload()) {
if ('message/rfc822' == attachment.mimeType) {
// TODO
rl.fetch(attachment.linkDownload()).then(response => {
@ -393,7 +393,7 @@ export class MailMessageView extends AbstractViewRight {
// toggle message blockquotes
registerShortcut('b', '', [Scope.MessageList, Scope.MessageView], () => {
const message = currentMessage();
if (message && message.body) {
if (message?.body) {
message.body.querySelectorAll('.rlBlockquoteSwitcher').forEach(node => node.click());
return false;
}
@ -411,7 +411,7 @@ export class MailMessageView extends AbstractViewRight {
// print
addShortcut('p,printscreen', 'meta', [Scope.MessageView, Scope.MessageList], () => {
currentMessage() && currentMessage().printMessage();
currentMessage()?.printMessage();
return false;
});
@ -510,7 +510,7 @@ export class MailMessageView extends AbstractViewRight {
downloadAsZip() {
const hashes = (currentMessage() ? currentMessage().attachments : [])
.map(item => (item && !item.isLinked() && item.checked() ? item.download : ''))
.map(item => item?.checked() && !item?.isLinked() ? item.download : '')
.filter(v => v);
if (hashes.length) {
Remote.post('AttachmentsActions', this.downloadAsZipLoading, {
@ -518,7 +518,7 @@ export class MailMessageView extends AbstractViewRight {
Hashes: hashes
})
.then(result => {
let hash = result && result.Result && result.Result.FileHash;
let hash = result?.Result?.FileHash;
if (hash) {
download(attachmentDownload(hash), hash+'.zip');
} else {
@ -577,7 +577,7 @@ export class MailMessageView extends AbstractViewRight {
if (result.data) {
MimeToMessage(result.data, oMessage);
oMessage.html() ? oMessage.viewHtml() : oMessage.viewPlain();
if (result.signatures && result.signatures.length) {
if (result.signatures?.length) {
oMessage.pgpSigned(true);
oMessage.pgpVerified({
signatures: result.signatures,
@ -596,7 +596,7 @@ export class MailMessageView extends AbstractViewRight {
oMessage.pgpVerified(result);
}
/*
if (result && result.success) {
if (result?.success) {
i18n('OPENPGP/GOOD_SIGNATURE', {
USER: validKey.user + ' (' + validKey.id + ')'
});
@ -604,7 +604,7 @@ export class MailMessageView extends AbstractViewRight {
} else {
const keyIds = arrayLength(signingKeyIds) ? signingKeyIds : null,
additional = keyIds
? keyIds.map(item => (item && item.toHex ? item.toHex() : null)).filter(v => v).join(', ')
? keyIds.map(item => item?.toHex?.()).filter(v => v).join(', ')
: '';
i18n('OPENPGP/ERROR', {

View file

@ -52,7 +52,7 @@ export class SystemDropDownUserView extends AbstractViewRight {
}
accountClick(account, event) {
let email = account && account.email;
let email = account?.email;
if (email && 0 === event.button && AccountUserStore.email() != email) {
AccountUserStore.loading(true);
event.preventDefault();