Fix for single status pages

This commit is contained in:
Eugen Rochko 2016-09-08 21:23:29 +02:00
parent 85d89b472d
commit 762157ee4e
4 changed files with 26 additions and 4 deletions

View file

@ -11,8 +11,8 @@ class AccountsController < ApplicationController
if user_signed_in? if user_signed_in?
status_ids = @statuses.collect { |s| [s.id, s.reblog_of_id] }.flatten.uniq status_ids = @statuses.collect { |s| [s.id, s.reblog_of_id] }.flatten.uniq
@favourited = Favourite.where(status_id: status_ids).where(account_id: current_user.account_id).map { |f| [f.status_id, true] }.to_h @favourited = Status.favourites_map(status_ids, current_user.account_id)
@reblogged = Status.where(reblog_of_id: status_ids).where(account_id: current_user.account_id).map { |s| [s.reblog_of_id, true] }.to_h @reblogged = Status.reblogs_map(status_ids, current_user.account_id)
else else
@favourited = {} @favourited = {}
@reblogged = {} @reblogged = {}

View file

@ -7,6 +7,20 @@ class StreamEntriesController < ApplicationController
def show def show
@type = @stream_entry.activity_type.downcase @type = @stream_entry.activity_type.downcase
if @stream_entry.activity_type == 'Status'
@ancestors = @stream_entry.activity.ancestors.with_includes.with_counters
@descendants = @stream_entry.activity.descendants.with_includes.with_counters
if user_signed_in?
status_ids = [@stream_entry.activity_id] + @ancestors.map { |s| s.id } + @descendants.map { |s| s.id }
@favourited = Status.favourites_map(status_ids, current_user.account_id)
@reblogged = Status.reblogs_map(status_ids, current_user.account_id)
else
@favourited = {}
@reblogged = {}
end
end
respond_to do |format| respond_to do |format|
format.html format.html
format.atom format.atom

View file

@ -75,4 +75,12 @@ class Status < ApplicationRecord
def self.as_mentions_timeline(account) def self.as_mentions_timeline(account)
self.where(id: Mention.where(account: account).pluck(:status_id)).with_includes.with_counters self.where(id: Mention.where(account: account).pluck(:status_id)).with_includes.with_counters
end end
def self.favourites_map(status_ids, account_id)
Favourite.where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h
end
def self.reblogs_map(status_ids, account_id)
self.where(reblog_of_id: status_ids).where(account_id: account_id).map { |s| [s.reblog_of_id, true] }.to_h
end
end end

View file

@ -4,7 +4,7 @@
- centered = include_threads && !is_predecessor && !is_successor - centered = include_threads && !is_predecessor && !is_successor
- if status.reply? && include_threads - if status.reply? && include_threads
- status.ancestors.with_includes.with_counters.each do |status| - @ancestors.each do |status|
= render partial: 'status', locals: { status: status, is_predecessor: true } = render partial: 'status', locals: { status: status, is_predecessor: true }
.entry{ class: entry_classes(status, is_predecessor, is_successor, include_threads) } .entry{ class: entry_classes(status, is_predecessor, is_successor, include_threads) }
@ -43,5 +43,5 @@
%li.transparent-background= link_to '', media.file.url, style: "background-image: url(#{media.file.url(:small)})", target: '_blank' %li.transparent-background= link_to '', media.file.url, style: "background-image: url(#{media.file.url(:small)})", target: '_blank'
- if include_threads - if include_threads
- status.descendants.with_includes.with_counters.each do |status| - @descendants.each do |status|
= render partial: 'status', locals: { status: status, is_successor: true } = render partial: 'status', locals: { status: status, is_successor: true }