diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-08 23:22:44 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-08 23:29:08 +0100 |
commit | 9aecc0f48a046e0a05b8ca69511f8b72756fb431 (patch) | |
tree | 636bb2399ec2f853af5ebd593af6c75e311c7dd7 /app/models | |
parent | 86574ea5248219fa35ecb0748920df9ff1ce6110 (diff) |
Move timelines API from statuses to its own controller, add a check for
resources that require a user context vs those that don't (such as public timeline) /api/v1/statuses/public -> /api/v1/timelines/public /api/v1/statuses/home -> /api/v1/timelines/home /api/v1/statuses/mentions -> /api/v1/timelines/mentions /api/v1/statuses/tag/:tag -> /api/v1/timelines/tag/:tag
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/status.rb | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/app/models/status.rb b/app/models/status.rb index d68b7afa6..07aef26ee 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -95,23 +95,29 @@ class Status < ApplicationRecord where(id: Mention.where(account: account).pluck(:status_id)).with_includes.with_counters end - def as_public_timeline(account) - joins('LEFT OUTER JOIN statuses AS reblogs ON statuses.reblog_of_id = reblogs.id') + def as_public_timeline(account = nil) + query = joins('LEFT OUTER JOIN statuses AS reblogs ON statuses.reblog_of_id = reblogs.id') .joins('LEFT OUTER JOIN accounts ON statuses.account_id = accounts.id') .where('accounts.silenced = FALSE') - .where('(reblogs.account_id IS NULL OR reblogs.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)) AND statuses.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)', account.id, account.id) - .with_includes - .with_counters + + unless account.nil? + query = query.where('(reblogs.account_id IS NULL OR reblogs.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)) AND statuses.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)', account.id, account.id) + end + + query.with_includes.with_counters end - def as_tag_timeline(tag, account) - tag.statuses + def as_tag_timeline(tag, account = nil) + query = tag.statuses .joins('LEFT OUTER JOIN statuses AS reblogs ON statuses.reblog_of_id = reblogs.id') .joins('LEFT OUTER JOIN accounts ON statuses.account_id = accounts.id') .where('accounts.silenced = FALSE') - .where('(reblogs.account_id IS NULL OR reblogs.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)) AND statuses.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)', account.id, account.id) - .with_includes - .with_counters + + unless account.nil? + query = query.where('(reblogs.account_id IS NULL OR reblogs.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)) AND statuses.account_id NOT IN (SELECT target_account_id FROM blocks WHERE account_id = ?)', account.id, account.id) + end + + query.with_includes.with_counters end def favourites_map(status_ids, account_id) |