mirror of
https://github.com/mastodon/mastodon.git
synced 2025-05-11 20:21:10 +00:00
Refactor StatusCacheHydrator
(#34414)
This commit is contained in:
parent
5d817a758d
commit
678c8dfeec
|
@ -26,12 +26,7 @@ class StatusCacheHydrator
|
||||||
|
|
||||||
def hydrate_non_reblog_payload(empty_payload, account_id)
|
def hydrate_non_reblog_payload(empty_payload, account_id)
|
||||||
empty_payload.tap do |payload|
|
empty_payload.tap do |payload|
|
||||||
payload[:favourited] = Favourite.exists?(account_id: account_id, status_id: @status.id)
|
fill_status_payload(payload, @status, account_id)
|
||||||
payload[:reblogged] = Status.exists?(account_id: account_id, reblog_of_id: @status.id)
|
|
||||||
payload[:muted] = ConversationMute.exists?(account_id: account_id, conversation_id: @status.conversation_id)
|
|
||||||
payload[:bookmarked] = Bookmark.exists?(account_id: account_id, status_id: @status.id)
|
|
||||||
payload[:pinned] = StatusPin.exists?(account_id: account_id, status_id: @status.id) if @status.account_id == account_id
|
|
||||||
payload[:filtered] = mapped_applied_custom_filter(account_id, @status)
|
|
||||||
|
|
||||||
if payload[:poll]
|
if payload[:poll]
|
||||||
payload[:poll][:voted] = @status.account_id == account_id
|
payload[:poll][:voted] = @status.account_id == account_id
|
||||||
|
@ -45,18 +40,12 @@ class StatusCacheHydrator
|
||||||
payload[:muted] = false
|
payload[:muted] = false
|
||||||
payload[:bookmarked] = false
|
payload[:bookmarked] = false
|
||||||
payload[:pinned] = false if @status.account_id == account_id
|
payload[:pinned] = false if @status.account_id == account_id
|
||||||
payload[:filtered] = mapped_applied_custom_filter(account_id, @status.reblog)
|
|
||||||
|
|
||||||
# If the reblogged status is being delivered to the author who disabled the display of the application
|
# If the reblogged status is being delivered to the author who disabled the display of the application
|
||||||
# used to create the status, we need to hydrate it here too
|
# used to create the status, we need to hydrate it here too
|
||||||
payload[:reblog][:application] = payload_reblog_application if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id
|
payload[:reblog][:application] = payload_reblog_application if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id
|
||||||
|
|
||||||
payload[:reblog][:favourited] = Favourite.exists?(account_id: account_id, status_id: @status.reblog_of_id)
|
fill_status_payload(payload[:reblog], @status.reblog, account_id)
|
||||||
payload[:reblog][:reblogged] = Status.exists?(account_id: account_id, reblog_of_id: @status.reblog_of_id)
|
|
||||||
payload[:reblog][:muted] = ConversationMute.exists?(account_id: account_id, conversation_id: @status.reblog.conversation_id)
|
|
||||||
payload[:reblog][:bookmarked] = Bookmark.exists?(account_id: account_id, status_id: @status.reblog_of_id)
|
|
||||||
payload[:reblog][:pinned] = StatusPin.exists?(account_id: account_id, status_id: @status.reblog_of_id) if @status.reblog.account_id == account_id
|
|
||||||
payload[:reblog][:filtered] = payload[:filtered]
|
|
||||||
|
|
||||||
if payload[:reblog][:poll]
|
if payload[:reblog][:poll]
|
||||||
if @status.reblog.account_id == account_id
|
if @status.reblog.account_id == account_id
|
||||||
|
@ -69,11 +58,21 @@ class StatusCacheHydrator
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
payload[:filtered] = payload[:reblog][:filtered]
|
||||||
payload[:favourited] = payload[:reblog][:favourited]
|
payload[:favourited] = payload[:reblog][:favourited]
|
||||||
payload[:reblogged] = payload[:reblog][:reblogged]
|
payload[:reblogged] = payload[:reblog][:reblogged]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def fill_status_payload(payload, status, account_id)
|
||||||
|
payload[:favourited] = Favourite.exists?(account_id: account_id, status_id: status.id)
|
||||||
|
payload[:reblogged] = Status.exists?(account_id: account_id, reblog_of_id: status.id)
|
||||||
|
payload[:muted] = ConversationMute.exists?(account_id: account_id, conversation_id: status.conversation_id)
|
||||||
|
payload[:bookmarked] = Bookmark.exists?(account_id: account_id, status_id: status.id)
|
||||||
|
payload[:pinned] = StatusPin.exists?(account_id: account_id, status_id: status.id) if status.account_id == account_id
|
||||||
|
payload[:filtered] = mapped_applied_custom_filter(account_id, status)
|
||||||
|
end
|
||||||
|
|
||||||
def mapped_applied_custom_filter(account_id, status)
|
def mapped_applied_custom_filter(account_id, status)
|
||||||
CustomFilter
|
CustomFilter
|
||||||
.apply_cached_filters(CustomFilter.cached_filters_for(account_id), status)
|
.apply_cached_filters(CustomFilter.cached_filters_for(account_id), status)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user