Simplify MessageUserStore

This commit is contained in:
djmaze 2021-03-12 16:54:37 +01:00
parent 5e0f637b12
commit 227db0e0c3
10 changed files with 187 additions and 221 deletions

View file

@ -146,10 +146,11 @@ class AppUser extends AbstractApp {
} }
reloadFlagsCurrentMessageListAndMessageFromCache() { reloadFlagsCurrentMessageListAndMessageFromCache() {
MessageUserStore.messageList.forEach(message => MessageUserStore.list.forEach(message =>
MessageFlagsCache.initMessage(message) MessageFlagsCache.initMessage(message)
); );
MessageFlagsCache.initMessage(MessageUserStore.message()); MessageFlagsCache.initMessage(MessageUserStore.message());
MessageUserStore.messageViewTrigger(!MessageUserStore.messageViewTrigger());
} }
/** /**
@ -157,44 +158,44 @@ class AppUser extends AbstractApp {
* @param {boolean=} bDropCurrenFolderCache = false * @param {boolean=} bDropCurrenFolderCache = false
*/ */
reloadMessageList(bDropPagePosition = false, bDropCurrenFolderCache = false) { reloadMessageList(bDropPagePosition = false, bDropCurrenFolderCache = false) {
let iOffset = (MessageUserStore.messageListPage() - 1) * SettingsUserStore.messagesPerPage(); let iOffset = (MessageUserStore.listPage() - 1) * SettingsUserStore.messagesPerPage();
if (bDropCurrenFolderCache) { if (bDropCurrenFolderCache) {
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), ''); setFolderHash(FolderUserStore.currentFolderFullNameRaw(), '');
} }
if (bDropPagePosition) { if (bDropPagePosition) {
MessageUserStore.messageListPage(1); MessageUserStore.listPage(1);
MessageUserStore.messageListPageBeforeThread(1); MessageUserStore.listPageBeforeThread(1);
iOffset = 0; iOffset = 0;
rl.route.setHash( rl.route.setHash(
mailBox( mailBox(
FolderUserStore.currentFolderFullNameHash(), FolderUserStore.currentFolderFullNameHash(),
MessageUserStore.messageListPage(), MessageUserStore.listPage(),
MessageUserStore.messageListSearch(), MessageUserStore.listSearch(),
MessageUserStore.messageListThreadUid() MessageUserStore.listThreadUid()
), ),
true, true,
true true
); );
} }
MessageUserStore.messageListLoading(true); MessageUserStore.listLoading(true);
Remote.messageList( Remote.messageList(
(sResult, oData, bCached) => { (sResult, oData, bCached) => {
if (StorageResultType.Success === sResult && oData && oData.Result) { if (StorageResultType.Success === sResult && oData && oData.Result) {
MessageUserStore.messageListError(''); MessageUserStore.listError('');
MessageUserStore.messageListLoading(false); MessageUserStore.listLoading(false);
MessageUserStore.setMessageList(oData, bCached); MessageUserStore.setMessageList(oData, bCached);
} else if (StorageResultType.Unload === sResult) { } else if (StorageResultType.Unload === sResult) {
MessageUserStore.messageListError(''); MessageUserStore.listError('');
MessageUserStore.messageListLoading(false); MessageUserStore.listLoading(false);
} else if (StorageResultType.Abort !== sResult) { } else if (StorageResultType.Abort !== sResult) {
MessageUserStore.messageList([]); MessageUserStore.list([]);
MessageUserStore.messageListLoading(false); MessageUserStore.listLoading(false);
MessageUserStore.messageListError( MessageUserStore.listError(
getNotification((oData && oData.ErrorCode) || Notification.CantGetMessageList) getNotification((oData && oData.ErrorCode) || Notification.CantGetMessageList)
); );
} }
@ -202,8 +203,8 @@ class AppUser extends AbstractApp {
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
iOffset, iOffset,
SettingsUserStore.messagesPerPage(), SettingsUserStore.messagesPerPage(),
MessageUserStore.messageListSearch(), MessageUserStore.listSearch(),
MessageUserStore.messageListThreadUid() MessageUserStore.listThreadUid()
); );
} }
@ -294,7 +295,7 @@ class AppUser extends AbstractApp {
} }
} }
this.reloadMessageList(!MessageUserStore.messageList.length); this.reloadMessageList(!MessageUserStore.list.length);
this.quotaDebounce(); this.quotaDebounce();
} }
} }
@ -685,8 +686,8 @@ class AppUser extends AbstractApp {
} }
} else if (unreadCountChange } else if (unreadCountChange
&& folder.fullNameRaw === FolderUserStore.currentFolderFullNameRaw() && folder.fullNameRaw === FolderUserStore.currentFolderFullNameRaw()
&& MessageUserStore.messageList.length) { && MessageUserStore.list.length) {
this.folderInformation(folder.fullNameRaw, MessageUserStore.messageList()); this.folderInformation(folder.fullNameRaw, MessageUserStore.list());
} }
} }
}); });
@ -711,7 +712,7 @@ class AppUser extends AbstractApp {
rootUids = []; rootUids = [];
if (undefined === messages || !messages) { if (undefined === messages || !messages) {
messages = MessageUserStore.messageListChecked(); messages = MessageUserStore.listChecked();
} }
rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null) rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null)
@ -764,7 +765,6 @@ class AppUser extends AbstractApp {
} }
this.reloadFlagsCurrentMessageListAndMessageFromCache(); this.reloadFlagsCurrentMessageListAndMessageFromCache();
MessageUserStore.messageViewTrigger(!MessageUserStore.messageViewTrigger());
} }
} }

