Source

models/events/CreateEvent.ts

  1. import { StateEvent } from "./RoomEvent";
  2. /**
  3. * Information about the previous room.
  4. * @category Matrix event info
  5. * @see CreateEventContent
  6. */
  7. export interface PreviousRoomInfo {
  8. /**
  9. * The old room ID.
  10. */
  11. room_id: string;
  12. /**
  13. * The last known event ID in the old room.
  14. */
  15. event_id: string;
  16. }
  17. /**
  18. * The content definition for m.room.create events
  19. * @category Matrix event contents
  20. * @see CreateEvent
  21. */
  22. export interface CreateEventContent extends Record<string, unknown> {
  23. /**
  24. * The user ID who created the room.
  25. */
  26. creator: string;
  27. /**
  28. * Whether or not this room is federated. Default true.
  29. */
  30. "m.federate"?: boolean;
  31. /**
  32. * The version of the room. Default "1".
  33. */
  34. room_version?: string;
  35. /**
  36. * Information about the old room.
  37. */
  38. predecessor?: PreviousRoomInfo;
  39. /**
  40. * The type of the room, if applicable. For example, `m.space`.
  41. */
  42. type?: string;
  43. }
  44. /**
  45. * Represents an m.room.create state event
  46. * @category Matrix events
  47. */
  48. export class CreateEvent extends StateEvent<CreateEventContent> {
  49. constructor(event: any) {
  50. super(event);
  51. }
  52. /**
  53. * The user ID who created the room.
  54. */
  55. public get creator(): string {
  56. return this.content.creator || this.sender;
  57. }
  58. /**
  59. * The version of the room. Defaults to "1".
  60. */
  61. public get version(): string {
  62. return this.content.room_version || "1";
  63. }
  64. /**
  65. * Whether or not the room is federated. Default true (federated).
  66. */
  67. public get federated(): boolean {
  68. return this.content['m.federate'] !== false;
  69. }
  70. }