diff --git a/FolderList.js b/FolderList.js index dc4f441..e2d5b2f 100644 --- a/FolderList.js +++ b/FolderList.js @@ -33,7 +33,7 @@ var FolderList = module.exports = React.createClass({ { var acc = this.props.accounts[accIndex]; var folder = this.props.accounts[accIndex].folders[folderIndex]; - if (folder.folderId) + if (folder.folderId && (this.state.selectedAccount != accIndex || this.state.selectedFolder != folderIndex)) Store.loadFolder(folder.folderId); this.setState({ selectedAccount: accIndex, selectedFolder: folderIndex }); }, diff --git a/MessageList.js b/MessageList.js index 155f94c..d45d4a6 100644 --- a/MessageList.js +++ b/MessageList.js @@ -1,6 +1,7 @@ const React = require('react'); const DropDownButton = require('./DropDownButton.js'); const ListWithSelection = require('./ListWithSelection.js'); +const Store = require('./Store.js'); const StoreListener = require('./StoreListener.js'); const Util = require('./Util.js'); @@ -92,14 +93,29 @@ var MessageList = React.createClass({ }, onSelectCurrent: function(index) { - var total = 0, p; - for (var i = 0; i < this.props.groups.length; i++) + var self = this; + var total = 0, p, msg, idx; + for (var i = 0; i < self.props.groups.length; i++) { p = total; - total += (i > 0 ? 1 : 0)+this.props.groups[i].messageCount; + total += (i > 0 ? 1 : 0)+self.props.groups[i].messageCount; if (index < total) { - Store.set('msg', this.props.groups[i].messages[index-p-(i > 0 ? 1 : 0)]); + idx = index-p-(i > 0 ? 1 : 0); + msg = self.props.groups[i].messages[idx]; + if (!msg.body_text && !msg.body_html) + { + Store.loadMessage(msg.id, function(newMsg) + { + Store.set('msg', newMsg); + if (self.props.groups[i] && self.props.groups[i].messages[idx] == msg) + { + self.props.groups[i].messages[idx] = newMsg; + } + }); + } + else + Store.set('msg', msg); break; } } diff --git a/MessageView.js b/MessageView.js index dbe6944..01c734a 100644 --- a/MessageView.js +++ b/MessageView.js @@ -69,23 +69,27 @@ var MessageView = React.createClass({ : null} , - (msg.blockedImages ? -