View file

@ -75,9 +75,9 @@ export class MailBoxUserScreen extends AbstractScreen {
FolderUserStore.currentFolder(folder); FolderUserStore.currentFolder(folder);
MessageUserStore.messageListPage(page); MessageUserStore.listPage(page);
MessageUserStore.messageListSearch(search); MessageUserStore.listSearch(search);
MessageUserStore.messageListThreadUid(threadUid); MessageUserStore.listThreadUid(threadUid);
rl.app.reloadMessageList(); rl.app.reloadMessageList();
} }

View file

@ -147,14 +147,14 @@ export class GeneralUserSettings {
).debounce(3000)); ).debounce(3000));
this.useThreads.subscribe((value) => { this.useThreads.subscribe((value) => {
MessageUserStore.messageList([]); MessageUserStore.list([]);
Remote.saveSettings(null, { Remote.saveSettings(null, {
'UseThreads': value ? 1 : 0 'UseThreads': value ? 1 : 0
}); });
}); });
this.layout.subscribe((value) => { this.layout.subscribe((value) => {
MessageUserStore.messageList([]); MessageUserStore.list([]);
Remote.saveSettings(f2, { Remote.saveSettings(f2, {
'Layout': value 'Layout': value
}); });

View file

@ -70,36 +70,34 @@ export const MessageUserStore = new class {
constructor() { constructor() {
this.staticMessage = new MessageModel(); this.staticMessage = new MessageModel();
this.messageList = ko.observableArray().extend({ debounce: 0 }); this.list = ko.observableArray().extend({ debounce: 0 });
ko.addObservablesTo(this, { ko.addObservablesTo(this, {
messageListCount: 0, listCount: 0,
messageListSearch: '', listSearch: '',
messageListThreadUid: '', listThreadUid: '',
messageListPage: 1, listPage: 1,
messageListPageBeforeThread: 1, listPageBeforeThread: 1,
messageListError: '', listError: '',
messageListEndFolder: '', listEndFolder: '',
messageListEndSearch: '', listEndSearch: '',
messageListEndThreadUid: '', listEndThreadUid: '',
messageListEndPage: 1, listEndPage: 1,
messageListLoading: false, listLoading: false,
messageListIsNotCompleted: false, listLoadingAnimation: false,
listIsNotCompleted: false,
listCompleteLoading: false,
selectorMessageSelected: null, selectorMessageSelected: null,
selectorMessageFocused: null, selectorMessageFocused: null,
// message viewer // message viewer
message: null, message: null,
messageViewTrigger: false, messageViewTrigger: false,
messageError: '', messageError: '',
messageLoading: false,
messageCurrentLoading: false,
messageFullScreenMode: false, messageFullScreenMode: false,
// Cache mail bodies // Cache mail bodies
@ -107,102 +105,72 @@ export const MessageUserStore = new class {
messageActiveDom: null messageActiveDom: null
}); });
this.messageListCompleteLoadingThrottle = ko.observable(false).extend({ debounce: 200 }); this.listDisableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 });
this.messageListCompleteLoadingThrottleForAnimation = ko.observable(false);
this.messageListDisableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 }); // Computed Observables
this.messageLoadingThrottle = ko.observable(false).extend({ debounce: 50 }); this.listEndHash = ko.computed(
this.messageLoading = ko.computed(() => this.messageCurrentLoading());
this.messageListEndHash = ko.computed(
() => () =>
this.messageListEndFolder() + this.listEndFolder() +
'|' + '|' +
this.messageListEndSearch() + this.listEndSearch() +
'|' + '|' +
this.messageListEndThreadUid() + this.listEndThreadUid() +
'|' + '|' +
this.messageListEndPage() this.listEndPage()
); );
this.messageListPageCount = ko.computed(() => { this.listPageCount = ko.computed(() =>
const page = Math.ceil(this.messageListCount() / SettingsUserStore.messagesPerPage()); Math.max(1, Math.ceil(this.listCount() / SettingsUserStore.messagesPerPage()))
return 0 >= page ? 1 : page; );
});
this.mainMessageListSearch = ko.computed({ this.mainMessageListSearch = ko.computed({
read: this.messageListSearch, read: this.listSearch,
write: (value) => { write: value =>
rl.route.setHash( rl.route.setHash(
mailBox(FolderUserStore.currentFolderFullNameHash(), 1, value.toString().trim(), this.messageListThreadUid()) mailBox(FolderUserStore.currentFolderFullNameHash(), 1, value.toString().trim(), this.listThreadUid())
); )
}
});
this.messageListCompleteLoading = ko.computed(() => {
const one = this.messageListLoading(),
two = this.messageListIsNotCompleted();
return one || two;
}); });
this.isMessageSelected = ko.computed(() => null !== this.message()); this.isMessageSelected = ko.computed(() => null !== this.message());
this.messageListChecked = ko this.listChecked = ko
.computed(() => this.messageList.filter(isChecked)) .computed(() => this.list.filter(isChecked))
.extend({ rateLimit: 0 }); .extend({ rateLimit: 0 });
this.hasCheckedMessages = ko this.hasCheckedMessages = ko
.computed(() => !!this.messageList.find(isChecked)) .computed(() => !!this.list.find(isChecked))
.extend({ rateLimit: 0 }); .extend({ rateLimit: 0 });
this.hasCheckedOrSelected = ko this.hasCheckedOrSelected = ko
.computed(() => !!(this.selectorMessageSelected() .computed(() => !!(this.selectorMessageSelected()
|| this.selectorMessageFocused() || this.selectorMessageFocused()
|| this.messageList.find(item => item.checked()))) || this.list.find(item => item.checked())))
.extend({ rateLimit: 50 }); .extend({ rateLimit: 50 });
this.messageListCheckedOrSelected = ko.computed(() => { this.listCheckedOrSelected = ko.computed(() => {
const checked = this.messageListChecked(), const
selectedMessage = this.selectorMessageSelected(), selectedMessage = this.selectorMessageSelected(),
focusedMessage = this.selectorMessageFocused(); focusedMessage = this.selectorMessageFocused(),
checked = this.list.filter(item => isChecked(item) || item === selectedMessage);
if (checked.length) { return checked.length ? checked : (focusedMessage ? [focusedMessage] : []);
return selectedMessage
? checked.concat([selectedMessage]).unique()
: checked;
}
return selectedMessage ? [selectedMessage] : (focusedMessage ? [focusedMessage] : []);
}); });
this.messageListCheckedOrSelectedUidsWithSubMails = ko.computed(() => { this.listCheckedOrSelectedUidsWithSubMails = ko.computed(() => {
let result = []; let result = [];
this.messageListCheckedOrSelected().forEach(message => { this.listCheckedOrSelected().forEach(message => {
if (message) {
result.push(message.uid); result.push(message.uid);
if (1 < message.threadsLen()) { if (1 < message.threadsLen()) {
result = result.concat(message.threads()).unique(); result = result.concat(message.threads()).unique();
} }
}
}); });
return result; return result;
}); });
this.subscribers(); // Subscribers
this.onMessageResponse = this.onMessageResponse.bind(this);
this.purgeMessageBodyCacheThrottle = this.purgeMessageBodyCache.throttle(30000);
}
subscribers() {
let timer = 0, fn = this.messageListCompleteLoadingThrottleForAnimation;
this.messageListCompleteLoading.subscribe((value) => {
value = !!value;
this.messageListCompleteLoadingThrottle(value);
let timer = 0, fn = this.listLoadingAnimation;
this.listCompleteLoading.subscribe(value => {
if (value) { if (value) {
fn(value); fn(value);
} else if (fn()) { } else if (fn()) {
@ -216,8 +184,15 @@ export const MessageUserStore = new class {
} }
}); });
this.messageList.subscribe( this.listLoading.subscribe(value =>
(list=> { this.listCompleteLoading(value || this.listIsNotCompleted())
);
this.listIsNotCompleted.subscribe(value =>
this.listCompleteLoading(value || this.listLoading())
);
this.list.subscribe(
(list => {
list.forEach(item => list.forEach(item =>
item && item.newForAnimation() && item.newForAnimation(false) item && item.newForAnimation() && item.newForAnimation(false)
) )
@ -237,14 +212,16 @@ export const MessageUserStore = new class {
} }
}); });
this.messageLoading.subscribe(value => this.messageLoadingThrottle(value)); this.listEndFolder.subscribe(folder => {
this.messageListEndFolder.subscribe(folder => {
const message = this.message(); const message = this.message();
if (message && folder && folder !== message.folder) { if (message && folder && folder !== message.folder) {
this.message(null); this.message(null);
} }
}); });
this.onMessageResponse = this.onMessageResponse.bind(this);
this.purgeMessageBodyCacheThrottle = this.purgeMessageBodyCache.throttle(30000);
} }
purgeMessageBodyCache() { purgeMessageBodyCache() {
@ -303,7 +280,7 @@ export const MessageUserStore = new class {
uidForRemove = uidForRemove.map(mValue => pInt(mValue)); uidForRemove = uidForRemove.map(mValue => pInt(mValue));
let unseenCount = 0, let unseenCount = 0,
messageList = this.messageList, messageList = this.list,
currentMessage = this.message(); currentMessage = this.message();
const trashFolder = FolderUserStore.trashFolder(), const trashFolder = FolderUserStore.trashFolder(),
@ -349,11 +326,9 @@ export const MessageUserStore = new class {
if (messages.length) { if (messages.length) {
if (copy) { if (copy) {
messages.forEach(item => { messages.forEach(item => item.checked(false));
item.checked(false);
});
} else { } else {
this.messageListIsNotCompleted(true); this.listIsNotCompleted(true);
messages.forEach(item => { messages.forEach(item => {
if (currentMessage && currentMessage.hash === item.hash) { if (currentMessage && currentMessage.hash === item.hash) {
@ -364,11 +339,7 @@ export const MessageUserStore = new class {
item.deleted(true); item.deleted(true);
}); });
setTimeout(() => { setTimeout(() => messages.forEach(item => messageList.remove(item)), 350);
messages.forEach(item => {
messageList.remove(item);
});
}, 350);
} }
} }
@ -380,47 +351,47 @@ export const MessageUserStore = new class {
setFolderHash(toFolderFullNameRaw, ''); setFolderHash(toFolderFullNameRaw, '');
} }
if (this.messageListThreadUid()) { if (this.listThreadUid()) {
if ( if (
messageList.length && messageList.length &&
!!messageList.find(item => !!(item && item.deleted() && item.uid === this.messageListThreadUid())) !!messageList.find(item => !!(item && item.deleted() && item.uid === this.listThreadUid()))
) { ) {
const message = messageList.find(item => item && !item.deleted()); const message = messageList.find(item => item && !item.deleted());
if (message && this.messageListThreadUid() !== pString(message.uid)) { if (message && this.listThreadUid() !== pString(message.uid)) {
this.messageListThreadUid(pString(message.uid)); this.listThreadUid(pString(message.uid));
rl.route.setHash( rl.route.setHash(
mailBox( mailBox(
FolderUserStore.currentFolderFullNameHash(), FolderUserStore.currentFolderFullNameHash(),
this.messageListPage(), this.listPage(),
this.messageListSearch(), this.listSearch(),
this.messageListThreadUid() this.listThreadUid()
), ),
true, true,
true true
); );
} else if (!message) { } else if (!message) {
if (1 < this.messageListPage()) { if (1 < this.listPage()) {
this.messageListPage(this.messageListPage() - 1); this.listPage(this.listPage() - 1);
rl.route.setHash( rl.route.setHash(
mailBox( mailBox(
FolderUserStore.currentFolderFullNameHash(), FolderUserStore.currentFolderFullNameHash(),
this.messageListPage(), this.listPage(),
this.messageListSearch(), this.listSearch(),
this.messageListThreadUid() this.listThreadUid()
), ),
true, true,
true true
); );
} else { } else {
this.messageListThreadUid(''); this.listThreadUid('');
rl.route.setHash( rl.route.setHash(
mailBox( mailBox(
FolderUserStore.currentFolderFullNameHash(), FolderUserStore.currentFolderFullNameHash(),
this.messageListPageBeforeThread(), this.listPageBeforeThread(),
this.messageListSearch() this.listSearch()
), ),
true, true,
true true
@ -612,11 +583,11 @@ export const MessageUserStore = new class {
(message.folder !== selectedMessage.folder || message.uid !== selectedMessage.uid) (message.folder !== selectedMessage.folder || message.uid !== selectedMessage.uid)
) { ) {
this.selectorMessageSelected(null); this.selectorMessageSelected(null);
if (1 === this.messageList.length) { if (1 === this.list.length) {
this.selectorMessageFocused(null); this.selectorMessageFocused(null);
} }
} else if (!selectedMessage && message) { } else if (!selectedMessage && message) {
selectedMessage = this.messageList.find( selectedMessage = this.list.find(
subMessage => subMessage =>
subMessage && subMessage &&
subMessage.folder === message.folder && subMessage.folder === message.folder &&
@ -655,8 +626,10 @@ export const MessageUserStore = new class {
} }
populateMessageBody(oMessage) { populateMessageBody(oMessage) {
if (oMessage && Remote.message(this.onMessageResponse, oMessage.folder, oMessage.uid)) { if (oMessage) {
this.messageCurrentLoading(true); this.hideMessageBodies();
this.messageLoading(true);
Remote.message(this.onMessageResponse, oMessage.folder, oMessage.uid);
} }
} }
@ -666,10 +639,6 @@ export const MessageUserStore = new class {
* @param {boolean} bCached * @param {boolean} bCached
*/ */
onMessageResponse(sResult, oData, bCached) { onMessageResponse(sResult, oData, bCached) {
this.hideMessageBodies();
this.messageCurrentLoading(false);
if (StorageResultType.Success === sResult && oData && oData.Result) { if (StorageResultType.Success === sResult && oData && oData.Result) {
this.setMessage(oData, bCached); this.setMessage(oData, bCached);
} else if (StorageResultType.Unload === sResult) { } else if (StorageResultType.Unload === sResult) {
@ -681,6 +650,8 @@ export const MessageUserStore = new class {
oData && oData.ErrorCode ? getNotification(oData.ErrorCode) : getNotification(Notification.UnknownError) oData && oData.ErrorCode ? getNotification(oData.ErrorCode) : getNotification(Notification.UnknownError)
); );
} }
this.messageLoading(false);
} }
/** /**
@ -723,20 +694,20 @@ export const MessageUserStore = new class {
this.initUidNextAndNewMessages(folder.fullNameRaw, collection.UidNext, collection.NewMessages); this.initUidNextAndNewMessages(folder.fullNameRaw, collection.UidNext, collection.NewMessages);
} }
this.messageListCount(iCount); this.listCount(iCount);
this.messageListSearch(pString(collection.Search)); this.listSearch(pString(collection.Search));
this.messageListPage(Math.ceil(iOffset / SettingsUserStore.messagesPerPage() + 1)); this.listPage(Math.ceil(iOffset / SettingsUserStore.messagesPerPage() + 1));
this.messageListThreadUid(pString(data.Result.ThreadUid)); this.listThreadUid(pString(data.Result.ThreadUid));
this.messageListEndFolder(collection.Folder); this.listEndFolder(collection.Folder);
this.messageListEndSearch(this.messageListSearch()); this.listEndSearch(this.listSearch());
this.messageListEndThreadUid(this.messageListThreadUid()); this.listEndThreadUid(this.listThreadUid());
this.messageListEndPage(this.messageListPage()); this.listEndPage(this.listPage());
this.messageListDisableAutoSelect(true); this.listDisableAutoSelect(true);
this.messageList(collection); this.list(collection);
this.messageListIsNotCompleted(false); this.listIsNotCompleted(false);
clearNewMessageCache(); clearNewMessageCache();
@ -744,9 +715,9 @@ export const MessageUserStore = new class {
rl.app.folderInformation(folder.fullNameRaw, collection); rl.app.folderInformation(folder.fullNameRaw, collection);
} }
} else { } else {
this.messageListCount(0); this.listCount(0);
this.messageList([]); this.list([]);
this.messageListError(getNotification(data && data.ErrorCode ? data.ErrorCode : Notification.CantGetMessageList)); this.listError(getNotification(data && data.ErrorCode ? data.ErrorCode : Notification.CantGetMessageList));
} }
} }
}; };

View file

@ -10,10 +10,6 @@ export const TemplateUserStore = new class {
this.templatesNames = ko.observableArray().extend({ debounce: 1000 }); this.templatesNames = ko.observableArray().extend({ debounce: 1000 });
this.templatesNames.skipFirst = true; this.templatesNames.skipFirst = true;
this.subscribers();
}
subscribers() {
this.templates.subscribe((list) => { this.templates.subscribe((list) => {
this.templatesNames(list.map(item => (item ? item.name : null)).filter(v => v)); this.templatesNames(list.map(item => (item ? item.name : null)).filter(v => v));
}); });

View file

@ -28,7 +28,7 @@ class LoginAdminView extends AbstractViewCenter {
submitError: '' submitError: ''
}); });
this.formError = ko.observable(false).extend({ 'falseTimeout': 500 }); this.formError = ko.observable(false).extend({ falseTimeout: 500 });
this.addSubscribables({ this.addSubscribables({
login: () => this.loginError(false), login: () => this.loginError(false),

View file

@ -45,7 +45,7 @@ class FolderClearPopupView extends AbstractViewPopup {
const folderToClear = this.selectedFolder(); const folderToClear = this.selectedFolder();
if (folderToClear) { if (folderToClear) {
MessageUserStore.message(null); MessageUserStore.message(null);
MessageUserStore.messageList([]); MessageUserStore.list([]);
this.clearingProcess(true); this.clearingProcess(true);

View file

@ -27,7 +27,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
this.composeInEdit = AppUserStore.composeInEdit; this.composeInEdit = AppUserStore.composeInEdit;
this.messageList = MessageUserStore.messageList; this.messageList = MessageUserStore.list;
this.folderList = FolderUserStore.folderList; this.folderList = FolderUserStore.folderList;
this.folderListSystem = FolderUserStore.folderListSystem; this.folderListSystem = FolderUserStore.folderListSystem;
this.foldersChanging = FolderUserStore.foldersChanging; this.foldersChanging = FolderUserStore.foldersChanging;
@ -47,7 +47,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
() => () =>
FolderUserStore.currentFolder() && FolderUserStore.currentFolder() &&
FolderUserStore.currentFolder().isInbox() && FolderUserStore.currentFolder().isInbox() &&
MessageUserStore.messageListSearch().trim().includes('is:flagged') MessageUserStore.listSearch().trim().includes('is:flagged')
); );
} }
@ -70,7 +70,7 @@ export class FolderListMailBoxUserView extends AbstractViewLeft {
moveAction(false); moveAction(false);
rl.app.moveMessagesToFolder( rl.app.moveMessagesToFolder(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
folder.fullNameRaw, folder.fullNameRaw,
event.ctrlKey event.ctrlKey
); );

View file

@ -72,8 +72,8 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.popupVisibility = popupVisibility; this.popupVisibility = popupVisibility;
this.message = MessageUserStore.message; this.message = MessageUserStore.message;
this.messageList = MessageUserStore.messageList; this.messageList = MessageUserStore.list;
this.messageListDisableAutoSelect = MessageUserStore.messageListDisableAutoSelect; this.messageListDisableAutoSelect = MessageUserStore.listDisableAutoSelect;
this.folderList = FolderUserStore.folderList; this.folderList = FolderUserStore.folderList;
@ -83,22 +83,21 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.selectorMessageSelected = MessageUserStore.selectorMessageSelected; this.selectorMessageSelected = MessageUserStore.selectorMessageSelected;
this.selectorMessageFocused = MessageUserStore.selectorMessageFocused; this.selectorMessageFocused = MessageUserStore.selectorMessageFocused;
this.isMessageSelected = MessageUserStore.isMessageSelected; this.isMessageSelected = MessageUserStore.isMessageSelected;
this.messageListSearch = MessageUserStore.messageListSearch; this.messageListSearch = MessageUserStore.listSearch;
this.messageListThreadUid = MessageUserStore.messageListThreadUid; this.messageListThreadUid = MessageUserStore.listThreadUid;
this.messageListError = MessageUserStore.messageListError; this.messageListError = MessageUserStore.listError;
this.folderMenuForMove = FolderUserStore.folderMenuForMove; this.folderMenuForMove = FolderUserStore.folderMenuForMove;
this.useCheckboxesInList = SettingsUserStore.useCheckboxesInList; this.useCheckboxesInList = SettingsUserStore.useCheckboxesInList;
this.mainMessageListSearch = MessageUserStore.mainMessageListSearch; this.mainMessageListSearch = MessageUserStore.mainMessageListSearch;
this.messageListEndFolder = MessageUserStore.messageListEndFolder; this.messageListEndFolder = MessageUserStore.listEndFolder;
this.messageListEndThreadUid = MessageUserStore.messageListEndThreadUid; this.messageListEndThreadUid = MessageUserStore.listEndThreadUid;
this.messageListCheckedOrSelected = MessageUserStore.messageListCheckedOrSelected; this.messageListCheckedOrSelected = MessageUserStore.listCheckedOrSelected;
this.messageListCheckedOrSelectedUidsWithSubMails = MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails; this.messageListCheckedOrSelectedUidsWithSubMails = MessageUserStore.listCheckedOrSelectedUidsWithSubMails;
this.messageListCompleteLoadingThrottle = MessageUserStore.messageListCompleteLoadingThrottle; this.messageListCompleteLoadingThrottle = MessageUserStore.listCompleteLoading;
this.messageListCompleteLoadingThrottleForAnimation = this.messageListCompleteLoadingThrottleForAnimation = MessageUserStore.listLoadingAnimation;
MessageUserStore.messageListCompleteLoadingThrottleForAnimation;
initOnStartOrLangChange(() => this.emptySubjectValue = i18n('MESSAGE_LIST/EMPTY_SUBJECT_TEXT')); initOnStartOrLangChange(() => this.emptySubjectValue = i18n('MESSAGE_LIST/EMPTY_SUBJECT_TEXT'));
@ -124,18 +123,18 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.addComputables({ this.addComputables({
messageListSearchDesc: () => { messageListSearchDesc: () => {
const value = MessageUserStore.messageListEndSearch(); const value = MessageUserStore.listEndSearch();
return value ? i18n('MESSAGE_LIST/SEARCH_RESULT_FOR', { 'SEARCH': value }) : '' return value ? i18n('MESSAGE_LIST/SEARCH_RESULT_FOR', { 'SEARCH': value }) : ''
}, },
messageListPaginator: computedPaginatorHelper(MessageUserStore.messageListPage, messageListPaginator: computedPaginatorHelper(MessageUserStore.listPage,
MessageUserStore.messageListPageCount), MessageUserStore.listPageCount),
checkAll: { checkAll: {
read: () => 0 < MessageUserStore.messageListChecked().length, read: () => 0 < MessageUserStore.listChecked().length,
write: (value) => { write: (value) => {
value = !!value; value = !!value;
MessageUserStore.messageList.forEach(message => message.checked(value)); MessageUserStore.list.forEach(message => message.checked(value));
} }
}, },
@ -145,8 +144,8 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
}, },
isIncompleteChecked: () => { isIncompleteChecked: () => {
const c = MessageUserStore.messageListChecked().length; const c = MessageUserStore.listChecked().length;
return c && MessageUserStore.messageList.length > c; return c && MessageUserStore.list.length > c;
}, },
hasMessages: () => 0 < this.messageList.length, hasMessages: () => 0 < this.messageList.length,
@ -173,14 +172,14 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
isUnSpamVisible: () => isUnSpamVisible: () =>
this.isSpamFolder() && !this.isSpamDisabled() && !this.isDraftFolder() && !this.isSentFolder(), this.isSpamFolder() && !this.isSpamDisabled() && !this.isDraftFolder() && !this.isSentFolder(),
mobileCheckedStateShow: () => ThemeStore.isMobile() ? 0 < MessageUserStore.messageListChecked().length : true, mobileCheckedStateShow: () => ThemeStore.isMobile() ? 0 < MessageUserStore.listChecked().length : true,
mobileCheckedStateHide: () => ThemeStore.isMobile() ? !MessageUserStore.messageListChecked().length : true, mobileCheckedStateHide: () => ThemeStore.isMobile() ? !MessageUserStore.listChecked().length : true,
messageListFocused: () => Focused.MessageList === AppUserStore.focusedState() messageListFocused: () => Focused.MessageList === AppUserStore.focusedState()
}); });
// this.messageListChecked = MessageUserStore.messageListChecked; // this.messageListChecked = MessageUserStore.listChecked;
this.hasCheckedOrSelectedLines = MessageUserStore.hasCheckedOrSelected, this.hasCheckedOrSelectedLines = MessageUserStore.hasCheckedOrSelected,
@ -234,7 +233,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
} }
}); });
MessageUserStore.messageListEndHash.subscribe((() => MessageUserStore.listEndHash.subscribe((() =>
this.selector.scrollToFocused() this.selector.scrollToFocused()
).throttle(50)); ).throttle(50));
@ -259,7 +258,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
} }
reloadCommand() { reloadCommand() {
if (!MessageUserStore.messageListCompleteLoadingThrottleForAnimation() && this.allowReload) { if (!MessageUserStore.listLoadingAnimation() && this.allowReload) {
rl.app.reloadMessageList(false, true); rl.app.reloadMessageList(false, true);
} }
} }
@ -267,7 +266,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
multyForwardCommand() { multyForwardCommand() {
showMessageComposer([ showMessageComposer([
ComposeType.ForwardAsAttachment, ComposeType.ForwardAsAttachment,
MessageUserStore.messageListCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
]); ]);
} }
@ -276,7 +275,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Trash, FolderType.Trash,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
false false
); );
} }
@ -286,7 +285,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Trash, FolderType.Trash,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
} }
@ -295,7 +294,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Archive, FolderType.Archive,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
} }
@ -304,7 +303,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Spam, FolderType.Spam,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
} }
@ -313,7 +312,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.NotSpam, FolderType.NotSpam,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
} }
@ -352,7 +351,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
} }
goToUpUpOrDownDown(up) { goToUpUpOrDownDown(up) {
if (MessageUserStore.messageListChecked().length) { if (MessageUserStore.listChecked().length) {
return false; return false;
} }
@ -416,8 +415,8 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.route.setHash( rl.route.setHash(
mailBox( mailBox(
FolderUserStore.currentFolderFullNameHash(), FolderUserStore.currentFolderFullNameHash(),
MessageUserStore.messageListPageBeforeThread(), MessageUserStore.listPageBeforeThread(),
MessageUserStore.messageListSearch() MessageUserStore.listSearch()
) )
); );
} }
@ -431,7 +430,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
if (MessageUserStore.hasCheckedOrSelected()) { if (MessageUserStore.hasCheckedOrSelected()) {
rl.app.moveMessagesToFolder( rl.app.moveMessagesToFolder(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
sToFolderFullNameRaw, sToFolderFullNameRaw,
bCopy bCopy
); );
@ -443,7 +442,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
getDragData(event) { getDragData(event) {
const item = ko.dataFor(doc.elementFromPoint(event.clientX, event.clientY)); const item = ko.dataFor(doc.elementFromPoint(event.clientX, event.clientY));
item && item.checked && item.checked(true); item && item.checked && item.checked(true);
const uids = MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails(); const uids = MessageUserStore.listCheckedOrSelectedUidsWithSubMails();
item && !uids.includes(item.uid) && uids.push(item.uid); item && !uids.includes(item.uid) && uids.push(item.uid);
return uids.length ? { return uids.length ? {
copy: event.ctrlKey, copy: event.ctrlKey,
@ -479,7 +478,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
case MessageSetAction.SetSeen: case MessageSetAction.SetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw); folder = getFolderFromCacheList(sFolderFullNameRaw);
if (folder) { if (folder) {
MessageUserStore.messageList.forEach(message => { MessageUserStore.list.forEach(message => {
if (message.isUnseen()) { if (message.isUnseen()) {
++cnt; ++cnt;
} }
@ -505,7 +504,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
case MessageSetAction.UnsetSeen: case MessageSetAction.UnsetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw); folder = getFolderFromCacheList(sFolderFullNameRaw);
if (folder) { if (folder) {
MessageUserStore.messageList.forEach(message => { MessageUserStore.list.forEach(message => {
if (!message.isUnseen()) { if (!message.isUnseen()) {
++cnt; ++cnt;
} }
@ -540,7 +539,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageSetAction.SetSeen, MessageSetAction.SetSeen,
MessageUserStore.messageListCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
} }
@ -556,7 +555,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageSetAction.UnsetSeen, MessageSetAction.UnsetSeen,
MessageUserStore.messageListCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
} }
@ -564,7 +563,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageSetAction.SetFlag, MessageSetAction.SetFlag,
MessageUserStore.messageListCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
} }
@ -572,7 +571,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullNameRaw(),
MessageSetAction.UnsetFlag, MessageSetAction.UnsetFlag,
MessageUserStore.messageListCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
} }
@ -641,18 +640,18 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
mailBox( mailBox(
FolderUserStore.currentFolderFullNameHash(), FolderUserStore.currentFolderFullNameHash(),
page.value, page.value,
MessageUserStore.messageListSearch(), MessageUserStore.listSearch(),
MessageUserStore.messageListThreadUid() MessageUserStore.listThreadUid()
) )
); );
} }
gotoThread(message) { gotoThread(message) {
if (message && 0 < message.threadsLen()) { if (message && 0 < message.threadsLen()) {
MessageUserStore.messageListPageBeforeThread(MessageUserStore.messageListPage()); MessageUserStore.listPageBeforeThread(MessageUserStore.listPage());
rl.route.setHash( rl.route.setHash(
mailBox(FolderUserStore.currentFolderFullNameHash(), 1, MessageUserStore.messageListSearch(), message.uid) mailBox(FolderUserStore.currentFolderFullNameHash(), 1, MessageUserStore.listSearch(), message.uid)
); );
} }
} }
@ -723,12 +722,12 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
// delete // delete
shortcuts.add('delete', 'shift', KeyState.MessageList, () => { shortcuts.add('delete', 'shift', KeyState.MessageList, () => {
MessageUserStore.messageListCheckedOrSelected().length && this.deleteWithoutMoveCommand(); MessageUserStore.listCheckedOrSelected().length && this.deleteWithoutMoveCommand();
return false; return false;
}); });
// shortcuts.add('3', 'shift', KeyState.MessageList, () => { // shortcuts.add('3', 'shift', KeyState.MessageList, () => {
shortcuts.add('delete', '', KeyState.MessageList, () => { shortcuts.add('delete', '', KeyState.MessageList, () => {
MessageUserStore.messageListCheckedOrSelected().length && this.deleteCommand(); MessageUserStore.listCheckedOrSelected().length && this.deleteCommand();
return false; return false;
}); });
} }
@ -909,7 +908,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
.on('onBodyDragLeave', () => this.dragOver(false)) .on('onBodyDragLeave', () => this.dragOver(false))
.on('onSelect', (sUid, oData) => { .on('onSelect', (sUid, oData) => {
if (sUid && oData && 'message/rfc822' === oData.Type) { if (sUid && oData && 'message/rfc822' === oData.Type) {
MessageUserStore.messageListLoading(true); MessageUserStore.listLoading(true);
return true; return true;
} }

View file

@ -82,10 +82,10 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
this.attachmentsActions = AppUserStore.attachmentsActions; this.attachmentsActions = AppUserStore.attachmentsActions;
this.message = MessageUserStore.message; this.message = MessageUserStore.message;
// this.messageListChecked = MessageUserStore.messageListChecked; // this.messageListChecked = MessageUserStore.listChecked;
this.hasCheckedMessages = MessageUserStore.hasCheckedMessages; this.hasCheckedMessages = MessageUserStore.hasCheckedMessages;
this.messageListCheckedOrSelectedUidsWithSubMails = MessageUserStore.messageListCheckedOrSelectedUidsWithSubMails; this.messageListCheckedOrSelectedUidsWithSubMails = MessageUserStore.listCheckedOrSelectedUidsWithSubMails;
this.messageLoadingThrottle = MessageUserStore.messageLoadingThrottle; this.messageLoadingThrottle = MessageUserStore.messageLoading;
this.messagesBodiesDom = MessageUserStore.messagesBodiesDom; this.messagesBodiesDom = MessageUserStore.messagesBodiesDom;
this.useThreads = SettingsUserStore.useThreads; this.useThreads = SettingsUserStore.useThreads;
this.replySameFolder = SettingsUserStore.replySameFolder; this.replySameFolder = SettingsUserStore.replySameFolder;
@ -158,7 +158,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
) )
}, },
messageVisibility: () => !this.messageLoadingThrottle() && !!this.message(), messageVisibility: () => !MessageUserStore.messageLoading() && !!this.message(),
canBeRepliedOrForwarded: () => !this.isDraftFolder() && this.messageVisibility(), canBeRepliedOrForwarded: () => !this.isDraftFolder() && this.messageVisibility(),
@ -189,7 +189,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
messageFocused: () => Focused.MessageView === AppUserStore.focusedState(), messageFocused: () => Focused.MessageView === AppUserStore.focusedState(),
messageListAndMessageViewLoading: messageListAndMessageViewLoading:
() => MessageUserStore.messageListCompleteLoadingThrottle() || MessageUserStore.messageLoadingThrottle() () => MessageUserStore.listCompleteLoading() || MessageUserStore.messageLoading()
}); });
this.addSubscribables({ this.addSubscribables({
@ -255,7 +255,7 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
MessageUserStore.messageViewTrigger.subscribe(() => { MessageUserStore.messageViewTrigger.subscribe(() => {
const message = this.message(); const message = this.message();
message ? this.viewIsFlagged(message.isFlagged()) : this.viewIsFlagged(false); this.viewIsFlagged(message ? message.isFlagged() : false);
}); });
this.lastReplyAction(Local.get(ClientSideKeyName.LastReplyAction) || ComposeType.Reply); this.lastReplyAction(Local.get(ClientSideKeyName.LastReplyAction) || ComposeType.Reply);