mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Speedup messagelist hasCheckedOrSelectedLines
This commit is contained in:
parent
57158bd55a
commit
3fa9bc6963
2 changed files with 16 additions and 11 deletions
|
|
@ -44,11 +44,10 @@ const
|
||||||
/*eslint-disable max-len*/
|
/*eslint-disable max-len*/
|
||||||
url = /(^|[\s\n]|\/?>)(https:\/\/[-A-Z0-9+\u0026\u2019#/%?=()~_|!:,.;]*[-A-Z0-9+\u0026#/%=~()_|])/gi,
|
url = /(^|[\s\n]|\/?>)(https:\/\/[-A-Z0-9+\u0026\u2019#/%?=()~_|!:,.;]*[-A-Z0-9+\u0026#/%=~()_|])/gi,
|
||||||
email = /(^|[\s\n]|\/?>)((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x21\x23-\x5b\x5d-\x7f]|\\[\x21\x23-\x5b\x5d-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x21-\x5a\x53-\x7f]|\\[\x21\x23-\x5b\x5d-\x7f])+)\]))/gi,
|
email = /(^|[\s\n]|\/?>)((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x21\x23-\x5b\x5d-\x7f]|\\[\x21\x23-\x5b\x5d-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x21-\x5a\x53-\x7f]|\\[\x21\x23-\x5b\x5d-\x7f])+)\]))/gi,
|
||||||
findEmailAndLinks = html => {
|
findEmailAndLinks = html => html
|
||||||
return html
|
|
||||||
.replace(url, '$1<a href="$2" target="_blank">$2</a>')
|
.replace(url, '$1<a href="$2" target="_blank">$2</a>')
|
||||||
.replace(email, '$1<a href="mailto:$2">$2</a>');
|
.replace(email, '$1<a href="mailto:$2">$2</a>'),
|
||||||
};
|
isChecked = item => item.checked();
|
||||||
|
|
||||||
let iMessageBodyCacheCount = 0;
|
let iMessageBodyCacheCount = 0;
|
||||||
|
|
||||||
|
|
@ -137,10 +136,18 @@ class MessageUserStore {
|
||||||
this.isMessageSelected = ko.computed(() => null !== this.message());
|
this.isMessageSelected = ko.computed(() => null !== this.message());
|
||||||
|
|
||||||
this.messageListChecked = ko
|
this.messageListChecked = ko
|
||||||
.computed(() => this.messageList.filter(item => item.checked()))
|
.computed(() => this.messageList.filter(isChecked))
|
||||||
.extend({ rateLimit: 0 });
|
.extend({ rateLimit: 0 });
|
||||||
|
|
||||||
this.hasCheckedMessages = ko.computed(() => 0 < this.messageListChecked().length).extend({ rateLimit: 0 });
|
this.hasCheckedMessages = ko
|
||||||
|
.computed(() => !!this.messageList.find(isChecked))
|
||||||
|
.extend({ rateLimit: 0 });
|
||||||
|
|
||||||
|
this.hasCheckedOrSelected = ko
|
||||||
|
.computed(() => !!(this.selectorMessageSelected()
|
||||||
|
|| this.selectorMessageFocused()
|
||||||
|
|| this.messageList.find(item => item.checked())))
|
||||||
|
.extend({ rateLimit: 50 });
|
||||||
|
|
||||||
this.messageListCheckedOrSelected = ko.computed(() => {
|
this.messageListCheckedOrSelected = ko.computed(() => {
|
||||||
const checked = this.messageListChecked(),
|
const checked = this.messageListChecked(),
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ import { ComposePopupView } from 'View/Popup/Compose';
|
||||||
import { AdvancedSearchPopupView } from 'View/Popup/AdvancedSearch';
|
import { AdvancedSearchPopupView } from 'View/Popup/AdvancedSearch';
|
||||||
|
|
||||||
const
|
const
|
||||||
canBeMovedHelper = (self) => self.canBeMoved(),
|
canBeMovedHelper = () => MessageStore.hasCheckedOrSelected(),
|
||||||
ifvisible = window.ifvisible;
|
ifvisible = window.ifvisible;
|
||||||
|
|
||||||
class MessageListMailBoxUserView extends AbstractViewRight {
|
class MessageListMailBoxUserView extends AbstractViewRight {
|
||||||
|
|
@ -158,8 +158,6 @@ class MessageListMailBoxUserView extends AbstractViewRight {
|
||||||
|
|
||||||
hasMessages: () => 0 < this.messageList.length,
|
hasMessages: () => 0 < this.messageList.length,
|
||||||
|
|
||||||
hasCheckedOrSelectedLines: () => 0 < this.messageListCheckedOrSelected().length,
|
|
||||||
|
|
||||||
isSpamFolder: () => FolderStore.spamFolder() === this.messageListEndFolder() && FolderStore.spamFolder(),
|
isSpamFolder: () => FolderStore.spamFolder() === this.messageListEndFolder() && FolderStore.spamFolder(),
|
||||||
|
|
||||||
isSpamDisabled: () => UNUSED_OPTION_VALUE === FolderStore.spamFolder(),
|
isSpamDisabled: () => UNUSED_OPTION_VALUE === FolderStore.spamFolder(),
|
||||||
|
|
@ -191,7 +189,7 @@ class MessageListMailBoxUserView extends AbstractViewRight {
|
||||||
|
|
||||||
// this.messageListChecked = MessageStore.messageListChecked;
|
// this.messageListChecked = MessageStore.messageListChecked;
|
||||||
|
|
||||||
this.canBeMoved = this.hasCheckedOrSelectedLines;
|
this.hasCheckedOrSelectedLines = MessageStore.hasCheckedOrSelected,
|
||||||
|
|
||||||
this.quotaTooltip = this.quotaTooltip.bind(this);
|
this.quotaTooltip = this.quotaTooltip.bind(this);
|
||||||
|
|
||||||
|
|
@ -442,7 +440,7 @@ class MessageListMailBoxUserView extends AbstractViewRight {
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
moveSelectedMessagesToFolder(sToFolderFullNameRaw, bCopy) {
|
moveSelectedMessagesToFolder(sToFolderFullNameRaw, bCopy) {
|
||||||
if (this.canBeMoved()) {
|
if (MessageStore.hasCheckedOrSelected()) {
|
||||||
rl.app.moveMessagesToFolder(
|
rl.app.moveMessagesToFolder(
|
||||||
FolderStore.currentFolderFullNameRaw(),
|
FolderStore.currentFolderFullNameRaw(),
|
||||||
MessageStore.messageListCheckedOrSelectedUidsWithSubMails(),
|
MessageStore.messageListCheckedOrSelectedUidsWithSubMails(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue