Some array.slice to array.startsWith and cleanup some JavaScript code

This commit is contained in:
the-djmaze 2022-10-26 16:38:39 +02:00
parent 3903a37b64
commit ffcc86805a
8 changed files with 83 additions and 146 deletions

View file

@ -291,7 +291,7 @@ export const
if ('IMG' === name) {
oElement.loading = 'lazy';
let attachment;
if ('cid:' === value.slice(0, 4))
if (value.startsWith('cid:'))
{
value = value.slice(4);
setAttribute('data-x-src-cid', value);
@ -331,7 +331,7 @@ export const
result.hasExternals = true;
oElement.alt || (oElement.alt = value.replace(/^.+\/([^/?]+).*$/, '$1').slice(-20));
}
else if ('data:image/' === value.slice(0, 11))
else if (value.startsWith('data:image/'))
{
oElement.src = value;
}
@ -382,7 +382,7 @@ export const
oStyle[property] = null;
found = found[1].replace(/^["'\s]+|["'\s]+$/g, '');
let lowerUrl = found.toLowerCase();
if ('cid:' === lowerUrl.slice(0, 4)) {
if (lowerUrl.startsWith('cid:')) {
const attachment = findAttachmentByCid(found);
if (attachment?.linkPreview && name) {
oStyle[property] = "url('" + attachment.linkPreview() + "')";
@ -392,7 +392,7 @@ export const
} else if (httpre.test(lowerUrl)) {
result.hasExternals = true;
urls_remote.push([property, found]);
} else if ('data:image/' === lowerUrl.slice(0, 11)) {
} else if (lowerUrl.startsWith('data:image/')) {
oStyle[property] = value;
} else {
urls_broken.push([property, found]);
@ -717,11 +717,9 @@ export class HtmlEditor {
}
setHtmlOrPlain(text) {
if (':HTML:' === text.slice(0, 6)) {
this.setHtml(text.slice(6));
} else {
this.setPlain(text);
}
text.startsWith(':HTML:')
? this.setHtml(text.slice(6))
: this.setPlain(text);
}
setData(mode, data) {

View file

@ -76,7 +76,7 @@ export const
*/
themePreviewLink = theme => {
let prefix = VERSION_PREFIX;
if ('@custom' === theme.slice(-7)) {
if (theme.endsWith('@custom')) {
theme = theme.slice(0, theme.length - 7).trim();
prefix = '';
}

View file

@ -177,7 +177,7 @@ export class AttachmentModel extends AbstractModel {
const localEvent = event.originalEvent || event;
if (attachment && localEvent && localEvent.dataTransfer && localEvent.dataTransfer.setData) {
let link = this.linkDownload();
if ('http' !== link.slice(0, 4)) {
if (!link.startsWith('http')) {
link = location.protocol + '//' + location.host + location.pathname + link;
}
localEvent.dataTransfer.setData('DownloadURL', this.mimeType + ':' + this.fileName + ':' + link);

View file

@ -36,7 +36,7 @@ ThemeStore.fontSansSerif.subscribe(value => {
if (null != value) {
let cl = elementById('rl-app').classList;
cl.forEach(name => {
if ('font' === name.slice(0,4) && !/font(Serif|Mono)/.test(name)) {
if (name.startsWith('font') && !/font(Serif|Mono)/.test(name)) {
cl.remove(name);
}
});
@ -46,22 +46,14 @@ ThemeStore.fontSansSerif.subscribe(value => {
ThemeStore.fontSerif.subscribe(value => {
if (null != value) {
let cl = elementById('rl-app').classList;
cl.forEach(name => {
if ('fontSerif' === name.slice(0,9)) {
cl.remove(name);
}
});
cl.forEach(name => name.startsWith('fontSerif') && cl.remove(name));
value && cl.add('fontSerif'+value);
}
});
ThemeStore.fontMono.subscribe(value => {
if (null != value) {
let cl = elementById('rl-app').classList;
cl.forEach(name => {
if ('fontMono' === name.slice(0,9)) {
cl.remove(name);
}
});
cl.forEach(name => name.startsWith('fontMono') && cl.remove(name));
value && cl.add('fontMono'+value);
}
});

View file

@ -686,7 +686,7 @@ export class ComposePopupView extends AbstractViewPopup {
if (identity && ComposeType.Draft !== msgComposeType && ComposeType.EditAsNew !== msgComposeType) {
this.editor(editor => {
let signature = identity.signature() || '',
isHtml = ':HTML:' === signature.slice(0, 6),
isHtml = signature.startsWith(':HTML:'),
fromLine = oLastMessage ? emailArrayToStringLineHelper(oLastMessage.from, true) : '';
if (fromLine) {
signature = signature.replace(/{{FROM-FULL}}/g, fromLine);

View file

@ -34,7 +34,7 @@ export class FolderCreatePopupView extends AbstractViewPopup {
oItem =>
oItem ? (oItem.isSystemFolder() ? oItem.name() + ' ' + oItem.manageFolderSystemName() : oItem.name()) : '',
FolderUserStore.namespace
? item => FolderUserStore.namespace !== item.fullName.slice(0, FolderUserStore.namespace.length)
? item => !item.fullName.startsWith(FolderUserStore.namespace)
: null,
true
)

View file

@ -12,7 +12,6 @@ import { leftPanelDisabled, moveAction,
import { computedPaginatorHelper, showMessageComposer, populateMessageBody } from 'Common/UtilsUser';
import { FileInfo } from 'Common/File';
import { moveMessagesToFolder } from 'Common/Folders';
import { isFullscreen, toggleFullscreen } from 'Common/Fullscreen';
import { mailBox, serverRequest } from 'Common/Links';
@ -172,7 +171,49 @@ export class MailMessageList extends AbstractViewRight {
this.selector.on('AutoSelect', () => MessagelistUserStore.canAutoSelect());
this.selector.on('UpOrDown', v => this.goToUpOrDown(v));
this.selector.on('UpOrDown', up => {
if (MessagelistUserStore.hasChecked()) {
return false;
}
clearTimeout(iGoToUpOrDownTimeout);
iGoToUpOrDownTimeout = setTimeout(() => {
let prev, next, temp, current;
this.messageListPaginator().find(item => {
if (item) {
if (current) {
next = item;
}
if (item.current) {
current = item;
prev = temp;
}
if (next) {
return true;
}
temp = item;
}
return false;
});
if (up ? prev : next) {
if (SettingsUserStore.usePreviewPane() || MessageUserStore.message()) {
this.selector.iSelectNextHelper = up ? -1 : 1;
} else {
this.selector.iFocusedNextHelper = up ? -1 : 1;
}
this.selector.unselect();
this.gotoPage(up ? prev : next);
}
}, 350);
return true;
});
addEventListener('mailbox.message-list.selector.go-down',
e => this.selector.newSelectPosition('ArrowDown', false, e.detail)
@ -232,15 +273,13 @@ export class MailMessageList extends AbstractViewRight {
}
clear() {
if (SettingsCapa('DangerousActions')) {
showScreenPopup(FolderClearPopupView, [FolderUserStore.currentFolder()]);
}
SettingsCapa('DangerousActions')
&& showScreenPopup(FolderClearPopupView, [FolderUserStore.currentFolder()]);
}
reload() {
if (!MessagelistUserStore.isLoading()) {
MessagelistUserStore.reload(false, true);
}
MessagelistUserStore.isLoading()
|| MessagelistUserStore.reload(false, true);
}
forwardCommand() {
@ -251,9 +290,8 @@ export class MailMessageList extends AbstractViewRight {
}
deleteWithoutMoveCommand() {
if (SettingsCapa('DangerousActions')) {
moveMessagesToFolderType(FolderType.Trash, true);
}
SettingsCapa('DangerousActions')
&& moveMessagesToFolderType(FolderType.Trash, true);
}
deleteCommand() {
@ -289,50 +327,6 @@ export class MailMessageList extends AbstractViewRight {
showMessageComposer();
}
goToUpOrDown(up) {
if (MessagelistUserStore.hasChecked()) {
return false;
}
clearTimeout(iGoToUpOrDownTimeout);
iGoToUpOrDownTimeout = setTimeout(() => {
let prev, next, temp, current;
this.messageListPaginator().find(item => {
if (item) {
if (current) {
next = item;
}
if (item.current) {
current = item;
prev = temp;
}
if (next) {
return true;
}
temp = item;
}
return false;
});
if (up ? prev : next) {
if (SettingsUserStore.usePreviewPane() || MessageUserStore.message()) {
this.selector.iSelectNextHelper = up ? -1 : 1;
} else {
this.selector.iFocusedNextHelper = up ? -1 : 1;
}
this.selector.unselect();
this.gotoPage(up ? prev : next);
}
}, 350);
return true;
}
cancelSearch() {
MessagelistUserStore.mainSearch('');
this.focusSearch(false);
@ -349,24 +343,6 @@ export class MailMessageList extends AbstractViewRight {
);
}
/**
* @param {string} sToFolderFullName
* @param {boolean} bCopy
* @returns {boolean}
*/
moveSelectedMessagesToFolder(sToFolderFullName, bCopy) {
if (MessagelistUserStore.hasCheckedOrSelected()) {
moveMessagesToFolder(
FolderUserStore.currentFolderFullName(),
MessagelistUserStore.listCheckedOrSelectedUidsWithSubMails(),
sToFolderFullName,
bCopy
);
}
return false;
}
listSetSeen() {
listAction(
FolderUserStore.currentFolderFullName(),
@ -437,49 +413,9 @@ export class MailMessageList extends AbstractViewRight {
);
}
flagMessages(currentMessage) {
const checked = MessagelistUserStore.listCheckedOrSelected();
if (currentMessage) {
const checkedUids = checked.map(message => message.uid);
if (checkedUids.includes(currentMessage.uid)) {
listAction(
currentMessage.folder,
currentMessage.isFlagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag,
checked
);
} else {
listAction(
currentMessage.folder,
currentMessage.isFlagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag,
[currentMessage]
);
}
}
}
flagMessagesFast(bFlag) {
const checked = MessagelistUserStore.listCheckedOrSelected();
if (checked.length) {
if (undefined === bFlag) {
const flagged = checked.filter(message => message.isFlagged());
listAction(
checked[0].folder,
checked.length === flagged.length ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag,
checked
);
} else {
listAction(
checked[0].folder,
!bFlag ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag,
checked
);
}
}
}
seenMessagesFast(seen) {
const checked = MessagelistUserStore.listCheckedOrSelected();
if (checked.length && null != seen) {
if (checked.length) {
listAction(
checked[0].folder,
seen ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen,
@ -500,7 +436,7 @@ export class MailMessageList extends AbstractViewRight {
}
gotoThread(message) {
if (0 < message?.threadsLen()) {
if (message?.threadsLen()) {
MessagelistUserStore.pageBeforeThread(MessagelistUserStore.page());
hasher.setHash(
@ -549,7 +485,15 @@ export class MailMessageList extends AbstractViewRight {
eqs(event, '.checkboxCheckAll') && this.checkAll(!this.checkAll());
el = eqs(event, '.flagParent');
el && this.flagMessages(ko.dataFor(el));
let currentMessage = el && ko.dataFor(el);
if (currentMessage) {
const checked = MessagelistUserStore.listCheckedOrSelected();
listAction(
currentMessage.folder,
currentMessage.isFlagged() ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag,
checked.find(message => message.uid == currentMessage.uid) ? checked : [currentMessage]
);
}
el = eqs(event, '.threads-len');
el && this.gotoThread(ko.dataFor(el));
@ -642,7 +586,14 @@ export class MailMessageList extends AbstractViewRight {
// important - star/flag messages
registerShortcut('i', '', [Scope.MessageList, Scope.MessageView], () => {
this.flagMessagesFast();
const checked = MessagelistUserStore.listCheckedOrSelected();
if (checked.length) {
listAction(
checked[0].folder,
checked.every(message => message.isFlagged()) ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag,
checked
);
}
return false;
});
@ -715,7 +666,7 @@ export class MailMessageList extends AbstractViewRight {
addShortcut('arrowleft', 'meta', Scope.MessageView, ()=>false);
addShortcut('arrowright', 'meta', Scope.MessageView, ()=>false);
addShortcut('f', 'meta', Scope.MessageList, ()=>this.advancedSearchClick());
addShortcut('f', 'meta', Scope.MessageList, this.advancedSearchClick);
}
advancedSearchClick() {

View file

@ -441,10 +441,6 @@ export class MailMessageView extends AbstractViewRight {
return MessagelistUserStore.isDraftFolder() || MessagelistUserStore.isSentFolder();
}
composeClick() {
showMessageComposer();
}
scrollMessageToTop() {
oMessageScrollerDom().scrollTop = (50 < oMessageScrollerDom().scrollTop) ? 50 : 0;
}