Эх сурвалжийг харах

Add support for avatar stickers

Tulir Asokan 2 жил өмнө
parent
commit
5e82ad4b5a

+ 8 - 1
mauigpapi/types/thread_item.py

@@ -84,6 +84,7 @@ class ThreadItemType(ExtensibleEnum):
     XMA_REEL_MENTION = "xma_reel_mention"
     XMA_CLIP = "xma_clip"
     EXPIRED_PLACEHOLDER = "expired_placeholder"
+    AVATAR_STICKER = "avatar_sticker"
 
 
 @dataclass(kw_only=True)
@@ -509,7 +510,7 @@ class DirectMediaShareItem(SerializableAttrs):
 class XMAMediaShareItem(SerializableAttrs):
     xma_layout_type: int
 
-    title_text: str
+    title_text: Optional[str] = None
 
     target_url: Optional[str] = None
 
@@ -522,6 +523,11 @@ class XMAMediaShareItem(SerializableAttrs):
     preview_width: Optional[int] = None
     preview_height: Optional[int] = None
 
+    # For avatar_stickers
+    is_sharable: Optional[bool] = None
+    is_borderless: Optional[bool] = None
+    should_respect_server_preview_size: Optional[bool] = None
+
     @property
     def reel_share_clip_id(self) -> Optional[int]:
         if "instagram.com/reel/" not in self.target_url:
@@ -633,6 +639,7 @@ class ThreadItem(SerializableAttrs):
     xma_reel_mention: Optional[List[XMAMediaShareItem]] = None
     xma_clip: Optional[List[XMAMediaShareItem]] = None
     xma_profile: Optional[List[XMAMediaProfileShareItem]] = None
+    avatar_sticker: Optional[List[XMAMediaShareItem]] = None
     reel_share: Optional[ReelShareItem] = None
     story_share: Optional[StoryShareItem] = None
     location: Optional[Location] = None

+ 4 - 0
mautrix_instagram/portal.py

@@ -1028,6 +1028,7 @@ class Portal(DBPortal, BasePortal):
             or item.xma_reel_mention
             or item.xma_clip
             or item.generic_xma
+            or item.avatar_sticker
         ):
             media_data = (
                 item.xma_media_share
@@ -1036,6 +1037,7 @@ class Portal(DBPortal, BasePortal):
                 or item.xma_reel_mention
                 or item.xma_clip
                 or item.generic_xma
+                or item.avatar_sticker
             )[0]
             method = self._reupload_instagram_xma
         elif item.media:
@@ -1205,6 +1207,7 @@ class Portal(DBPortal, BasePortal):
             or item.xma_reel_mention
             or item.xma_clip
             or item.generic_xma
+            or item.avatar_sticker
         )
         media = xma_list[0]
         if len(xma_list) != 1:
@@ -1685,6 +1688,7 @@ class Portal(DBPortal, BasePortal):
             or item.xma_story_share
             or item.xma_clip
             or item.generic_xma
+            or item.avatar_sticker
         ):
             return await self._convert_instagram_xma_media_share(source, intent, item)