From 37462f57de30d23bc2f5506094a8070b831dd152 Mon Sep 17 00:00:00 2001 From: freamon Date: Mon, 18 Nov 2024 21:25:19 +0000 Subject: [PATCH] apf part 11: Rejects for follows --- app/activitypub/routes.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/activitypub/routes.py b/app/activitypub/routes.py index a7365245..d290b963 100644 --- a/app/activitypub/routes.py +++ b/app/activitypub/routes.py @@ -611,7 +611,24 @@ def process_inbox_request(request_json, store_ap_json): log_incoming_ap(request_json['id'], APLOG_ACCEPT, APLOG_SUCCESS, request_json if store_ap_json else None) return - + # Reject: remote server is rejecting our previous follow request + if request_json['type'] == 'Reject': + if request_json['object']['type'] == 'Follow': + user_ap_id = request_json['object']['actor'] + user = find_actor_or_create(user_ap_id, create_if_not_found=False) + if not user: + log_incoming_ap(request_json['id'], APLOG_ACCEPT, APLOG_FAILURE, request_json if store_ap_json else None, 'Could not find recipient of Reject') + return + join_request = CommunityJoinRequest.query.filter_by(user_id=user.id, community_id=community.id).first() + if join_request: + db.session.delete(join_request) + existing_membership = CommunityMember.query.filter_by(user_id=user.id, community_id=community.id).first() + if existing_membership: + db.session.delete(existing_membership) + cache.delete_memoized(community_membership, user, community) + db.session.commit() + log_incoming_ap(request_json['id'], APLOG_ACCEPT, APLOG_SUCCESS, request_json if store_ap_json else None) + return # -- below this point is code that will be incrementally replaced to use log_incoming_ap() instead --