You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-09-01 21:21:58 +03:00
Merge pull request #26 from matrix-org/invite-room-state
Invite room state
This commit is contained in:
@@ -6,6 +6,7 @@ var EventEmitter = require("events").EventEmitter;
|
||||
|
||||
var RoomState = require("./room-state");
|
||||
var RoomSummary = require("./room-summary");
|
||||
var MatrixEvent = require("./event").MatrixEvent;
|
||||
var utils = require("../utils");
|
||||
|
||||
/**
|
||||
@@ -231,6 +232,34 @@ Room.prototype.addEvents = function(events, duplicateStrategy) {
|
||||
* @fires module:client~MatrixClient#event:"Room.name"
|
||||
*/
|
||||
Room.prototype.recalculate = function(userId) {
|
||||
// set fake stripped state events if this is an invite room so logic remains
|
||||
// consistent elsewhere.
|
||||
var self = this;
|
||||
var membershipEvent = this.currentState.getStateEvents(
|
||||
"m.room.member", userId
|
||||
);
|
||||
if (membershipEvent && membershipEvent.getContent().membership === "invite") {
|
||||
var strippedStateEvents = membershipEvent.event.invite_room_state || [];
|
||||
utils.forEach(strippedStateEvents, function(strippedEvent) {
|
||||
var existingEvent = self.currentState.getStateEvents(
|
||||
strippedEvent.type, strippedEvent.state_key
|
||||
);
|
||||
if (!existingEvent) {
|
||||
// set the fake stripped event instead
|
||||
self.currentState.setStateEvents([new MatrixEvent({
|
||||
type: strippedEvent.type,
|
||||
state_key: strippedEvent.state_key,
|
||||
content: strippedEvent.content,
|
||||
event_id: "$fake" + Date.now(),
|
||||
room_id: self.roomId,
|
||||
user_id: userId // technically a lie
|
||||
})]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
var oldName = this.name;
|
||||
this.name = calculateRoomName(this, userId);
|
||||
this.summary = new RoomSummary(this.roomId, {
|
||||
|
Reference in New Issue
Block a user