Skip to content
Snippets Groups Projects
Unverified Commit d00486f9 authored by Christoph Wurst's avatar Christoph Wurst
Browse files

allow navigation with j, k

parent 2d0d10d5
No related branches found
No related tags found
No related merge requests found
......@@ -152,9 +152,22 @@ define(function(require) {
this.message.show(new LoadingView());
},
onKeyUp: function(key) {
if (key === 46) {
// Mimic a client clicking the delete button for the currently active message.
$('.mail-message-summary.active .icon-delete.action.delete').click();
console.log(key);
switch (key) {
case 46:
// Mimic a client clicking the delete button for the currently active message.
$('.mail-message-summary.active .icon-delete.action.delete').
click();
break;
case 74:
// 'j' -> next message
Radio.message.trigger('messagesview:message:next');
console.log('j');
break;
case 75:
// 'k' -> previous message
Radio.message.trigger('messagesview:message:prev');
break;
}
}
});
......
......@@ -54,6 +54,8 @@ define(function(require) {
this.listenTo(Radio.ui, 'messagesview:filter', this.filterCurrentMailbox);
this.listenTo(Radio.ui, 'messagesview:filter:clear', this.clearFilter);
this.listenTo(Radio.ui, 'messagesview:message:setactive', this.setActiveMessage);
this.listenTo(Radio.message, 'messagesview:message:next', this.selectNextMessage);
this.listenTo(Radio.message, 'messagesview:message:prev', this.selectPreviousMessage);
},
onShow: function() {
this.$scrollContainer = this.$el.parent();
......@@ -104,6 +106,54 @@ define(function(require) {
require('state').folderView.updateTitle();
},
selectNextMessage: function() {
if (this.currentMessageId === null) {
return;
}
var message = this.collection.get(this.currentMessageId);
if (message === null) {
return;
}
if (this.collection.indexOf(message) === (this.collection.length - 1)) {
// Last message, nothing to do
return;
}
var nextMessage = this.collection.at(this.collection.indexOf(message) + 1);
if (nextMessage) {
var account = require('state').currentAccount;
var folder = require('state').currentFolder;
Radio.message.trigger('load', account, folder, nextMessage, {
force: true
});
}
},
selectPreviousMessage: function() {
if (this.currentMessageId === null) {
return;
}
var message = this.collection.get(this.currentMessageId);
if (message === null) {
return;
}
if (this.collection.indexOf(message) === 0) {
// First message, nothing to do
return;
}
var previousMessage = this.collection.at(this.collection.indexOf(message) - 1);
if (previousMessage) {
var account = require('state').currentAccount;
var folder = require('state').currentFolder;
Radio.message.trigger('load', account, folder, previousMessage, {
force: true
});
}
},
loadNew: function() {
if (!require('state').currentAccount) {
return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment