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 => {
|
||||
if (items.length) {
|
||||
if (null === koSelectedItem()) {
|
||||
if (koSelectedItem.valueHasMutated) {
|
||||
koSelectedItem.valueHasMutated();
|
||||
}
|
||||
} else {
|
||||
if (koSelectedItem()) {
|
||||
koSelectedItem(null);
|
||||
} else {
|
||||
koSelectedItem.valueHasMutated?.();
|
||||
}
|
||||
} else if (this.autoSelect() && koFocusedItem()) {
|
||||
} else if (this.autoSelect()) {
|
||||
koSelectedItem(koFocusedItem());
|
||||
}
|
||||
}, this);
|
||||
});
|
||||
|
||||
let selectedItemUseCallback = true;
|
||||
|
||||
|
@ -78,9 +76,9 @@ export class Selector {
|
|||
} else if (selectedItemUseCallback) {
|
||||
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.
|
||||
|
@ -176,7 +174,7 @@ export class Selector {
|
|||
this.iFocusedNextHelper = 0;
|
||||
}
|
||||
|
||||
if (!isChecked && !koSelectedItem() && koFocusedItem() && this.autoSelect()) {
|
||||
if (this.autoSelect() && !isChecked && !koSelectedItem()) {
|
||||
koSelectedItem(koFocusedItem());
|
||||
}
|
||||
}
|
||||
|
@ -262,7 +260,7 @@ export class Selector {
|
|||
* @returns {boolean}
|
||||
*/
|
||||
autoSelect() {
|
||||
return !!(this.oCallbacks.AutoSelect || (()=>1))();
|
||||
return !!(this.oCallbacks.AutoSelect || (()=>1))() && this.focusedItem();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -35,7 +35,8 @@ const
|
|||
rl.route.off();
|
||||
hasher.replaceHash(hash);
|
||||
rl.route.on();
|
||||
}
|
||||
},
|
||||
disableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 });
|
||||
|
||||
export const MessagelistUserStore = ko.observableArray().extend({ debounce: 0 });
|
||||
|
||||
|
@ -59,8 +60,6 @@ addObservablesTo(MessagelistUserStore, {
|
|||
focusedMessage: null
|
||||
});
|
||||
|
||||
MessagelistUserStore.disableAutoSelect = ko.observable(false).extend({ falseTimeout: 500 });
|
||||
|
||||
// Computed Observables
|
||||
|
||||
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=} bDropCurrentFolderCache = false
|
||||
|
@ -258,7 +262,7 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
|
|||
MessageUserStore.message(null);
|
||||
}
|
||||
|
||||
MessagelistUserStore.disableAutoSelect(true);
|
||||
disableAutoSelect(true);
|
||||
|
||||
MessagelistUserStore(collection);
|
||||
MessagelistUserStore.isIncomplete(false);
|
||||
|
|
|
@ -175,7 +175,7 @@ export class MailMessageList extends AbstractViewRight {
|
|||
|
||||
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));
|
||||
|
||||
|
@ -366,12 +366,6 @@ export class MailMessageList extends AbstractViewRight {
|
|||
return true;
|
||||
}
|
||||
|
||||
useAutoSelect() {
|
||||
return !MessagelistUserStore.disableAutoSelect()
|
||||
&& !/is:unseen/.test(MessagelistUserStore.mainSearch())
|
||||
&& SettingsUserStore.usePreviewPane();
|
||||
}
|
||||
|
||||
cancelSearch() {
|
||||
MessagelistUserStore.mainSearch('');
|
||||
this.focusSearch(false);
|
||||
|
@ -649,7 +643,7 @@ export class MailMessageList extends AbstractViewRight {
|
|||
MessagelistUserStore.mainSearch(sLastSearchValue);
|
||||
return false;
|
||||
}
|
||||
if (MessageUserStore.message() && this.useAutoSelect()) {
|
||||
if (MessageUserStore.message() && MessagelistUserStore.canAutoSelect()) {
|
||||
isFullscreen() || toggleFullscreen();
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ import { MessageModel } from 'Model/Message';
|
|||
const
|
||||
oMessageScrollerDom = () => elementById('messageItem') || {},
|
||||
|
||||
currentMessage = () => MessageUserStore.message();
|
||||
currentMessage = MessageUserStore.message;
|
||||
|
||||
export class MailMessageView extends AbstractViewRight {
|
||||
constructor() {
|
||||
|
@ -85,7 +85,7 @@ export class MailMessageView extends AbstractViewRight {
|
|||
createCommand(() => {
|
||||
const message = currentMessage();
|
||||
if (message) {
|
||||
MessageUserStore.message(null);
|
||||
currentMessage(null);
|
||||
rl.app.deleteMessagesFromFolder(folderType, message.folder, [message.uid], useFolder);
|
||||
}
|
||||
}, this.messageVisibility);
|
||||
|
@ -219,24 +219,22 @@ export class MailMessageView extends AbstractViewRight {
|
|||
}
|
||||
|
||||
closeMessage() {
|
||||
MessageUserStore.message(null);
|
||||
currentMessage(null);
|
||||
}
|
||||
|
||||
messageEditCommand() {
|
||||
if (currentMessage()) {
|
||||
showMessageComposer([ComposeType.Draft, currentMessage()]);
|
||||
}
|
||||
currentMessage() && showMessageComposer([ComposeType.Draft, currentMessage()]);
|
||||
}
|
||||
|
||||
goUpCommand() {
|
||||
fireEvent('mailbox.message-list.selector.go-up',
|
||||
SettingsUserStore.usePreviewPane() || !!currentMessage() // bForceSelect
|
||||
!!currentMessage() // bForceSelect
|
||||
);
|
||||
}
|
||||
|
||||
goDownCommand() {
|
||||
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);
|
||||
}
|
||||
} else if (!preview) {
|
||||
MessageUserStore.message(null);
|
||||
currentMessage(null);
|
||||
} else {
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue