Skip to content

Commit

Permalink
don't accept any edit earlier than the server-side set edit.
Browse files Browse the repository at this point in the history
  • Loading branch information
bwindels committed Jul 9, 2019
1 parent 01b8824 commit 5d928f0
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/models/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -898,7 +898,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
return this.status;
},

_getServerAggregatedRelation(relType) {
getServerAggregatedRelation(relType) {
const relations = this.getUnsigned()["m.relations"];
if (relations) {
return relations[relType];
Expand All @@ -911,7 +911,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
* @return {string?}
*/
replacingEventId() {
const replaceRelation = this._getServerAggregatedRelation("m.replace");
const replaceRelation = this.getServerAggregatedRelation("m.replace");
if (replaceRelation) {
return replaceRelation.event_id;
} else if (this._replacingEvent) {
Expand All @@ -936,7 +936,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
* @return {Date?}
*/
replacingEventDate() {
const replaceRelation = this._getServerAggregatedRelation("m.replace");
const replaceRelation = this.getServerAggregatedRelation("m.replace");
if (replaceRelation) {
const ts = replaceRelation.origin_server_ts;
if (Number.isFinite(ts)) {
Expand Down
10 changes: 10 additions & 0 deletions src/models/relations.js
Original file line number Diff line number Diff line change
Expand Up @@ -301,10 +301,20 @@ export default class Relations extends EventEmitter {
// event is known anyway.
return null;
}

// the all-knowning server tells us that the event at some point had
// this timestamp for its replacement, so any following replacement should definitely not be less
const replaceRelation =
this._targetEvent.getServerAggregatedRelation("m.replace");
const minTs = replaceRelation && replaceRelation.origin_server_ts;

return this.getRelations().reduce((last, event) => {
if (event.getSender() !== this._targetEvent.getSender()) {
return last;
}
if (minTs && minTs > event.getTs()) {
return last;
}
if (last && last.getTs() > event.getTs()) {
return last;
}
Expand Down

0 comments on commit 5d928f0

Please sign in to comment.