Bläddra i källkod

Handle placeholder items

Tulir Asokan 2 år sedan
förälder
incheckning
85b2424079
2 ändrade filer med 22 tillägg och 0 borttagningar
  1. 9 0
      mauigpapi/types/thread_item.py
  2. 13 0
      mautrix_instagram/portal.py

+ 9 - 0
mauigpapi/types/thread_item.py

@@ -550,6 +550,14 @@ class VideoCallEvent(SerializableAttrs):
     description: str
 
 
+@dataclass
+class PlaceholderItem(SerializableAttrs):
+    title: Optional[str] = None
+    message: Optional[str] = None
+    reason: Optional[int] = None
+    # is_linked: bool
+
+
 @dataclass(kw_only=True)
 class ThreadItem(SerializableAttrs):
     item_id: Optional[str] = None
@@ -591,6 +599,7 @@ class ThreadItem(SerializableAttrs):
     clip: Optional[ClipItem] = None
     felix_share: Optional[FelixShareItem] = None
     profile: Optional[ProfileItem] = None
+    placeholder: Optional[PlaceholderItem] = None
     video_call_event: Optional[VideoCallEvent] = None
 
     @property

+ 13 - 0
mautrix_instagram/portal.py

@@ -1454,6 +1454,14 @@ class Portal(DBPortal, BasePortal):
         await self._add_instagram_reply(content, item.replied_to_message)
         return EventType.ROOM_MESSAGE, content
 
+    async def _convert_instagram_placeholder(self, item: ThreadItem) -> ConvertedMessage:
+        content = TextMessageEventContent(
+            msgtype=MessageType.NOTICE, body=item.placeholder.message
+        )
+        content["com.beeper.linkpreviews"] = []
+        await self._add_instagram_reply(content, item.replied_to_message)
+        return EventType.ROOM_MESSAGE, content
+
     async def _convert_instagram_unhandled(self, item: ThreadItem) -> ConvertedMessage:
         content = TextMessageEventContent(
             msgtype=MessageType.NOTICE, body=f"Unsupported message type {item.item_type.value}"
@@ -1727,6 +1735,11 @@ class Portal(DBPortal, BasePortal):
             converted.append(await self._convert_instagram_text(item, item.like))
         elif item.link:
             converted.append(await self._convert_instagram_link(source, intent, item))
+        elif item.placeholder and len(converted) == 0:
+            self.log.warning(
+                f"Got placeholder item in {item.item_id}: {item.placeholder.serialize()}"
+            )
+            converted.append(await self._convert_instagram_placeholder(item))
 
         if len(converted) == 0:
             self.log.debug(f"Unhandled Instagram message {item.item_id}")