@@ -271,33 +271,6 @@ class LocationInfo(SerializableAttrs):
271
271
# region Event content
272
272
273
273
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
-
301
274
@dataclass
302
275
class LocationMessageEventContent (BaseMessageEventContent , SerializableAttrs ):
303
276
geo_uri : str = None
@@ -364,6 +337,34 @@ def _trim_reply_fallback_html(self) -> None:
364
337
self .formatted_body = html_reply_fallback_regex .sub ("" , self .formatted_body )
365
338
366
339
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
+
367
368
MessageEventContent = Union [
368
369
TextMessageEventContent , MediaMessageEventContent , LocationMessageEventContent , Obj
369
370
]
0 commit comments