From fae32634b15a29e66d5c2a04015f2f947cf54627 Mon Sep 17 00:00:00 2001
From: Naoki Kosaka <n.k@mail.yukimochi.net>
Date: Sat, 5 Jan 2019 15:17:12 +0900
Subject: [PATCH] Use Contact User as Relay, Report, Subscribe. (#9661)

* Use Contact User as Relay, Report, Subscribe.

* Use Account.representative to fetch contact user.

* Use find_local.

* No reason to use Account.representative in subscribe_service.

* Don't required representative!

* Fallback is included in Account.representative method.
---
 app/models/concerns/account_finder_concern.rb | 4 ++++
 app/models/relay.rb                           | 2 +-
 app/services/report_service.rb                | 2 +-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account_finder_concern.rb
index 6b7237e89..7e3bbde09 100644
--- a/app/models/concerns/account_finder_concern.rb
+++ b/app/models/concerns/account_finder_concern.rb
@@ -12,6 +12,10 @@ module AccountFinderConcern
       find_remote(username, domain) || raise(ActiveRecord::RecordNotFound)
     end
 
+    def representative
+      find_local(Setting.site_contact_username.gsub(/\A@/, '')) || Account.local.find_by(suspended: false)
+    end
+
     def find_local(username)
       find_remote(username, nil)
     end
diff --git a/app/models/relay.rb b/app/models/relay.rb
index 75cb060b2..7478c110d 100644
--- a/app/models/relay.rb
+++ b/app/models/relay.rb
@@ -68,7 +68,7 @@ class Relay < ApplicationRecord
   end
 
   def some_local_account
-    @some_local_account ||= Account.local.find_by(suspended: false)
+    @some_local_account ||= Account.representative
   end
 
   def ensure_disabled
diff --git a/app/services/report_service.rb b/app/services/report_service.rb
index 057d05ab9..1bcc1c0d5 100644
--- a/app/services/report_service.rb
+++ b/app/services/report_service.rb
@@ -52,6 +52,6 @@ class ReportService < BaseService
   end
 
   def some_local_account
-    @some_local_account ||= Account.local.where(suspended: false).first
+    @some_local_account ||= Account.representative
   end
 end
-- 
GitLab