mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 15:45:55 +08:00
Faster Selector.autoSelect
This commit is contained in:
parent
44ac2626ec
commit
0c87bbac21
|
@ -55,17 +55,15 @@ export class Selector {
|
||||||
|
|
||||||
this.listChecked.subscribe(items => {
|
this.listChecked.subscribe(items => {
|
||||||
if (items.length) {
|
if (items.length) {
|
||||||
if (null === koSelectedItem()) {
|
if (koSelectedItem()) {
|
||||||
if (koSelectedItem.valueHasMutated) {
|
|
||||||
koSelectedItem.valueHasMutated();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
koSelectedItem(null);
|
koSelectedItem(null);
|
||||||
|
} else {
|
||||||
|
koSelectedItem.valueHasMutated?.();
|
||||||
}
|
}
|
||||||
} else if (this.autoSelect() && koFocusedItem()) {
|
} else if (this.autoSelect()) {
|
||||||
koSelectedItem(koFocusedItem());
|
koSelectedItem(koFocusedItem());
|
||||||
}
|
}
|
||||||
}, this);
|
});
|
||||||
|
|
||||||
let selectedItemUseCallback = true;
|
let selectedItemUseCallback = true;
|
||||||
|
|
||||||
|
@ -78,9 +76,9 @@ export class Selector {
|
||||||
} else if (selectedItemUseCallback) {
|
} else if (selectedItemUseCallback) {
|
||||||
this.itemSelected();
|
this.itemSelected();
|
||||||
}
|
}
|
||||||
}, this);
|
});
|
||||||
|
|
||||||
koFocusedItem.subscribe(item => item && (this.sLastUid = this.getItemUid(item)), this);
|
koFocusedItem.subscribe(item => item && (this.sLastUid = this.getItemUid(item)));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Below code is used to keep checked/focused/selected states when array is refreshed.
|
* Below code is used to keep checked/focused/selected states when array is refreshed.
|
||||||
|
@ -176,7 +174,7 @@ export class Selector {
|
||||||
this.iFocusedNextHelper = 0;
|
this.iFocusedNextHelper = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isChecked && !koSelectedItem() && koFocusedItem() && this.autoSelect()) {
|
if (this.autoSelect() && !isChecked && !koSelectedItem()) {
|
||||||
koSelectedItem(koFocusedItem());
|
koSelectedItem(koFocusedItem());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -262,7 +260,7 @@ export class Selector {
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
autoSelect() {
|
autoSelect() {
|
||||||
return !!(this.oCallbacks.AutoSelect || (()=>1))();
|
return !!(this.oCallbacks.AutoSelect || (()=>1))() && this.focusedItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -35,7 +35,8 @@ const
|
||||||
rl.route.off();
|
rl.route.off();
|
||||||
hasher.replaceHash(hash);
|
hasher.replaceHash(hash);
|
||||||
rl.route.on();
|
rl.route.on();
|
||||||
}
|
},
|
||||||
|
disableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 });
|
||||||
|
|
||||||
export const MessagelistUserStore = ko.observableArray().extend({ debounce: 0 });
|
export const MessagelistUserStore = ko.observableArray().extend({ debounce: 0 });
|
||||||
|
|
||||||
|
@ -59,8 +60,6 @@ addObservablesTo(MessagelistUserStore, {
|
||||||
focusedMessage: null
|
focusedMessage: null
|
||||||
});
|
});
|
||||||
|
|
||||||
MessagelistUserStore.disableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 });
|
|
||||||
|
|
||||||
// Computed Observables
|
// Computed Observables
|
||||||
|
|
||||||
addComputablesTo(MessagelistUserStore, {
|
addComputablesTo(MessagelistUserStore, {
|
||||||
|
@ -162,6 +161,11 @@ MessagelistUserStore.notifyNewMessages = (folder, newMessages) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessagelistUserStore.canAutoSelect = () =>
|
||||||
|
!/is:unseen/.test(MessagelistUserStore.mainSearch())
|
||||||
|
&& !disableAutoSelect()
|
||||||
|
&& SettingsUserStore.usePreviewPane();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {boolean=} bDropPagePosition = false
|
* @param {boolean=} bDropPagePosition = false
|
||||||
* @param {boolean=} bDropCurrentFolderCache = false
|
* @param {boolean=} bDropCurrentFolderCache = false
|
||||||
|
@ -258,7 +262,7 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
|
||||||
MessageUserStore.message(null);
|
MessageUserStore.message(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
MessagelistUserStore.disableAutoSelect(true);
|
disableAutoSelect(true);
|
||||||
|
|
||||||
MessagelistUserStore(collection);
|
MessagelistUserStore(collection);
|
||||||
MessagelistUserStore.isIncomplete(false);
|
MessagelistUserStore.isIncomplete(false);
|
||||||
|
|
|
@ -175,7 +175,7 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
|
|
||||||
this.selector.on('ItemGetUid', message => (message ? message.generateUid() : ''));
|
this.selector.on('ItemGetUid', message => (message ? message.generateUid() : ''));
|
||||||
|
|
||||||
this.selector.on('AutoSelect', () => this.useAutoSelect());
|
this.selector.on('AutoSelect', () => MessagelistUserStore.canAutoSelect());
|
||||||
|
|
||||||
this.selector.on('UpOrDown', v => this.goToUpOrDown(v));
|
this.selector.on('UpOrDown', v => this.goToUpOrDown(v));
|
||||||
|
|
||||||
|
@ -366,12 +366,6 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
useAutoSelect() {
|
|
||||||
return !MessagelistUserStore.disableAutoSelect()
|
|
||||||
&& !/is:unseen/.test(MessagelistUserStore.mainSearch())
|
|
||||||
&& SettingsUserStore.usePreviewPane();
|
|
||||||
}
|
|
||||||
|
|
||||||
cancelSearch() {
|
cancelSearch() {
|
||||||
MessagelistUserStore.mainSearch('');
|
MessagelistUserStore.mainSearch('');
|
||||||
this.focusSearch(false);
|
this.focusSearch(false);
|
||||||
|
@ -649,7 +643,7 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
MessagelistUserStore.mainSearch(sLastSearchValue);
|
MessagelistUserStore.mainSearch(sLastSearchValue);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (MessageUserStore.message() && this.useAutoSelect()) {
|
if (MessageUserStore.message() && MessagelistUserStore.canAutoSelect()) {
|
||||||
isFullscreen() || toggleFullscreen();
|
isFullscreen() || toggleFullscreen();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ import { MessageModel } from 'Model/Message';
|
||||||
const
|
const
|
||||||
oMessageScrollerDom = () => elementById('messageItem') || {},
|
oMessageScrollerDom = () => elementById('messageItem') || {},
|
||||||
|
|
||||||
currentMessage = () => MessageUserStore.message();
|
currentMessage = MessageUserStore.message;
|
||||||
|
|
||||||
export class MailMessageView extends AbstractViewRight {
|
export class MailMessageView extends AbstractViewRight {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -85,7 +85,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
createCommand(() => {
|
createCommand(() => {
|
||||||
const message = currentMessage();
|
const message = currentMessage();
|
||||||
if (message) {
|
if (message) {
|
||||||
MessageUserStore.message(null);
|
currentMessage(null);
|
||||||
rl.app.deleteMessagesFromFolder(folderType, message.folder, [message.uid], useFolder);
|
rl.app.deleteMessagesFromFolder(folderType, message.folder, [message.uid], useFolder);
|
||||||
}
|
}
|
||||||
}, this.messageVisibility);
|
}, this.messageVisibility);
|
||||||
|
@ -219,24 +219,22 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
}
|
}
|
||||||
|
|
||||||
closeMessage() {
|
closeMessage() {
|
||||||
MessageUserStore.message(null);
|
currentMessage(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
messageEditCommand() {
|
messageEditCommand() {
|
||||||
if (currentMessage()) {
|
currentMessage() && showMessageComposer([ComposeType.Draft, currentMessage()]);
|
||||||
showMessageComposer([ComposeType.Draft, currentMessage()]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
goUpCommand() {
|
goUpCommand() {
|
||||||
fireEvent('mailbox.message-list.selector.go-up',
|
fireEvent('mailbox.message-list.selector.go-up',
|
||||||
SettingsUserStore.usePreviewPane() || !!currentMessage() // bForceSelect
|
!!currentMessage() // bForceSelect
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
goDownCommand() {
|
goDownCommand() {
|
||||||
fireEvent('mailbox.message-list.selector.go-down',
|
fireEvent('mailbox.message-list.selector.go-down',
|
||||||
SettingsUserStore.usePreviewPane() || !!currentMessage() // bForceSelect
|
!!currentMessage() // bForceSelect
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,7 +336,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
AppUserStore.focusedState(Scope.MessageList);
|
AppUserStore.focusedState(Scope.MessageList);
|
||||||
}
|
}
|
||||||
} else if (!preview) {
|
} else if (!preview) {
|
||||||
MessageUserStore.message(null);
|
currentMessage(null);
|
||||||
} else {
|
} else {
|
||||||
AppUserStore.focusedState(Scope.MessageList);
|
AppUserStore.focusedState(Scope.MessageList);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue