diff --git a/src/components/views/messages/MessageActionBar.js b/src/components/views/messages/MessageActionBar.js index 513f21b8b7..c94f296eac 100644 --- a/src/components/views/messages/MessageActionBar.js +++ b/src/components/views/messages/MessageActionBar.js @@ -18,6 +18,7 @@ limitations under the License. import React, {useEffect} from 'react'; import PropTypes from 'prop-types'; +import { EventStatus } from 'matrix-js-sdk'; import { _t } from '../../../languageHandler'; import * as sdk from '../../../index'; @@ -114,13 +115,19 @@ export default class MessageActionBar extends React.PureComponent { static contextType = RoomContext; componentDidMount() { - this.props.mxEvent.on("Event.decrypted", this.onDecrypted); + if (this.props.mxEvent.status && this.props.mxEvent.status !== EventStatus.SENT) { + this.props.mxEvent.on("Event.status", this.onSent); + } + if (this.props.mxEvent.isBeingDecrypted()) { + this.props.mxEvent.once("Event.decrypted", this.onDecrypted); + } this.props.mxEvent.on("Event.beforeRedaction", this.onBeforeRedaction); } componentWillUnmount() { - this.props.mxEvent.removeListener("Event.decrypted", this.onDecrypted); - this.props.mxEvent.removeListener("Event.beforeRedaction", this.onBeforeRedaction); + this.props.mxEvent.off("Event.status", this.onSent); + this.props.mxEvent.off("Event.decrypted", this.onDecrypted); + this.props.mxEvent.off("Event.beforeRedaction", this.onBeforeRedaction); } onDecrypted = () => { @@ -134,6 +141,11 @@ export default class MessageActionBar extends React.PureComponent { this.forceUpdate(); }; + onSent = () => { + // When an event is sent and echoed the possible actions change. + this.forceUpdate(); + }; + onFocusChange = (focused) => { if (!this.props.onFocusChange) { return;