Fix for single status pages
This commit is contained in:
		| @@ -11,8 +11,8 @@ class AccountsController < ApplicationController | ||||
|  | ||||
|         if user_signed_in? | ||||
|           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 | ||||
|           @reblogged  = Status.where(reblog_of_id: status_ids).where(account_id: current_user.account_id).map { |s| [s.reblog_of_id, true] }.to_h | ||||
|           @favourited = Status.favourites_map(status_ids, current_user.account_id) | ||||
|           @reblogged  = Status.reblogs_map(status_ids, current_user.account_id) | ||||
|         else | ||||
|           @favourited = {} | ||||
|           @reblogged  = {} | ||||
|   | ||||
| @@ -7,6 +7,20 @@ class StreamEntriesController < ApplicationController | ||||
|   def show | ||||
|     @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| | ||||
|       format.html | ||||
|       format.atom | ||||
|   | ||||
| @@ -75,4 +75,12 @@ class Status < ApplicationRecord | ||||
|   def self.as_mentions_timeline(account) | ||||
|     self.where(id: Mention.where(account: account).pluck(:status_id)).with_includes.with_counters | ||||
|   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 | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| - centered          = include_threads && !is_predecessor && !is_successor | ||||
|  | ||||
| - 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 } | ||||
|  | ||||
| .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' | ||||
|  | ||||
| - 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 } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user