mirror of https://github.com/vector-im/riot-web
Merge pull request #2990 from matrix-org/bwindels/editedmarker
Message editing: show (edited) marker on edited messages, with tooltippull/21833/head
commit
c48ecb66d9
|
@ -377,6 +377,14 @@ limitations under the License.
|
||||||
left: 41px;
|
left: 41px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_EventTile_content .mx_EventTile_edited {
|
||||||
|
user-select: none;
|
||||||
|
font-size: 12px;
|
||||||
|
color: $roomtopic-color;
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Various markdown overrides */
|
/* Various markdown overrides */
|
||||||
|
|
||||||
.mx_EventTile_content .markdown-body {
|
.mx_EventTile_content .markdown-body {
|
||||||
|
|
|
@ -22,6 +22,7 @@ import ReactDOM from 'react-dom';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import highlight from 'highlight.js';
|
import highlight from 'highlight.js';
|
||||||
import * as HtmlUtils from '../../../HtmlUtils';
|
import * as HtmlUtils from '../../../HtmlUtils';
|
||||||
|
import {formatDate} from '../../../DateUtils';
|
||||||
import sdk from '../../../index';
|
import sdk from '../../../index';
|
||||||
import ScalarAuthClient from '../../../ScalarAuthClient';
|
import ScalarAuthClient from '../../../ScalarAuthClient';
|
||||||
import Modal from '../../../Modal';
|
import Modal from '../../../Modal';
|
||||||
|
@ -148,6 +149,7 @@ module.exports = React.createClass({
|
||||||
nextProps.highlightLink !== this.props.highlightLink ||
|
nextProps.highlightLink !== this.props.highlightLink ||
|
||||||
nextProps.showUrlPreview !== this.props.showUrlPreview ||
|
nextProps.showUrlPreview !== this.props.showUrlPreview ||
|
||||||
nextState.links !== this.state.links ||
|
nextState.links !== this.state.links ||
|
||||||
|
nextState.editedMarkerHovered !== this.state.editedMarkerHovered ||
|
||||||
nextState.widgetHidden !== this.state.widgetHidden);
|
nextState.widgetHidden !== this.state.widgetHidden);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -432,6 +434,31 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onMouseEnterEditedMarker: function() {
|
||||||
|
this.setState({editedMarkerHovered: true});
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMouseLeaveEditedMarker: function() {
|
||||||
|
this.setState({editedMarkerHovered: false});
|
||||||
|
},
|
||||||
|
|
||||||
|
_renderEditedMarker: function() {
|
||||||
|
let editedTooltip;
|
||||||
|
if (this.state.editedMarkerHovered) {
|
||||||
|
const Tooltip = sdk.getComponent('elements.Tooltip');
|
||||||
|
const editEvent = this.props.mxEvent.replacingEvent();
|
||||||
|
const date = editEvent && formatDate(editEvent.getDate());
|
||||||
|
editedTooltip = <Tooltip label={_t("Edited at %(date)s.", {date})} />;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
key="editedMarker" className="mx_EventTile_edited"
|
||||||
|
onMouseEnter={this._onMouseEnterEditedMarker}
|
||||||
|
onMouseLeave={this._onMouseLeaveEditedMarker}
|
||||||
|
>{editedTooltip}<span>{`(${_t("Edited")})`}</span></div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
const EmojiText = sdk.getComponent('elements.EmojiText');
|
const EmojiText = sdk.getComponent('elements.EmojiText');
|
||||||
const mxEvent = this.props.mxEvent;
|
const mxEvent = this.props.mxEvent;
|
||||||
|
@ -443,6 +470,9 @@ module.exports = React.createClass({
|
||||||
// Part of Replies fallback support
|
// Part of Replies fallback support
|
||||||
stripReplyFallback: stripReply,
|
stripReplyFallback: stripReply,
|
||||||
});
|
});
|
||||||
|
if (this.props.replacingEventId) {
|
||||||
|
body = [body, this._renderEditedMarker()];
|
||||||
|
}
|
||||||
|
|
||||||
if (this.props.highlightLink) {
|
if (this.props.highlightLink) {
|
||||||
body = <a href={this.props.highlightLink}>{ body }</a>;
|
body = <a href={this.props.highlightLink}>{ body }</a>;
|
||||||
|
|
|
@ -916,6 +916,8 @@
|
||||||
"Failed to copy": "Failed to copy",
|
"Failed to copy": "Failed to copy",
|
||||||
"Add an Integration": "Add an Integration",
|
"Add an Integration": "Add an Integration",
|
||||||
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?",
|
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?",
|
||||||
|
"Edited at %(date)s.": "Edited at %(date)s.",
|
||||||
|
"Edited": "Edited",
|
||||||
"Removed or unknown message type": "Removed or unknown message type",
|
"Removed or unknown message type": "Removed or unknown message type",
|
||||||
"Message removed by %(userId)s": "Message removed by %(userId)s",
|
"Message removed by %(userId)s": "Message removed by %(userId)s",
|
||||||
"Message removed": "Message removed",
|
"Message removed": "Message removed",
|
||||||
|
|
Loading…
Reference in New Issue