@@ -271,33 +271,6 @@ class LocationInfo(SerializableAttrs):
271271# region Event content
272272
273273
274- @dataclass
275- class MediaMessageEventContent (BaseMessageEventContent , SerializableAttrs ):
276- """The content of a media message event (m.image, m.audio, m.video, m.file)"""
277-
278- url : Optional [ContentURI ] = None
279- info : Optional [MediaInfo ] = None
280- file : Optional [EncryptedFile ] = None
281-
282- @staticmethod
283- @deserializer (MediaInfo )
284- @deserializer (Optional [MediaInfo ])
285- def deserialize_info (data : JSON ) -> MediaInfo :
286- if not isinstance (data , dict ):
287- return Obj ()
288- msgtype = data .pop ("__mautrix_msgtype" , None )
289- if msgtype == "m.image" or msgtype == "m.sticker" :
290- return ImageInfo .deserialize (data )
291- elif msgtype == "m.video" :
292- return VideoInfo .deserialize (data )
293- elif msgtype == "m.audio" :
294- return AudioInfo .deserialize (data )
295- elif msgtype == "m.file" :
296- return FileInfo .deserialize (data )
297- else :
298- return Obj (** data )
299-
300-
301274@dataclass
302275class LocationMessageEventContent (BaseMessageEventContent , SerializableAttrs ):
303276 geo_uri : str = None
@@ -364,6 +337,34 @@ def _trim_reply_fallback_html(self) -> None:
364337 self .formatted_body = html_reply_fallback_regex .sub ("" , self .formatted_body )
365338
366339
340+ @dataclass
341+ class MediaMessageEventContent (TextMessageEventContent , SerializableAttrs ):
342+ """The content of a media message event (m.image, m.audio, m.video, m.file)"""
343+
344+ url : Optional [ContentURI ] = None
345+ info : Optional [MediaInfo ] = None
346+ file : Optional [EncryptedFile ] = None
347+ filename : Optional [str ] = None
348+
349+ @staticmethod
350+ @deserializer (MediaInfo )
351+ @deserializer (Optional [MediaInfo ])
352+ def deserialize_info (data : JSON ) -> MediaInfo :
353+ if not isinstance (data , dict ):
354+ return Obj ()
355+ msgtype = data .pop ("__mautrix_msgtype" , None )
356+ if msgtype == "m.image" or msgtype == "m.sticker" :
357+ return ImageInfo .deserialize (data )
358+ elif msgtype == "m.video" :
359+ return VideoInfo .deserialize (data )
360+ elif msgtype == "m.audio" :
361+ return AudioInfo .deserialize (data )
362+ elif msgtype == "m.file" :
363+ return FileInfo .deserialize (data )
364+ else :
365+ return Obj (** data )
366+
367+
367368MessageEventContent = Union [
368369 TextMessageEventContent , MediaMessageEventContent , LocationMessageEventContent , Obj
369370]
0 commit comments