Add and impl resend button. Update UI when failing to send messages.

This commit is contained in:
Kegan Dougal 2015-07-21 18:05:22 +01:00
parent e0496305aa
commit 2160440ff1
5 changed files with 39 additions and 2 deletions

View File

@ -74,3 +74,7 @@ limitations under the License.
.mx_MessageTile_highlight {
color: #00f;
}
.mx_MessageTile_msgOption {
float: right;
}

View File

@ -57,8 +57,7 @@ module.exports = React.createClass({
mx_MessageTile_continuation: this.props.continuation,
});
var timestamp = this.props.last ? <MessageTimestamp ts={this.props.mxEvent.getTs()} /> : null;
var avatar;
var sender;
var avatar, sender, resend;
if (!this.props.continuation) {
avatar = (
<div className="mx_MessageTile_avatar">
@ -67,10 +66,16 @@ module.exports = React.createClass({
);
sender = <SenderProfile mxEvent={this.props.mxEvent} />;
}
if (this.props.mxEvent.status === "not_sent" && !this.state.resending) {
resend = <button className="mx_MessageTile_msgOption" onClick={this.onResend}>
Resend
</button>;
}
return (
<div className={classes}>
{ avatar }
{ timestamp }
{ resend }
{ sender }
<TileType mxEvent={this.props.mxEvent} />
</div>

View File

@ -232,6 +232,10 @@ module.exports = {
dis.dispatch({
action: 'message_sent'
});
}, function() {
dis.dispatch({
action: 'message_send_failed'
});
});
this.refs.textarea.getDOMNode().value = '';
ev.preventDefault();

View File

@ -23,6 +23,28 @@ module.exports = {
var actions = MatrixClientPeg.get().getPushActionsForEvent(this.props.mxEvent);
if (!actions || !actions.tweaks) { return false; }
return actions.tweaks.highlight;
},
getInitialState: function() {
return {
resending: false
};
},
onResend: function() {
var self = this;
self.setState({
resending: true
});
MatrixClientPeg.get().resendEvent(
this.props.mxEvent, MatrixClientPeg.get().getRoom(
this.props.mxEvent.getRoomId()
)
).finally(function() {
self.setState({
resending: false
});
})
}
};

View File

@ -79,10 +79,12 @@ module.exports = {
onAction: function(payload) {
switch (payload.action) {
case 'message_send_failed':
case 'message_sent':
this.setState({
room: MatrixClientPeg.get().getRoom(this.props.roomId)
});
this.forceUpdate();
break;
case'notifier_enabled':
this.forceUpdate();