Add new get_mentions helper
1 files changed, 21 insertions(+), 0 deletions(-)

M little_boxes/activitypub.py
M little_boxes/activitypub.py +21 -0
@@ 634,6 634,12 @@ class BaseActivity(object, metaclass=_Ac
         return out
 
 
+class Mention(BaseActivity):
+    ACTIVITY_TYPE = ActivityType.MENTION
+    OBJECT_REQUIRED = False
+    ACTOR_REQUIRED = False
+
+
 class Person(BaseActivity):
     ACTIVITY_TYPE = ActivityType.PERSON
     OBJECT_REQUIRED = False

          
@@ 947,6 953,21 @@ class Note(BaseActivity):
 
         return False
 
+    def get_mentions(self) -> List["Mention"]:
+        if self.tag is None:
+            return []
+
+        mentions = []
+        for tag in self.tag:
+            # Some AP implemention return "type"less tag for links
+            if "type" not in tag:
+                continue
+
+            if _has_type(tag["type"], ActivityType.MENTION):
+                mentions.append(Mention(**tag))
+
+        return mentions
+
     def get_in_reply_to(self) -> Optional[str]:
         return _get_id(self.inReplyTo)