Cleanup calls to Knockout observableArray

Improved Knockout observableArray
This commit is contained in:
djmaze 2021-01-22 12:23:20 +01:00
parent fa5476e486
commit b6f0b634fb
47 changed files with 251 additions and 276 deletions

View file

@ -141,7 +141,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
read: () => 0 < MessageStore.messageListChecked().length,
write: (value) => {
value = !!value;
MessageStore.messageList().forEach(message => message.checked(value));
MessageStore.messageList.forEach(message => message.checked(value));
}
},
@ -152,10 +152,10 @@ class MessageListMailBoxUserView extends AbstractViewNext {
isIncompleteChecked: () => {
const c = MessageStore.messageListChecked().length;
return c && MessageStore.messageList().length > c;
return c && MessageStore.messageList.length > c;
},
hasMessages: () => 0 < this.messageList().length,
hasMessages: () => 0 < this.messageList.length,
hasCheckedOrSelectedLines: () => 0 < this.messageListCheckedOrSelected().length,
@ -219,7 +219,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
addEventListener('mailbox.message.show', e => {
const sFolder = e.detail.Folder, sUid = e.detail.Uid;
const message = this.messageList().find(
const message = this.messageList.find(
item => item && sFolder === item.folder && sUid === item.uid
);
@ -492,7 +492,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
case MessageSetAction.SetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw);
if (folder) {
MessageStore.messageList().forEach(message => {
MessageStore.messageList.forEach(message => {
if (message.isUnseen()) {
++cnt;
}
@ -518,7 +518,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
case MessageSetAction.UnsetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw);
if (folder) {
MessageStore.messageList().forEach(message => {
MessageStore.messageList.forEach(message => {
if (!message.isUnseen()) {
++cnt;
}
@ -675,7 +675,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
!this.messageListSearchDesc() &&
!this.messageListError() &&
!this.messageListEndThreadUid() &&
this.messageList().length &&
this.messageList.length &&
(this.isSpamFolder() || this.isTrashFolder())
);
}
@ -864,7 +864,7 @@ class MessageListMailBoxUserView extends AbstractViewNext {
prefetchNextTick() {
if (ifvisible && !this.bPrefetch && !ifvisible.now() && this.viewModelVisible) {
const message = this.messageList().find(
const message = this.messageList.find(
item => item && !hasRequestedMessage(item.folder, item.uid)
);
if (message) {

View file

@ -157,9 +157,9 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
});
this.addComputables({
allowAttachmnetControls: () => this.attachmentsActions().length && Settings.capa(Capa.AttachmentsActions),
allowAttachmnetControls: () => this.attachmentsActions.length && Settings.capa(Capa.AttachmentsActions),
downloadAsZipAllowed: () => this.attachmentsActions().includes('zip') && this.allowAttachmnetControls(),
downloadAsZipAllowed: () => this.attachmentsActions.includes('zip') && this.allowAttachmnetControls(),
lastReplyAction: {
read: this.lastReplyAction_,
@ -206,7 +206,7 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
this.addSubscribables({
showAttachmnetControls: v => this.message()
&& this.message().attachments().forEach(item => item && item.checked(!!v)),
&& this.message().attachments.forEach(item => item && item.checked(!!v)),
lastReplyAction_: value => Local.set(ClientSideKeyName.LastReplyAction, value),
@ -380,7 +380,7 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
attachmentPreview(/*attachment*/) {
/*
if (attachment && attachment.isImage() && !attachment.isLinked && this.message() && this.message().attachments()) {
const items = this.message().attachments().map(item => {
const items = this.message().attachments.map(item => {
if (item && !item.isLinked && item.isImage()) {
if (item === attachment) {
index = listIndex;
@ -712,13 +712,10 @@ class MessageViewMailBoxUserView extends AbstractViewNext {
}
}
getAttachmentsHashes() {
const atts = this.message() ? this.message().attachments() : [];
return atts.map(item => (item && !item.isLinked && item.checked() ? item.download : '')).filter(v => v);
}
downloadAsZip() {
const hashes = this.getAttachmentsHashes();
const hashes = (this.message() ? this.message().attachments : [])
.map(item => (item && !item.isLinked && item.checked() ? item.download : ''))
.filter(v => v);
if (hashes.length) {
Remote.attachmentsActions('Zip', hashes, this.downloadAsZipLoading)
.then((result) => {