From d219c59cfe337907408461942e62c137c1fbe3d5 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Wed, 21 Dec 2022 01:06:45 -0500 Subject: [PATCH] added delete event when deleting user --- src/BirdsiteLive.Domain/MigrationService.cs | 48 +++++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/src/BirdsiteLive.Domain/MigrationService.cs b/src/BirdsiteLive.Domain/MigrationService.cs index fa19fa7..e7e9ceb 100644 --- a/src/BirdsiteLive.Domain/MigrationService.cs +++ b/src/BirdsiteLive.Domain/MigrationService.cs @@ -121,7 +121,7 @@ namespace BirdsiteLive.Domain // Notify Followers var message = $@"

[BSL MIRROR SERVICE NOTIFICATION]
- This bot has been disabled by it's original owner.
+ This bot has been disabled by its original owner.
It has been redirected to {validatedUser.FediverseAcct}.

"; NotifyFollowers(acct, twitterAccount, message); @@ -171,7 +171,7 @@ namespace BirdsiteLive.Domain public async Task DeleteAccountAsync(string acct) { - // Apply moved to + // Apply deleted state var twitterAccount = await _twitterUserDal.GetTwitterUserAsync(acct); if (twitterAccount == null) { @@ -181,12 +181,52 @@ namespace BirdsiteLive.Domain twitterAccount.Deleted = true; await _twitterUserDal.UpdateTwitterUserAsync(twitterAccount); - + // Notify Followers var message = $@"

[BSL MIRROR SERVICE NOTIFICATION]
- This bot has been deleted by it's original owner.
+ This bot has been deleted by its original owner.

"; NotifyFollowers(acct, twitterAccount, message); + + // Delete remote accounts + DeleteRemoteAccounts(acct); + } + + private void DeleteRemoteAccounts(string acct) + { + var t = Task.Run(async () => + { + var allUsers = await _followersDal.GetAllFollowersAsync(); + + var followersWtSharedInbox = allUsers + .Where(x => !string.IsNullOrWhiteSpace(x.SharedInboxRoute)) + .GroupBy(x => x.Host) + .ToList(); + foreach (var followerGroup in followersWtSharedInbox) + { + var host = followerGroup.First().Host; + var sharedInbox = followerGroup.First().SharedInboxRoute; + + var t1 = Task.Run(async () => + { + await _activityPubService.DeleteUserAsync(acct, host, sharedInbox); + }); + } + + var followerWtInbox = allUsers + .Where(x => !string.IsNullOrWhiteSpace(x.SharedInboxRoute)) + .ToList(); + foreach (var followerGroup in followerWtInbox) + { + var host = followerGroup.Host; + var sharedInbox = followerGroup.InboxRoute; + + var t1 = Task.Run(async () => + { + await _activityPubService.DeleteUserAsync(acct, host, sharedInbox); + }); + } + }); } public async Task TriggerRemoteMigrationAsync(string id, string tweetid, string handle)