]> cat aescling's git repositories - mastodon.git/commitdiff
Adding suspend account service
authorEugen Rochko <eugen@zeonfederated.com>
Tue, 6 Dec 2016 16:41:42 +0000 (17:41 +0100)
committerEugen Rochko <eugen@zeonfederated.com>
Tue, 6 Dec 2016 16:41:42 +0000 (17:41 +0100)
app/services/suspend_account_service.rb [new file with mode: 0644]

diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb
new file mode 100644 (file)
index 0000000..2361c0e
--- /dev/null
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class SuspendAccountService < BaseService
+  def call(account)
+    @account = account
+
+    purge_content
+    purge_profile
+    unsubscribe_push_subscribers
+  end
+
+  private
+
+  def purge_content
+    @account.media_attachments.destroy_all!
+    @account.statuses.destroy_all!
+    @account.stream_entries.destroy_all!
+    @account.mentions.destroy_all!
+    @account.notifications.destroy_all!
+    @account.favourites.destroy_all!
+    @account.active_relationships.destroy_all!
+    @account.passive_relationships.destroy_all!
+  end
+
+  def purge_profile
+    @account.suspended    = true
+    @account.display_name = ''
+    @account.note         = ''
+    @account.avatar.destroy
+    @account.avatar.clear
+    @account.header.destroy
+    @account.header.clear
+    @account.save!
+  end
+
+  def unsubscribe_push_subscribers
+    @account.subscriptions.destroy_all!
+  end
+end