split continuations if longer than N

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2018-06-16 09:45:06 +01:00
parent a25cdb6ce5
commit 61e09395d0
No known key found for this signature in database
GPG key ID: 3F879DA5AD802A5E

View file

@ -1,5 +1,6 @@
/* /*
Copyright 2016 OpenMarket Ltd Copyright 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -25,6 +26,9 @@ import sdk from '../../index';
import MatrixClientPeg from '../../MatrixClientPeg'; import MatrixClientPeg from '../../MatrixClientPeg';
const CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes
const continuedTypes = ['m.sticker', 'm.room.message'];
/* (almost) stateless UI component which builds the event tiles in the room timeline. /* (almost) stateless UI component which builds the event tiles in the room timeline.
*/ */
module.exports = React.createClass({ module.exports = React.createClass({
@ -449,16 +453,17 @@ module.exports = React.createClass({
// Some events should appear as continuations from previous events of // Some events should appear as continuations from previous events of
// different types. // different types.
const continuedTypes = ['m.sticker', 'm.room.message'];
const eventTypeContinues = const eventTypeContinues =
prevEvent !== null && prevEvent !== null &&
continuedTypes.includes(mxEv.getType()) && continuedTypes.includes(mxEv.getType()) &&
continuedTypes.includes(prevEvent.getType()); continuedTypes.includes(prevEvent.getType());
if (prevEvent !== null // if there is a previous event and it has the same sender as this event
&& prevEvent.sender && mxEv.sender // and the types are the same/is in continuedTypes and the time between them is <= CONTINUATION_MAX_INTERVAL
&& mxEv.sender.userId === prevEvent.sender.userId if (prevEvent !== null && prevEvent.sender && mxEv.sender && mxEv.sender.userId === prevEvent.sender.userId &&
&& (mxEv.getType() == prevEvent.getType() || eventTypeContinues)) { (mxEv.getType() === prevEvent.getType() || eventTypeContinues) &&
(mxEv.getTs() - prevEvent.getTs() <= CONTINUATION_MAX_INTERVAL)) {
continuation = true; continuation = true;
} }