1414 PowerLevelStateEventContent ,
1515 RoomEncryptionStateEventContent ,
1616 RoomID ,
17+ StateEvent ,
1718 UserID ,
1819)
1920
@@ -25,19 +26,22 @@ class SerializedStateStore(TypedDict):
2526 full_member_list : dict [RoomID , bool ]
2627 power_levels : dict [RoomID , Any ]
2728 encryption : dict [RoomID , Any ]
29+ create : dict [RoomID , Any ]
2830
2931
3032class MemoryStateStore (StateStore ):
3133 members : dict [RoomID , dict [UserID , Member ]]
3234 full_member_list : dict [RoomID , bool ]
3335 power_levels : dict [RoomID , PowerLevelStateEventContent ]
3436 encryption : dict [RoomID , RoomEncryptionStateEventContent | None ]
37+ create : dict [RoomID , StateEvent ]
3538
3639 def __init__ (self ) -> None :
3740 self .members = {}
3841 self .full_member_list = {}
3942 self .power_levels = {}
4043 self .encryption = {}
44+ self .create = {}
4145
4246 def serialize (self ) -> SerializedStateStore :
4347 """
@@ -58,6 +62,7 @@ def serialize(self) -> SerializedStateStore:
5862 room_id : (content .serialize () if content is not None else None )
5963 for room_id , content in self .encryption .items ()
6064 },
65+ "create" : {room_id : evt .serialize () for room_id , evt in self .create .items ()},
6166 }
6267
6368 def deserialize (self , data : SerializedStateStore ) -> None :
@@ -84,6 +89,9 @@ def deserialize(self, data: SerializedStateStore) -> None:
8489 )
8590 for room_id , content in data ["encryption" ].items ()
8691 }
92+ self .create = {
93+ room_id : StateEvent .deserialize (evt ) for room_id , evt in data ["create" ].items ()
94+ }
8795
8896 async def get_member (self , room_id : RoomID , user_id : UserID ) -> Member | None :
8997 try :
@@ -176,6 +184,17 @@ async def set_power_levels(
176184 content = PowerLevelStateEventContent .deserialize (content )
177185 self .power_levels [room_id ] = content
178186
187+ async def has_create_cached (self , room_id : RoomID ) -> bool :
188+ return room_id in self .create
189+
190+ async def get_create (self , room_id : RoomID ) -> StateEvent | None :
191+ return self .create .get (room_id )
192+
193+ async def set_create (self , event : StateEvent | dict [str , Any ]) -> None :
194+ if not isinstance (event , StateEvent ):
195+ event = StateEvent .deserialize (event )
196+ self .create [event .room_id ] = event
197+
179198 async def has_encryption_info_cached (self , room_id : RoomID ) -> bool :
180199 return room_id in self .encryption
181200
0 commit comments