mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Simplify MessageUserStore
This commit is contained in:
parent
5e0f637b12
commit
227db0e0c3
10 changed files with 187 additions and 221 deletions
|
|
@ -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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue