Factor out updateDmState
This commit is contained in:
parent
d21f55633d
commit
bc15303358
1 changed files with 39 additions and 36 deletions
|
@ -677,42 +677,7 @@ module.exports = React.createClass({
|
||||||
// a member state changed in this room
|
// a member state changed in this room
|
||||||
// refresh the conf call notification state
|
// refresh the conf call notification state
|
||||||
this._updateConfCallNotification();
|
this._updateConfCallNotification();
|
||||||
|
this._updateDMState();
|
||||||
const me = this.state.room.getMember(MatrixClientPeg.get().credentials.userId);
|
|
||||||
if (!me || me.membership !== "join") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The user may have accepted an invite with is_direct set
|
|
||||||
if (me.events.member.getPrevContent().membership === "invite" &&
|
|
||||||
me.events.member.getPrevContent().is_direct
|
|
||||||
) {
|
|
||||||
// This is a DM with the sender of the invite event (which we assume
|
|
||||||
// preceded the join event)
|
|
||||||
Rooms.setDMRoom(
|
|
||||||
this.state.room.roomId,
|
|
||||||
me.events.member.getUnsigned().prev_sender,
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const invitedMembers = this.state.room.getMembersWithMembership("invite");
|
|
||||||
const joinedMembers = this.state.room.getMembersWithMembership("join");
|
|
||||||
|
|
||||||
// There must be one invited member and one joined member
|
|
||||||
if (invitedMembers.length !== 1 || joinedMembers.length !== 1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The user may have sent an invite with is_direct sent
|
|
||||||
const other = invitedMembers[0];
|
|
||||||
if (other &&
|
|
||||||
other.membership === "invite" &&
|
|
||||||
other.events.member.getContent().is_direct
|
|
||||||
) {
|
|
||||||
Rooms.setDMRoom(this.state.room.roomId, other.userId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}, 500),
|
}, 500),
|
||||||
|
|
||||||
_checkIfAlone: function(room) {
|
_checkIfAlone: function(room) {
|
||||||
|
@ -753,6 +718,44 @@ module.exports = React.createClass({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateDMState() {
|
||||||
|
const me = this.state.room.getMember(MatrixClientPeg.get().credentials.userId);
|
||||||
|
if (!me || me.membership !== "join") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The user may have accepted an invite with is_direct set
|
||||||
|
if (me.events.member.getPrevContent().membership === "invite" &&
|
||||||
|
me.events.member.getPrevContent().is_direct
|
||||||
|
) {
|
||||||
|
// This is a DM with the sender of the invite event (which we assume
|
||||||
|
// preceded the join event)
|
||||||
|
Rooms.setDMRoom(
|
||||||
|
this.state.room.roomId,
|
||||||
|
me.events.member.getUnsigned().prev_sender,
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const invitedMembers = this.state.room.getMembersWithMembership("invite");
|
||||||
|
const joinedMembers = this.state.room.getMembersWithMembership("join");
|
||||||
|
|
||||||
|
// There must be one invited member and one joined member
|
||||||
|
if (invitedMembers.length !== 1 || joinedMembers.length !== 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The user may have sent an invite with is_direct sent
|
||||||
|
const other = invitedMembers[0];
|
||||||
|
if (other &&
|
||||||
|
other.membership === "invite" &&
|
||||||
|
other.events.member.getContent().is_direct
|
||||||
|
) {
|
||||||
|
Rooms.setDMRoom(this.state.room.roomId, other.userId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onSearchResultsResize: function() {
|
onSearchResultsResize: function() {
|
||||||
dis.dispatch({ action: 'timeline_resize' }, true);
|
dis.dispatch({ action: 'timeline_resize' }, true);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue