diff options
author | Joël Quenneville <joelq@thoughtbot.com> | 2017-04-07 14:18:30 -0400 |
---|---|---|
committer | Joël Quenneville <joelq@thoughtbot.com> | 2017-04-07 14:18:30 -0400 |
commit | d4c94fa004117fdb7226b1b846a12d12dc0542d9 (patch) | |
tree | 93d2a3a70ad6bb6f23a63c9f6fc086c9f197384f /app/models | |
parent | 4e41cd9ab8f51120d558b70528b163c98993be53 (diff) |
DRY up reblog vs original status check
Checking reblog vs original status was happening in multiple places across the app. For views, this logic was encapsulated in a helper method named `proper_status` but in the other layers of the app, the logic was duplicated. Because the logic is used at all layers of the app, we extracted it into a `Status#proper` method on the model and changed all uses of the logic to use this method. There is now a single source of truth for this condition. We added test coverage to untested methods that got refactored.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account.rb | 4 | ||||
-rw-r--r-- | app/models/status.rb | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index 6968607a2..cbba8b5b6 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -125,11 +125,11 @@ class Account < ApplicationRecord end def favourited?(status) - (status.reblog? ? status.reblog : status).favourites.where(account: self).count.positive? + status.proper.favourites.where(account: self).count.positive? end def reblogged?(status) - (status.reblog? ? status.reblog : status).reblogs.where(account: self).count.positive? + status.proper.reblogs.where(account: self).count.positive? end def keypair diff --git a/app/models/status.rb b/app/models/status.rb index 6948ad77c..7e3dd3e28 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -62,8 +62,12 @@ class Status < ApplicationRecord reply? ? :comment : :note end + def proper + reblog? ? reblog : self + end + def content - reblog? ? reblog.text : text + proper.text end def target |