summaryrefslogtreecommitdiffstats
path: root/activities
diff options
context:
space:
mode:
authorAndrew Godwin2022-11-15 18:36:39 -0700
committerAndrew Godwin2022-11-15 15:36:40 -0700
commit2ef709b6421b238025276aa53bf1c3764696a660 (patch)
tree4366dc4d9c6baf467c6baa3fb525308be3123293 /activities
parent20e63023bb0d3c7e4cb36b91b73e79f51889cc90 (diff)
downloadtakahe-2ef709b6421b238025276aa53bf1c3764696a660.tar.gz
takahe-2ef709b6421b238025276aa53bf1c3764696a660.tar.bz2
takahe-2ef709b6421b238025276aa53bf1c3764696a660.zip
Accept incoming action undos
Diffstat (limited to 'activities')
-rw-r--r--activities/models/post_interaction.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/activities/models/post_interaction.py b/activities/models/post_interaction.py
index ea95cdf..4f1eb03 100644
--- a/activities/models/post_interaction.py
+++ b/activities/models/post_interaction.py
@@ -285,3 +285,18 @@ class PostInteraction(StatorModel):
TimelineEvent.add_post_interaction(interaction.post.author, interaction)
# Force it into fanned_out as it's not ours
interaction.transition_perform(PostInteractionStates.fanned_out)
+
+ @classmethod
+ def handle_undo_ap(cls, data):
+ """
+ Handles an incoming undo for a announce/like
+ """
+ # Find it
+ interaction = cls.by_ap(data["object"])
+ # Verify the actor matches
+ if data["actor"] != interaction.identity.actor_uri:
+ raise ValueError("Actor mismatch on interaction undo")
+ # Delete all events that reference it
+ interaction.timeline_events.all().delete()
+ # Force it into undone_fanned_out as it's not ours
+ interaction.transition_perform(PostInteractionStates.undone_fanned_out)