import { StateEvent } from "./RoomEvent";
/**
* Information about the previous room.
* @category Matrix event info
* @see CreateEventContent
*/
export interface PreviousRoomInfo {
/**
* The old room ID.
*/
room_id: string;
/**
* The last known event ID in the old room.
*/
event_id: string;
}
/**
* The content definition for m.room.create events
* @category Matrix event contents
* @see CreateEvent
*/
export interface CreateEventContent extends Record<string, unknown> {
/**
* The user ID who created the room.
*/
creator: string;
/**
* Whether or not this room is federated. Default true.
*/
"m.federate"?: boolean;
/**
* The version of the room. Default "1".
*/
room_version?: string;
/**
* Information about the old room.
*/
predecessor?: PreviousRoomInfo;
/**
* The type of the room, if applicable. For example, `m.space`.
*/
type?: string;
}
/**
* Represents an m.room.create state event
* @category Matrix events
*/
export class CreateEvent extends StateEvent<CreateEventContent> {
constructor(event: any) {
super(event);
}
/**
* The user ID who created the room.
*/
public get creator(): string {
return this.content.creator || this.sender;
}
/**
* The version of the room. Defaults to "1".
*/
public get version(): string {
return this.content.room_version || "1";
}
/**
* Whether or not the room is federated. Default true (federated).
*/
public get federated(): boolean {
return this.content['m.federate'] !== false;
}
}
Source