MELS handle m.room.third_party_invite

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2019-07-03 08:58:34 +01:00
parent cf8eeedcc7
commit 429b8e94df
2 changed files with 17 additions and 4 deletions

View file

@ -31,6 +31,8 @@ import SettingsStore from '../../settings/SettingsStore';
const CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes const CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes
const continuedTypes = ['m.sticker', 'm.room.message']; const continuedTypes = ['m.sticker', 'm.room.message'];
const isMembershipChange = (e) => e.getType() === 'm.room.member' || e.getType() === 'm.room.third_party_invite';
/* (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({
@ -375,8 +377,6 @@ module.exports = React.createClass({
this._readReceiptsByEvent = this._getReadReceiptsByShownEvent(); this._readReceiptsByEvent = this._getReadReceiptsByShownEvent();
} }
const isMembershipChange = (e) => e.getType() === 'm.room.member';
for (i = 0; i < this.props.events.length; i++) { for (i = 0; i < this.props.events.length; i++) {
const mxEv = this.props.events[i]; const mxEv = this.props.events[i];
const eventId = mxEv.getId(); const eventId = mxEv.getId();
@ -444,7 +444,7 @@ module.exports = React.createClass({
// In order to prevent DateSeparators from appearing in the expanded form // In order to prevent DateSeparators from appearing in the expanded form
// of MemberEventListSummary, render each member event as if the previous // of MemberEventListSummary, render each member event as if the previous
// one was itself. This way, the timestamp of the previous event === the // one was itself. This way, the timestamp of the previous event === the
// timestamp of the current event, and no DateSeperator is inserted. // timestamp of the current event, and no DateSeparator is inserted.
return this._getTilesForEvent(e, e, e === lastShownEvent); return this._getTilesForEvent(e, e, e === lastShownEvent);
}).reduce((a, b) => a.concat(b)); }).reduce((a, b) => a.concat(b));

View file

@ -313,6 +313,11 @@ module.exports = React.createClass({
* if a transition is not recognised. * if a transition is not recognised.
*/ */
_getTransition: function(e) { _getTransition: function(e) {
if (e.mxEvent.getType() === 'm.room.third_party_invite') {
// Handle 3pid invites the same as invites so they get bundled together
return 'invited';
}
switch (e.mxEvent.getContent().membership) { switch (e.mxEvent.getContent().membership) {
case 'invite': return 'invited'; case 'invite': return 'invited';
case 'ban': return 'banned'; case 'ban': return 'banned';
@ -427,9 +432,17 @@ module.exports = React.createClass({
userEvents[userId] = []; userEvents[userId] = [];
if (e.target) avatarMembers.push(e.target); if (e.target) avatarMembers.push(e.target);
} }
let displayName = userId;
if (e.getType() === 'm.room.third_party_invite') {
displayName = e.getContent().display_name;
} else if (e.target) {
displayName = e.target.name;
}
userEvents[userId].push({ userEvents[userId].push({
mxEvent: e, mxEvent: e,
displayName: (e.target ? e.target.name : null) || userId, displayName,
index: index, index: index,
}); });
}); });