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 ? -
- This message contains blocked images. - Load Images - -
- : null), -
, - this.props.quickReply ? -
- -
- Quick Reply - Quick Reply All + (msg.blockedImages + ?
+ This message contains blocked images. + Load Images +
-
- : null + : null), + (msg.body_html + ?
+ :
{msg.body_text}
+ ), + (this.props.quickReply + ?
+ +
+ Quick Reply + Quick Reply All +
+
+ : null + ) ] : null}
} diff --git a/Store.js b/Store.js index 064304f..6ad9e00 100644 --- a/Store.js +++ b/Store.js @@ -112,5 +112,13 @@ var Store = module.exports = { messages: msgs } ]); }); + }, + + loadMessage: function(msgId, callback) + { + superagent.get('backend/message').query({ msgId: msgId }).end(function(err, res) + { + callback(res.body.msg); + }); } }; diff --git a/mail.css b/mail.css index 9533c49..ebc2b10 100644 --- a/mail.css +++ b/mail.css @@ -1231,6 +1231,11 @@ div margin: 0 0 .5em 0; } +.message-view .text.plain +{ + white-space: pre-wrap; +} + .message-view .blocked-images { flex: none;