Conditionally show To/Cc when present.

This commit is contained in:
Bill Thiede 2014-04-16 23:33:36 -07:00
parent 4063b48df7
commit b666e89f2c
2 changed files with 47 additions and 18 deletions

View File

@ -11,7 +11,7 @@ var App = React.createClass({
}, },
componentWillMount: function() { componentWillMount: function() {
$.get(this.state.source, function(result) { $.getJSON(this.state.source, function(result) {
this.setState({folderContent: result}); this.setState({folderContent: result});
this.setMessage(result[0]); this.setMessage(result[0]);
}.bind(this)); }.bind(this));

View File

@ -1,5 +1,20 @@
/** @jsx React.DOM */ /** @jsx React.DOM */
var Addresses = React.createClass({
render: function() {
var addrs = this.props.values || null;
var value;
if (addrs == null) {
return (<span></span>);
} else if (Array.isArray(addrs)) {
value = addrs.map(function(t) { return t.Address; }).join(", ");
} else {
value = addrs.Address;
}
return (<p className="email-content-subtitle">{this.props.headerName}: <a>{value}</a></p>)
}
});
var MainView = React.createClass({ var MainView = React.createClass({
getInitialState: function() { getInitialState: function() {
return { return {
@ -7,24 +22,38 @@ var MainView = React.createClass({
}; };
}, },
render: function() { componentWillReceiveProps: function(nextProps) {
$.get("/raw/" + this.props.message.Hash, function(data) { this.setMessageHash(nextProps.message.Hash);
},
componentDidMount: function() {
this.setMessageHash(this.props.message.Hash);
},
setMessageHash: function(hash) {
$.get("/raw/" + hash , function(data) {
var body = data.substring(data.indexOf('\n\n')+2); var body = data.substring(data.indexOf('\n\n')+2);
this.setState({body: body}); this.setState({body: body});
}.bind(this)); }.bind(this));
},
render: function() {
// TODO: // TODO:
// - trim 'Re:' from messages and group/thread them. // - trim 'Re:' from messages and group/thread them.
var m = this.props.message; var m = this.props.message;
var tos = (m.To||[]).map(function(t) { return t.Address; }).join(', ');
var ccs = (m.Cc||[]).map(function(t) { return t.Address; }).join(', ');
return ( return (
<div id="main" className="pure-u-1"> <div id="main" className="pure-u-1">
<div className="email-content"> <div className="email-content">
<div className="email-content-header pure-g"> <div className="email-content-header pure-g">
<div className="pure-u-1"> <div className="pure-u-1">
<h1 className="email-content-title">{m.Subject}</h1> <h1 className="email-content-title">{m.Subject}</h1>
<p className="email-content-subtitle"> <Addresses headerName="From" values={m.From}/>
From <a>{m.From}</a> at <span className="date">{m.Date.toLocaleString()}</span> <Addresses headerName="To" values={m.To}/>
</p> <Addresses headerName="Cc" values={m.Cc}/>
<p className="email-content-subtitle">Date: {m.Date.toLocaleString()}</p>
<p className="email-content-subtitle">X-Xinu-Hash: {m.Hash}</p>
</div> </div>
<div className="email-content-controls pure-u-1"> <div className="email-content-controls pure-u-1">