MELS handle m.room.third_party_invite
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
cf8eeedcc7
commit
429b8e94df
2 changed files with 17 additions and 4 deletions
|
@ -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));
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue