mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 15:45:55 +08:00
Speedup messagelist hasCheckedOrSelectedLines
This commit is contained in:
parent
57158bd55a
commit
3fa9bc6963
|
@ -44,11 +44,10 @@ const
|
|||
/*eslint-disable max-len*/
|
||||
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,
|
||||
findEmailAndLinks = html => {
|
||||
return html
|
||||
findEmailAndLinks = html => html
|
||||
.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;
|
||||
|
||||
|
@ -137,10 +136,18 @@ class MessageUserStore {
|
|||
this.isMessageSelected = ko.computed(() => null !== this.message());
|
||||
|
||||
this.messageListChecked = ko
|
||||
.computed(() => this.messageList.filter(item => item.checked()))
|
||||
.computed(() => this.messageList.filter(isChecked))
|
||||
.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(() => {
|
||||
const checked = this.messageListChecked(),
|
||||
|
|
|
@ -49,7 +49,7 @@ import { ComposePopupView } from 'View/Popup/Compose';
|
|||
import { AdvancedSearchPopupView } from 'View/Popup/AdvancedSearch';
|
||||
|
||||
const
|
||||
canBeMovedHelper = (self) => self.canBeMoved(),
|
||||
canBeMovedHelper = () => MessageStore.hasCheckedOrSelected(),
|
||||
ifvisible = window.ifvisible;
|
||||
|
||||
class MessageListMailBoxUserView extends AbstractViewRight {
|
||||
|
@ -158,8 +158,6 @@ class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
hasMessages: () => 0 < this.messageList.length,
|
||||
|
||||
hasCheckedOrSelectedLines: () => 0 < this.messageListCheckedOrSelected().length,
|
||||
|
||||
isSpamFolder: () => FolderStore.spamFolder() === this.messageListEndFolder() && FolderStore.spamFolder(),
|
||||
|
||||
isSpamDisabled: () => UNUSED_OPTION_VALUE === FolderStore.spamFolder(),
|
||||
|
@ -191,7 +189,7 @@ class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
|
||||
// this.messageListChecked = MessageStore.messageListChecked;
|
||||
|
||||
this.canBeMoved = this.hasCheckedOrSelectedLines;
|
||||
this.hasCheckedOrSelectedLines = MessageStore.hasCheckedOrSelected,
|
||||
|
||||
this.quotaTooltip = this.quotaTooltip.bind(this);
|
||||
|
||||
|
@ -442,7 +440,7 @@ class MessageListMailBoxUserView extends AbstractViewRight {
|
|||
* @returns {boolean}
|
||||
*/
|
||||
moveSelectedMessagesToFolder(sToFolderFullNameRaw, bCopy) {
|
||||
if (this.canBeMoved()) {
|
||||
if (MessageStore.hasCheckedOrSelected()) {
|
||||
rl.app.moveMessagesToFolder(
|
||||
FolderStore.currentFolderFullNameRaw(),
|
||||
MessageStore.messageListCheckedOrSelectedUidsWithSubMails(),
|
||||
|
|
Loading…
Reference in a new issue