Merge pull request #2973 from matrix-org/bwindels/message-edit-editor2

Message editing: adjust to js-sdk changes of marking original event as replaced
pull/21833/head
Bruno Windels 2019-05-15 14:11:52 +00:00 committed by GitHub
commit 76570beb3c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 11 additions and 5 deletions

View File

@ -526,6 +526,7 @@ module.exports = React.createClass({
<EventTile mxEvent={mxEv}
continuation={continuation}
isRedacted={mxEv.isRedacted()}
replacingEventId={mxEv.replacingEventId()}
onHeightChanged={this._onHeightChanged}
readReceipts={readReceipts}
readReceiptMap={this._readReceiptMap}

View File

@ -507,7 +507,7 @@ const TimelinePanel = React.createClass({
this.forceUpdate();
},
onRoomReplaceEvent: function(replacedEvent, newEvent, room) {
onRoomReplaceEvent: function(replacedEvent, room) {
if (this.unmounted) return;
// ignore events for other rooms
@ -515,7 +515,7 @@ const TimelinePanel = React.createClass({
// we could skip an update if the event isn't in our timeline,
// but that's probably an early optimisation.
this._reloadEvents();
this.forceUpdate();
},
onRoomReceipt: function(ev, room) {

View File

@ -118,7 +118,7 @@ export default class MessageEditor extends React.Component {
"m.new_content": newContent,
"m.relates_to": {
"rel_type": "m.replace",
"event_id": this.props.event.getOriginalId(),
"event_id": this.props.event.getId(),
},
}, newContent);

View File

@ -89,6 +89,7 @@ module.exports = React.createClass({
showUrlPreview={this.props.showUrlPreview}
tileShape={this.props.tileShape}
maxImageHeight={this.props.maxImageHeight}
replacingEventId={this.props.replacingEventId}
onHeightChanged={this.props.onHeightChanged} />;
},
});

View File

@ -137,6 +137,7 @@ module.exports = React.createClass({
// exploit that events are immutable :)
return (nextProps.mxEvent.getId() !== this.props.mxEvent.getId() ||
nextProps.highlights !== this.props.highlights ||
nextProps.replacingEventId !== this.props.replacingEventId ||
nextProps.highlightLink !== this.props.highlightLink ||
nextProps.showUrlPreview !== this.props.showUrlPreview ||
nextState.links !== this.state.links ||

View File

@ -779,6 +779,7 @@ module.exports = withMatrixClient(React.createClass({
{ thread }
<EventTileType ref="tile"
mxEvent={this.props.mxEvent}
replacingEventId={this.props.replacingEventId}
highlights={this.props.highlights}
highlightLink={this.props.highlightLink}
showUrlPreview={this.props.showUrlPreview}

View File

@ -57,9 +57,10 @@ function parseHtmlMessage(html) {
export function parseEvent(event) {
const content = event.getContent();
if (content.format === "org.matrix.custom.html") {
return parseHtmlMessage(content.formatted_body);
return parseHtmlMessage(content.formatted_body || "");
} else {
const lines = content.body.split("\n");
const body = content.body || "";
const lines = body.split("\n");
const parts = lines.reduce((parts, line, i) => {
const isLast = i === lines.length - 1;
const text = new PlainPart(line);

View File

@ -45,6 +45,7 @@ export default function shouldHideEvent(ev) {
// Hide redacted events
if (ev.isRedacted() && !isEnabled('showRedactions')) return true;
if (ev.isRelation("m.replace")) return true;
const eventDiff = memberEventDiff(ev);