mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 07:35:55 +08:00
Cleanup and simplify messageList UpOrDown
handling
This commit is contained in:
parent
8841464f84
commit
231ccb1e43
|
@ -118,7 +118,8 @@ export class Selector {
|
||||||
|
|
||||||
if (isArray(aItems)) {
|
if (isArray(aItems)) {
|
||||||
let temp,
|
let temp,
|
||||||
isChecked;
|
isChecked,
|
||||||
|
next = this.iFocusedNextHelper || this.iSelectNextHelper;
|
||||||
|
|
||||||
aItems.forEach(item => {
|
aItems.forEach(item => {
|
||||||
const uid = this.getItemUid(item);
|
const uid = this.getItemUid(item);
|
||||||
|
@ -143,24 +144,10 @@ export class Selector {
|
||||||
|
|
||||||
selectedItemUseCallback = true;
|
selectedItemUseCallback = true;
|
||||||
|
|
||||||
if (
|
if (next && aItems.length && !koFocusedItem()) {
|
||||||
(this.iSelectNextHelper || this.iFocusedNextHelper) &&
|
temp = aItems[-1 === next ? aItems.length - 1 : 0];
|
||||||
aItems.length &&
|
|
||||||
!koFocusedItem()
|
|
||||||
) {
|
|
||||||
temp = null;
|
|
||||||
if (this.iFocusedNextHelper) {
|
|
||||||
temp = aItems[-1 === this.iFocusedNextHelper ? aItems.length - 1 : 0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!temp && this.iSelectNextHelper) {
|
|
||||||
temp = aItems[-1 === this.iSelectNextHelper ? aItems.length - 1 : 0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (temp) {
|
if (temp) {
|
||||||
if (this.iSelectNextHelper) {
|
this.iSelectNextHelper && koSelectedItem(temp);
|
||||||
koSelectedItem(temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
koFocusedItem(temp);
|
koFocusedItem(temp);
|
||||||
|
|
||||||
|
@ -267,10 +254,11 @@ export class Selector {
|
||||||
* @param {boolean=} bForceSelect = false
|
* @param {boolean=} bForceSelect = false
|
||||||
*/
|
*/
|
||||||
newSelectPosition(sEventKey, bShiftKey, bForceSelect) {
|
newSelectPosition(sEventKey, bShiftKey, bForceSelect) {
|
||||||
let isArrow = 'ArrowUp' === sEventKey || 'ArrowDown' === sEventKey,
|
let result;
|
||||||
result;
|
|
||||||
|
|
||||||
const pageStep = 10,
|
const up = 'ArrowUp' === sEventKey,
|
||||||
|
isArrow = up || 'ArrowDown' === sEventKey,
|
||||||
|
pageStep = 10,
|
||||||
list = this.list(),
|
list = this.list(),
|
||||||
listLen = list.length,
|
listLen = list.length,
|
||||||
focused = this.focusedItem();
|
focused = this.focusedItem();
|
||||||
|
@ -282,8 +270,7 @@ export class Selector {
|
||||||
} else if (listLen) {
|
} else if (listLen) {
|
||||||
if (focused) {
|
if (focused) {
|
||||||
if (isArrow) {
|
if (isArrow) {
|
||||||
let i = list.indexOf(focused),
|
let i = list.indexOf(focused);
|
||||||
up = 'ArrowUp' == sEventKey;
|
|
||||||
if (bShiftKey) {
|
if (bShiftKey) {
|
||||||
shiftStart = -1 < shiftStart ? shiftStart : i;
|
shiftStart = -1 < shiftStart ? shiftStart : i;
|
||||||
shiftStart == i
|
shiftStart == i
|
||||||
|
|
|
@ -120,8 +120,7 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
return value ? i18n('MESSAGE_LIST/SEARCH_RESULT_FOR', { SEARCH: value }) : ''
|
return value ? i18n('MESSAGE_LIST/SEARCH_RESULT_FOR', { SEARCH: value }) : ''
|
||||||
},
|
},
|
||||||
|
|
||||||
messageListPaginator: computedPaginatorHelper(MessagelistUserStore.page,
|
messageListPaginator: computedPaginatorHelper(MessagelistUserStore.page, MessagelistUserStore.pageCount),
|
||||||
MessagelistUserStore.pageCount),
|
|
||||||
|
|
||||||
checkAll: {
|
checkAll: {
|
||||||
read: () => MessagelistUserStore.hasChecked(),
|
read: () => MessagelistUserStore.hasChecked(),
|
||||||
|
@ -257,47 +256,22 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.selector.on('UpOrDown', up => {
|
this.selector.on('UpOrDown', up => {
|
||||||
if (MessagelistUserStore.hasChecked()) {
|
if (!MessagelistUserStore.hasChecked()) {
|
||||||
return false;
|
clearTimeout(iGoToUpOrDownTimeout);
|
||||||
|
iGoToUpOrDownTimeout = setTimeout(() => {
|
||||||
|
let page = MessagelistUserStore.page();
|
||||||
|
up ? --page : ++page;
|
||||||
|
if (page > 0 && page <= MessagelistUserStore.pageCount()) {
|
||||||
|
if (SettingsUserStore.usePreviewPane() || MessageUserStore.message()) {
|
||||||
|
this.selector.iSelectNextHelper = up ? -1 : 1;
|
||||||
|
} else {
|
||||||
|
this.selector.iFocusedNextHelper = up ? -1 : 1;
|
||||||
|
}
|
||||||
|
this.selector.unselect();
|
||||||
|
this.gotoPage(page);
|
||||||
|
}
|
||||||
|
}, 350);
|
||||||
}
|
}
|
||||||
|
|
||||||
clearTimeout(iGoToUpOrDownTimeout);
|
|
||||||
iGoToUpOrDownTimeout = setTimeout(() => {
|
|
||||||
let prev, next, temp, current;
|
|
||||||
|
|
||||||
this.messageListPaginator().find(item => {
|
|
||||||
if (item) {
|
|
||||||
if (current) {
|
|
||||||
next = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.current) {
|
|
||||||
current = item;
|
|
||||||
prev = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (next) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
temp = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (up ? prev : next) {
|
|
||||||
if (SettingsUserStore.usePreviewPane() || MessageUserStore.message()) {
|
|
||||||
this.selector.iSelectNextHelper = up ? -1 : 1;
|
|
||||||
} else {
|
|
||||||
this.selector.iFocusedNextHelper = up ? -1 : 1;
|
|
||||||
}
|
|
||||||
this.selector.unselect();
|
|
||||||
this.gotoPage(up ? prev : next);
|
|
||||||
}
|
|
||||||
}, 350);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
addEventListener('mailbox.message-list.selector.go-down',
|
addEventListener('mailbox.message-list.selector.go-down',
|
||||||
|
@ -547,7 +521,7 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
page && hasher.setHash(
|
page && hasher.setHash(
|
||||||
mailBox(
|
mailBox(
|
||||||
FolderUserStore.currentFolderFullNameHash(),
|
FolderUserStore.currentFolderFullNameHash(),
|
||||||
page.value,
|
page,
|
||||||
MessagelistUserStore.listSearch(),
|
MessagelistUserStore.listSearch(),
|
||||||
MessagelistUserStore.threadUid()
|
MessagelistUserStore.threadUid()
|
||||||
)
|
)
|
||||||
|
@ -601,16 +575,16 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
toggleLeftPanel();
|
toggleLeftPanel();
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.isMobile() && leftPanelDisabled(true);
|
ThemeStore.isMobile() && leftPanelDisabled(true);
|
||||||
|
|
||||||
|
if (eqs(event, '.messageList') && ScopeMessageView === AppUserStore.focusedState()) {
|
||||||
|
AppUserStore.focusedState(ScopeMessageList);
|
||||||
|
}
|
||||||
|
|
||||||
|
let el = eqs(event, '.e-paginator a');
|
||||||
|
el && this.gotoPage(ko.dataFor(el)?.value);
|
||||||
|
|
||||||
|
eqs(event, '.checkboxCheckAll') && this.checkAll(!this.checkAll());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eqs(event, '.messageList') && ScopeMessageView === AppUserStore.focusedState()) {
|
|
||||||
AppUserStore.focusedState(ScopeMessageList);
|
|
||||||
}
|
|
||||||
|
|
||||||
let el = eqs(event, '.e-paginator a');
|
|
||||||
el && this.gotoPage(ko.dataFor(el));
|
|
||||||
|
|
||||||
eqs(event, '.checkboxCheckAll') && this.checkAll(!this.checkAll());
|
|
||||||
},
|
},
|
||||||
dblclick: event => {
|
dblclick: event => {
|
||||||
let el = eqs(event, '.messageListItem');
|
let el = eqs(event, '.messageListItem');
|
||||||
|
|
Loading…
Reference in a new issue