From 7ad89d79f37fc6372f1365b3c377aeaf96a9c08e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 1 Dec 2022 23:00:30 +0000 Subject: [PATCH] Remove follower when blocking --- daemon.py | 5 +++++ follow.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/daemon.py b/daemon.py index a0f1ad9e2..371764ef7 100644 --- a/daemon.py +++ b/daemon.py @@ -122,6 +122,7 @@ from follow import is_following_actor from follow import get_following_feed from follow import send_follow_request from follow import unfollow_account +from follow import remove_follower from follow import create_initial_last_seen from skills import get_skills_from_list from skills import no_of_actor_skills @@ -4057,6 +4058,10 @@ class PubServer(BaseHTTPRequestHandler): blocker_nickname, domain_full, blocking_nickname, blocking_domain_full, curr_session, proxy_type) + remove_follower(base_dir, blocker_nickname, + domain, + blocking_nickname, + blocking_domain_full) if calling_domain.endswith('.onion') and onion_domain: origin_path_str = 'http://' + onion_domain + users_path elif (calling_domain.endswith('.i2p') and i2p_domain): diff --git a/follow.py b/follow.py index 0b6017f30..d11437213 100644 --- a/follow.py +++ b/follow.py @@ -1474,3 +1474,32 @@ def follower_approval_active(base_dir: str, manually_approves_followers = \ actor_json['manuallyApprovesFollowers'] return manually_approves_followers + + +def remove_follower(base_dir: str, + nickname: str, domain: str, + remove_nickname: str, remove_domain: str) -> bool: + """Removes a follower + """ + followers_filename = \ + acct_dir(base_dir, nickname, domain) + '/followers.txt' + if not os.path.isfile(followers_filename): + return False + followers_str = '' + try: + with open(followers_filename, 'r', encoding='utf-8') as fp_foll: + followers_str = fp_foll.read() + except OSError: + print('EX: remove_follower unable to read followers ' + + followers_filename) + handle = remove_nickname + '@' + remove_domain + '\n' + if handle not in followers_str: + return False + followers_str = followers_str.replace(handle, '') + try: + with open(followers_filename, 'w+', encoding='utf-8') as fp_foll: + fp_foll.write(followers_str) + except OSError: + print('EX: remove_follower unable to write followers ' + + followers_filename) + return True