diff options
author | Andrew Godwin | 2022-11-15 18:36:39 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-11-15 15:36:40 -0700 |
commit | 2ef709b6421b238025276aa53bf1c3764696a660 (patch) | |
tree | 4366dc4d9c6baf467c6baa3fb525308be3123293 /activities/models | |
parent | 20e63023bb0d3c7e4cb36b91b73e79f51889cc90 (diff) | |
download | takahe-2ef709b6421b238025276aa53bf1c3764696a660.tar.gz takahe-2ef709b6421b238025276aa53bf1c3764696a660.tar.bz2 takahe-2ef709b6421b238025276aa53bf1c3764696a660.zip |
Accept incoming action undos
Diffstat (limited to 'activities/models')
-rw-r--r-- | activities/models/post_interaction.py | 15 |
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) |