Load message texts from server
parent
f4c1473c3b
commit
ca8e1feb9e
|
@ -33,7 +33,7 @@ var FolderList = module.exports = React.createClass({
|
||||||
{
|
{
|
||||||
var acc = this.props.accounts[accIndex];
|
var acc = this.props.accounts[accIndex];
|
||||||
var folder = this.props.accounts[accIndex].folders[folderIndex];
|
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);
|
Store.loadFolder(folder.folderId);
|
||||||
this.setState({ selectedAccount: accIndex, selectedFolder: folderIndex });
|
this.setState({ selectedAccount: accIndex, selectedFolder: folderIndex });
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
const DropDownButton = require('./DropDownButton.js');
|
const DropDownButton = require('./DropDownButton.js');
|
||||||
const ListWithSelection = require('./ListWithSelection.js');
|
const ListWithSelection = require('./ListWithSelection.js');
|
||||||
|
const Store = require('./Store.js');
|
||||||
const StoreListener = require('./StoreListener.js');
|
const StoreListener = require('./StoreListener.js');
|
||||||
const Util = require('./Util.js');
|
const Util = require('./Util.js');
|
||||||
|
|
||||||
|
@ -92,14 +93,29 @@ var MessageList = React.createClass({
|
||||||
},
|
},
|
||||||
onSelectCurrent: function(index)
|
onSelectCurrent: function(index)
|
||||||
{
|
{
|
||||||
var total = 0, p;
|
var self = this;
|
||||||
for (var i = 0; i < this.props.groups.length; i++)
|
var total = 0, p, msg, idx;
|
||||||
|
for (var i = 0; i < self.props.groups.length; i++)
|
||||||
{
|
{
|
||||||
p = total;
|
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)
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,23 +69,27 @@ var MessageView = React.createClass({
|
||||||
: null}
|
: null}
|
||||||
</div>
|
</div>
|
||||||
</div>,
|
</div>,
|
||||||
(msg.blockedImages ?
|
(msg.blockedImages
|
||||||
<div className="blocked-images">
|
? <div className="blocked-images">
|
||||||
<img src="icons/block.png" /> This message contains blocked images.
|
<img src="icons/block.png" /> This message contains blocked images.
|
||||||
<a className="button raised">Load Images</a>
|
<a className="button raised">Load Images</a>
|
||||||
<label><input type="checkbox" /> Always load from {msg.from}</label>
|
<label><input type="checkbox" /> Always load from {msg.from}</label>
|
||||||
</div>
|
|
||||||
: null),
|
|
||||||
<div className="text" dangerouslySetInnerHTML={{ __html: msg.body_html }}></div>,
|
|
||||||
this.props.quickReply ?
|
|
||||||
<div className="quick-reply">
|
|
||||||
<textarea></textarea>
|
|
||||||
<div className="btns">
|
|
||||||
<a className="button"><img src="icons/mail_send.png" /> Quick Reply</a>
|
|
||||||
<a className="button"><img src="icons/mail_reply_all.png" /> Quick Reply All</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
: null),
|
||||||
: null
|
(msg.body_html
|
||||||
|
? <div className="text" dangerouslySetInnerHTML={{ __html: msg.body_html }}></div>
|
||||||
|
: <div className="text plain">{msg.body_text}</div>
|
||||||
|
),
|
||||||
|
(this.props.quickReply
|
||||||
|
? <div className="quick-reply">
|
||||||
|
<textarea></textarea>
|
||||||
|
<div className="btns">
|
||||||
|
<a className="button"><img src="icons/mail_send.png" /> Quick Reply</a>
|
||||||
|
<a className="button"><img src="icons/mail_reply_all.png" /> Quick Reply All</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
: null
|
||||||
|
)
|
||||||
] : null}
|
] : null}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
8
Store.js
8
Store.js
|
@ -112,5 +112,13 @@ var Store = module.exports = {
|
||||||
messages: msgs
|
messages: msgs
|
||||||
} ]);
|
} ]);
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
loadMessage: function(msgId, callback)
|
||||||
|
{
|
||||||
|
superagent.get('backend/message').query({ msgId: msgId }).end(function(err, res)
|
||||||
|
{
|
||||||
|
callback(res.body.msg);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue