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

save currently active message as object instead of its ID

parent c189b070
No related branches found
No related tags found
No related merge requests found
......@@ -46,7 +46,7 @@ define(function(require) {
_.defaults(options, defaultOptions);
// Do not reload email when clicking same again
if (require('state').currentMessageId === message.get('id')) {
if (require('state').currentMessage && require('state').currentMessage.get('id') === message.get('id')) {
return;
}
......@@ -67,10 +67,10 @@ define(function(require) {
// close email first
// Check if message is open
if (require('state').currentMessageId !== null) {
var lastMessageId = require('state').currentMessageId;
if (require('state').currentMessage !== null) {
var lastMessage = require('state').currentMessage;
Radio.ui.trigger('messagesview:message:setactive', null);
if (lastMessageId === message.get('id')) {
if (lastMessage.get('id') === message.get('id')) {
return;
}
}
......
......@@ -19,7 +19,7 @@ define(function(require) {
var accounts = new AccountCollection();
var currentAccount = null;
var currentFolder = null;
var currentMessageId = null;
var currentMessage = null;
var currentMessageSubject = null;
var currentMessageBody = '';
var messagesLoading = null;
......@@ -54,12 +54,12 @@ define(function(require) {
}
}
},
currentMessageId: {
currentMessage: {
get: function() {
return currentMessageId;
return currentMessage;
},
set: function(newId) {
currentMessageId = newId;
set: function(newMessage) {
currentMessage = newMessage;
}
},
currentMessageSubject: {
......
......@@ -98,7 +98,7 @@ define(function(require) {
if (!nextMessage) {
nextMessage = thisModelCollection.at(index + 1);
}
if (require('state').currentMessageId === thisModel.id) {
if (require('state').currentMessage && require('state').currentMessage.get('id') === thisModel.id) {
if (nextMessage) {
var nextAccount = require('state').currentAccount;
var nextFolder = require('state').currentFolder;
......
......@@ -34,7 +34,7 @@ define(function(require) {
childView: MessagesItemView,
childViewContainer: '#mail-message-list',
template: Handlebars.compile(MessageListTemplate),
currentMessageId: null,
currentMessage: null,
loadingMore: false,
reloaded: false,
filterCriteria: null,
......@@ -74,36 +74,38 @@ define(function(require) {
Radio.message.trigger('flag', account, folder, message, flag, val);
}
},
setActiveMessage: function(messageId) {
// Set active class for current message and remove it from old one
var message = null;
if (this.currentMessageId !== null) {
message = this.collection.get(this.currentMessageId);
if (message) {
message.set('active', false);
/**
* Set active class for current message and remove it from old one
*
* @param {Message} message
*/
setActiveMessage: function(message) {
var oldMessage = null;
if (this.currentMessage !== null) {
// TODO: make sure objects exist only once and compare references instead
oldMessage = this.collection.get(this.currentMessage.get('id'));
if (oldMessage) {
oldMessage.set('active', false);
}
}
this.currentMessageId = messageId;
if (messageId !== null) {
message = this.collection.get(this.currentMessageId);
this.currentMessage = message;
if (message !== null) {
message = this.collection.get(this.currentMessage);
if (message) {
message.set('active', true);
}
}
require('state').currentMessageId = messageId;
require('state').currentMessage = message;
Radio.ui.trigger('title:update');
},
selectNextMessage: function() {
if (this.currentMessageId === null) {
if (this.currentMessage === null) {
return;
}
var message = this.collection.get(this.currentMessageId);
var message = this.collection.get(this.currentMessage);
if (message === null) {
return;
}
......@@ -123,11 +125,11 @@ define(function(require) {
}
},
selectPreviousMessage: function() {
if (this.currentMessageId === null) {
if (this.currentMessage === null) {
return;
}
var message = this.collection.get(this.currentMessageId);
var message = this.collection.get(this.currentMessage);
if (message === null) {
return;
}
......@@ -218,7 +220,7 @@ define(function(require) {
});
$.when(loadingMessages).done(function() {
Radio.ui.trigger('messagesview:message:setactive', require('state').currentMessageId);
Radio.ui.trigger('messagesview:message:setactive', require('state').currentMessage);
});
$.when(loadingMessages).fail(function() {
......
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