summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Jankowski <matt@jankowski.online>2023-12-01 06:00:41 -0500
committerGitHub <noreply@github.com>2023-12-01 11:00:41 +0000
commit440b80b2e795c21a22de4514160679e68561d98b (patch)
treee5a69b6e4d0ddf4a5488b094969ba350f8ce0eb0
parentb751078fcd21d13f6e4b63d7a86dd2be893d2753 (diff)
Model concerns organization into module namespaces (#28149)
-rw-r--r--.rubocop_todo.yml18
-rw-r--r--app/models/account.rb25
-rw-r--r--app/models/concerns/account/associations.rb (renamed from app/models/concerns/account_associations.rb)2
-rw-r--r--app/models/concerns/account/avatar.rb (renamed from app/models/concerns/account_avatar.rb)2
-rw-r--r--app/models/concerns/account/counters.rb (renamed from app/models/concerns/account_counters.rb)2
-rw-r--r--app/models/concerns/account/finder_concern.rb (renamed from app/models/concerns/account_finder_concern.rb)2
-rw-r--r--app/models/concerns/account/header.rb (renamed from app/models/concerns/account_header.rb)2
-rw-r--r--app/models/concerns/account/interactions.rb (renamed from app/models/concerns/account_interactions.rb)2
-rw-r--r--app/models/concerns/account/merging.rb (renamed from app/models/concerns/account_merging.rb)2
-rw-r--r--app/models/concerns/account/search.rb (renamed from app/models/concerns/account_search.rb)2
-rw-r--r--app/models/concerns/account/statuses_search.rb (renamed from app/models/concerns/account_statuses_search.rb)2
-rw-r--r--app/models/concerns/status/safe_reblog_insert.rb (renamed from app/models/concerns/status_safe_reblog_insert.rb)2
-rw-r--r--app/models/concerns/status/search_concern.rb (renamed from app/models/concerns/status_search_concern.rb)2
-rw-r--r--app/models/concerns/status/snapshot_concern.rb (renamed from app/models/concerns/status_snapshot_concern.rb)2
-rw-r--r--app/models/concerns/status/threading_concern.rb (renamed from app/models/concerns/status_threading_concern.rb)2
-rw-r--r--app/models/concerns/user/has_settings.rb (renamed from app/models/concerns/has_user_settings.rb)2
-rw-r--r--app/models/concerns/user/ldap_authenticable.rb (renamed from app/models/concerns/ldap_authenticable.rb)2
-rw-r--r--app/models/concerns/user/omniauthable.rb (renamed from app/models/concerns/omniauthable.rb)2
-rw-r--r--app/models/concerns/user/pam_authenticable.rb (renamed from app/models/concerns/pam_authenticable.rb)2
-rw-r--r--app/models/status.rb10
-rw-r--r--app/models/user.rb11
-rw-r--r--app/views/settings/profiles/show.html.haml4
-rw-r--r--lib/mastodon/cli/maintenance.rb4
-rw-r--r--spec/models/account_spec.rb4
-rw-r--r--spec/models/concerns/account/counters_spec.rb (renamed from spec/models/concerns/account_counters_spec.rb)2
-rw-r--r--spec/models/concerns/account/finder_concern_spec.rb (renamed from spec/models/concerns/account_finder_concern_spec.rb)2
-rw-r--r--spec/models/concerns/account/interactions_spec.rb (renamed from spec/models/concerns/account_interactions_spec.rb)2
-rw-r--r--spec/models/concerns/account/statuses_search_spec.rb (renamed from spec/models/concerns/account_statuses_search_spec.rb)2
-rw-r--r--spec/models/concerns/status/threading_concern_spec.rb (renamed from spec/models/concerns/status_threading_concern_spec.rb)2
-rw-r--r--spec/search/models/concerns/account/search_spec.rb (renamed from spec/search/models/concerns/account_search_spec.rb)2
-rw-r--r--spec/search/models/concerns/account/statuses_search_spec.rb (renamed from spec/search/models/concerns/account_statuses_search_spec.rb)2
31 files changed, 62 insertions, 62 deletions
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index dbd5beac2e7..9fb163ceb9d 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -107,7 +107,7 @@ Rails/ApplicationController:
# Include: app/models/**/*.rb
Rails/HasAndBelongsToMany:
Exclude:
- - 'app/models/concerns/account_associations.rb'
+ - 'app/models/concerns/account/associations.rb'
- 'app/models/preview_card.rb'
- 'app/models/status.rb'
- 'app/models/tag.rb'
@@ -116,7 +116,7 @@ Rails/HasAndBelongsToMany:
# Include: app/models/**/*.rb
Rails/HasManyOrHasOneDependent:
Exclude:
- - 'app/models/concerns/account_counters.rb'
+ - 'app/models/concerns/account/counters.rb'
- 'app/models/conversation.rb'
- 'app/models/custom_emoji.rb'
- 'app/models/custom_emoji_category.rb'
@@ -172,7 +172,7 @@ Rails/SkipsModelValidations:
Exclude:
- 'app/controllers/admin/invites_controller.rb'
- 'app/controllers/concerns/session_tracking_concern.rb'
- - 'app/models/concerns/account_merging.rb'
+ - 'app/models/concerns/account/merging.rb'
- 'app/models/concerns/expireable.rb'
- 'app/models/status.rb'
- 'app/models/trends/links.rb'
@@ -252,7 +252,7 @@ Rails/WhereExists:
- 'app/lib/feed_manager.rb'
- 'app/lib/status_cache_hydrator.rb'
- 'app/lib/suspicious_sign_in_detector.rb'
- - 'app/models/concerns/account_interactions.rb'
+ - 'app/models/concerns/account/interactions.rb'
- 'app/models/featured_tag.rb'
- 'app/models/poll.rb'
- 'app/models/session_activation.rb'
@@ -342,8 +342,8 @@ Style/GuardClause:
- 'app/lib/request_pool.rb'
- 'app/lib/webfinger.rb'
- 'app/lib/webfinger_resource.rb'
- - 'app/models/concerns/account_counters.rb'
- - 'app/models/concerns/ldap_authenticable.rb'
+ - 'app/models/concerns/account/counters.rb'
+ - 'app/models/concerns/user/ldap_authenticable.rb'
- 'app/models/tag.rb'
- 'app/models/user.rb'
- 'app/services/fan_out_on_write_service.rb'
@@ -372,8 +372,8 @@ Style/HashAsLastArrayItem:
Exclude:
- 'app/controllers/admin/statuses_controller.rb'
- 'app/controllers/api/v1/statuses_controller.rb'
- - 'app/models/concerns/account_counters.rb'
- - 'app/models/concerns/status_threading_concern.rb'
+ - 'app/models/concerns/account/counters.rb'
+ - 'app/models/concerns/status/threading_concern.rb'
- 'app/models/status.rb'
- 'app/services/batched_remove_status_service.rb'
- 'app/services/notify_service.rb'
@@ -486,7 +486,7 @@ Style/RedundantReturn:
# AllowedMethods: present?, blank?, presence, try, try!
Style/SafeNavigation:
Exclude:
- - 'app/models/concerns/account_finder_concern.rb'
+ - 'app/models/concerns/account/finder_concern.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
diff --git a/app/models/account.rb b/app/models/account.rb
index 03edcb2a257..4119944e598 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -70,19 +70,20 @@ class Account < ApplicationRecord
URL_PREFIX_RE = %r{\Ahttp(s?)://[^/]+}
USERNAME_ONLY_RE = /\A#{USERNAME_RE}\z/i
- include Attachmentable
- include AccountAssociations
- include AccountAvatar
- include AccountFinderConcern
- include AccountHeader
- include AccountInteractions
- include Paginable
- include AccountCounters
- include DomainNormalizable
+ include Attachmentable # Load prior to Avatar & Header concerns
+
+ include Account::Associations
+ include Account::Avatar
+ include Account::Counters
+ include Account::FinderConcern
+ include Account::Header
+ include Account::Interactions
+ include Account::Merging
+ include Account::Search
+ include Account::StatusesSearch
include DomainMaterializable
- include AccountMerging
- include AccountSearch
- include AccountStatusesSearch
+ include DomainNormalizable
+ include Paginable
enum protocol: { ostatus: 0, activitypub: 1 }
enum suspension_origin: { local: 0, remote: 1 }, _prefix: true
diff --git a/app/models/concerns/account_associations.rb b/app/models/concerns/account/associations.rb
index 592812e9601..31902ae21a8 100644
--- a/app/models/concerns/account_associations.rb
+++ b/app/models/concerns/account/associations.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountAssociations
+module Account::Associations
extend ActiveSupport::Concern
included do
diff --git a/app/models/concerns/account_avatar.rb b/app/models/concerns/account/avatar.rb
index b5919a9a23d..39f599db182 100644
--- a/app/models/concerns/account_avatar.rb
+++ b/app/models/concerns/account/avatar.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountAvatar
+module Account::Avatar
extend ActiveSupport::Concern
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze
diff --git a/app/models/concerns/account_counters.rb b/app/models/concerns/account/counters.rb
index 3fabb520542..fb69be9b700 100644
--- a/app/models/concerns/account_counters.rb
+++ b/app/models/concerns/account/counters.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountCounters
+module Account::Counters
extend ActiveSupport::Concern
ALLOWED_COUNTER_KEYS = %i(statuses_count following_count followers_count).freeze
diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account/finder_concern.rb
index 37c3b889593..7faaddeb430 100644
--- a/app/models/concerns/account_finder_concern.rb
+++ b/app/models/concerns/account/finder_concern.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountFinderConcern
+module Account::FinderConcern
extend ActiveSupport::Concern
class_methods do
diff --git a/app/models/concerns/account_header.rb b/app/models/concerns/account/header.rb
index e184880f93a..44ae774e94d 100644
--- a/app/models/concerns/account_header.rb
+++ b/app/models/concerns/account/header.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountHeader
+module Account::Header
extend ActiveSupport::Concern
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account/interactions.rb
index 3c64ebd9faf..0ea26e628d8 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account/interactions.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountInteractions
+module Account::Interactions
extend ActiveSupport::Concern
class_methods do
diff --git a/app/models/concerns/account_merging.rb b/app/models/concerns/account/merging.rb
index 14e157a3d89..960ee1819f8 100644
--- a/app/models/concerns/account_merging.rb
+++ b/app/models/concerns/account/merging.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountMerging
+module Account::Merging
extend ActiveSupport::Concern
def merge_with!(other_account)
diff --git a/app/models/concerns/account_search.rb b/app/models/concerns/account/search.rb
index b855727b4dd..b02b9bd4611 100644
--- a/app/models/concerns/account_search.rb
+++ b/app/models/concerns/account/search.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountSearch
+module Account::Search
extend ActiveSupport::Concern
DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/
diff --git a/app/models/concerns/account_statuses_search.rb b/app/models/concerns/account/statuses_search.rb
index 4b2bc4117ad..334b7145043 100644
--- a/app/models/concerns/account_statuses_search.rb
+++ b/app/models/concerns/account/statuses_search.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module AccountStatusesSearch
+module Account::StatusesSearch
extend ActiveSupport::Concern
included do
diff --git a/app/models/concerns/status_safe_reblog_insert.rb b/app/models/concerns/status/safe_reblog_insert.rb
index 0007b46d402..60ddb78e52c 100644
--- a/app/models/concerns/status_safe_reblog_insert.rb
+++ b/app/models/concerns/status/safe_reblog_insert.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module StatusSafeReblogInsert
+module Status::SafeReblogInsert
extend ActiveSupport::Concern
class_methods do
diff --git a/app/models/concerns/status_search_concern.rb b/app/models/concerns/status/search_concern.rb
index 7252fde7374..c16db8bd8c4 100644
--- a/app/models/concerns/status_search_concern.rb
+++ b/app/models/concerns/status/search_concern.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module StatusSearchConcern
+module Status::SearchConcern
extend ActiveSupport::Concern
included do
diff --git a/app/models/concerns/status_snapshot_concern.rb b/app/models/concerns/status/snapshot_concern.rb
index 9741b9aeb29..ba624d943e4 100644
--- a/app/models/concerns/status_snapshot_concern.rb
+++ b/app/models/concerns/status/snapshot_concern.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module StatusSnapshotConcern
+module Status::SnapshotConcern
extend ActiveSupport::Concern
included do
diff --git a/app/models/concerns/status_threading_concern.rb b/app/models/concerns/status/threading_concern.rb
index 2ca3b66c276..2606fd2f278 100644
--- a/app/models/concerns/status_threading_concern.rb
+++ b/app/models/concerns/status/threading_concern.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module StatusThreadingConcern
+module Status::ThreadingConcern
extend ActiveSupport::Concern
def ancestors(limit, account = nil)
diff --git a/app/models/concerns/has_user_settings.rb b/app/models/concerns/user/has_settings.rb
index b7c7104a135..bfa8aa2ca35 100644
--- a/app/models/concerns/has_user_settings.rb
+++ b/app/models/concerns/user/has_settings.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module HasUserSettings
+module User::HasSettings
extend ActiveSupport::Concern
included do
diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/user/ldap_authenticable.rb
index 775df081764..d84ff084b2f 100644
--- a/app/models/concerns/ldap_authenticable.rb
+++ b/app/models/concerns/user/ldap_authenticable.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module LdapAuthenticable
+module User::LdapAuthenticable
extend ActiveSupport::Concern
class_methods do
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/user/omniauthable.rb
index 3983fbcda87..6d1d1b8cc3f 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/user/omniauthable.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module Omniauthable
+module User::Omniauthable
extend ActiveSupport::Concern
TEMP_EMAIL_PREFIX = 'change@me'
diff --git a/app/models/concerns/pam_authenticable.rb b/app/models/concerns/user/pam_authenticable.rb
index f97f986a41f..a682058ccac 100644
--- a/app/models/concerns/pam_authenticable.rb
+++ b/app/models/concerns/user/pam_authenticable.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-module PamAuthenticable
+module User::PamAuthenticable
extend ActiveSupport::Concern
included do
diff --git a/app/models/status.rb b/app/models/status.rb
index 41c8950296d..7b1ca69c7c2 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -30,14 +30,14 @@
#
class Status < ApplicationRecord
+ include Cacheable
include Discard::Model
include Paginable
- include Cacheable
- include StatusThreadingConcern
- include StatusSnapshotConcern
include RateLimitable
- include StatusSafeReblogInsert
- include StatusSearchConcern
+ include Status::SafeReblogInsert
+ include Status::SearchConcern
+ include Status::SnapshotConcern
+ include Status::ThreadingConcern
rate_limit by: :account, family: :statuses
diff --git a/app/models/user.rb b/app/models/user.rb
index b0eba97c363..550f8bfd30c 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -53,9 +53,12 @@ class User < ApplicationRecord
filtered_languages
)
- include Redisable
include LanguagesHelper
- include HasUserSettings
+ include Redisable
+ include User::HasSettings
+ include User::LdapAuthenticable
+ include User::Omniauthable
+ include User::PamAuthenticable
# The home and list feeds will be stored in Redis for this amount
# of time, and status fan-out to followers will include only people
@@ -75,10 +78,6 @@ class User < ApplicationRecord
devise :registerable, :recoverable, :validatable,
:confirmable
- include Omniauthable
- include PamAuthenticable
- include LdapAuthenticable
-
belongs_to :account, inverse_of: :user
belongs_to :invite, counter_cache: :uses, optional: true
belongs_to :created_by_application, class_name: 'Doorkeeper::Application', optional: true
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index 7c13dc7f44c..5f9613c9391 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -33,7 +33,7 @@
.fields-row
.fields-row__column.fields-row__column-6
.fields-group
- = f.input :avatar, wrapper: :with_block_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(AccountAvatar::LIMIT))
+ = f.input :avatar, wrapper: :with_block_label, input_html: { accept: Account::Avatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(Account::Avatar::LIMIT))
.fields-row__column.fields-row__column-6
.fields-group
@@ -46,7 +46,7 @@
.fields-row
.fields-row__column.fields-row__column-6
.fields-group
- = f.input :header, wrapper: :with_block_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(AccountHeader::LIMIT))
+ = f.input :header, wrapper: :with_block_label, input_html: { accept: Account::Header::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(Account::Header::LIMIT))
.fields-row__column.fields-row__column-6
.fields-group
diff --git a/lib/mastodon/cli/maintenance.rb b/lib/mastodon/cli/maintenance.rb
index a95b7a30cdd..c53d742548c 100644
--- a/lib/mastodon/cli/maintenance.rb
+++ b/lib/mastodon/cli/maintenance.rb
@@ -67,8 +67,8 @@ module Mastodon::CLI
local? ? username : "#{username}@#{domain}"
end
- # This is a duplicate of the AccountMerging concern because we need it to
- # be independent from code version.
+ # This is a duplicate of the Account::Merging concern because we need it
+ # to be independent from code version.
def merge_with!(other_account)
# Since it's the same remote resource, the remote resource likely
# already believes we are following/blocking, so it's safe to
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 9652ea1910f..522549125fe 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -451,7 +451,7 @@ RSpec.describe Account do
end
it 'limits via constant by default' do
- stub_const('AccountSearch::DEFAULT_LIMIT', 1)
+ stub_const('Account::Search::DEFAULT_LIMIT', 1)
2.times.each { Fabricate(:account, display_name: 'Display Name') }
results = described_class.search_for('display')
expect(results.size).to eq 1
@@ -595,7 +595,7 @@ RSpec.describe Account do
end
it 'limits by 10 by default' do
- stub_const('AccountSearch::DEFAULT_LIMIT', 1)
+ stub_const('Account::Search::DEFAULT_LIMIT', 1)
2.times { Fabricate(:account, display_name: 'Display Name') }
results = described_class.advanced_search_for('display', account)
expect(results.size).to eq 1
diff --git a/spec/models/concerns/account_counters_spec.rb b/spec/models/concerns/account/counters_spec.rb
index fb02d79f118..2e1cd700bc2 100644
--- a/spec/models/concerns/account_counters_spec.rb
+++ b/spec/models/concerns/account/counters_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AccountCounters do
+describe Account::Counters do
let!(:account) { Fabricate(:account) }
describe '#increment_count!' do
diff --git a/spec/models/concerns/account_finder_concern_spec.rb b/spec/models/concerns/account/finder_concern_spec.rb
index 3a94c4d5452..ab5149e987f 100644
--- a/spec/models/concerns/account_finder_concern_spec.rb
+++ b/spec/models/concerns/account/finder_concern_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AccountFinderConcern do
+describe Account::FinderConcern do
describe 'local finders' do
let!(:account) { Fabricate(:account, username: 'Alice') }
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account/interactions_spec.rb
index 6687c84436b..6fac41e0711 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account/interactions_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AccountInteractions do
+describe Account::Interactions do
let(:account) { Fabricate(:account, username: 'account') }
let(:account_id) { account.id }
let(:account_ids) { [account_id] }
diff --git a/spec/models/concerns/account_statuses_search_spec.rb b/spec/models/concerns/account/statuses_search_spec.rb
index 46362936f4a..ab249d62d07 100644
--- a/spec/models/concerns/account_statuses_search_spec.rb
+++ b/spec/models/concerns/account/statuses_search_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AccountStatusesSearch do
+describe Account::StatusesSearch do
let(:account) { Fabricate(:account, indexable: indexable) }
before do
diff --git a/spec/models/concerns/status_threading_concern_spec.rb b/spec/models/concerns/status/threading_concern_spec.rb
index 2eac1ca6e5c..09fb2185661 100644
--- a/spec/models/concerns/status_threading_concern_spec.rb
+++ b/spec/models/concerns/status/threading_concern_spec.rb
@@ -2,7 +2,7 @@