Fix "Show more" URL on paginated threads for remote statuses (#7285)
* Fix URL of "Show more" link in paginated threads (ancestors side) Increase item limits in threads Fix #7268 * Fix "Show more" link in paginated threads (descendants side)gh/stable
parent
1c3ace23cb
commit
da61352fab
|
@ -4,9 +4,9 @@ class StatusesController < ApplicationController
|
||||||
include SignatureAuthentication
|
include SignatureAuthentication
|
||||||
include Authorization
|
include Authorization
|
||||||
|
|
||||||
ANCESTORS_LIMIT = 20
|
ANCESTORS_LIMIT = 40
|
||||||
DESCENDANTS_LIMIT = 20
|
DESCENDANTS_LIMIT = 60
|
||||||
DESCENDANTS_DEPTH_LIMIT = 4
|
DESCENDANTS_DEPTH_LIMIT = 20
|
||||||
|
|
||||||
layout 'public'
|
layout 'public'
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ class StatusesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_descendants
|
def set_descendants
|
||||||
@max_descendant_thread_id = params[:max_descendant_thread_id]&.to_i
|
@max_descendant_thread_id = params[:max_descendant_thread_id]&.to_i
|
||||||
@since_descendant_thread_id = params[:since_descendant_thread_id]&.to_i
|
@since_descendant_thread_id = params[:since_descendant_thread_id]&.to_i
|
||||||
|
|
||||||
descendants = cache_collection(
|
descendants = cache_collection(
|
||||||
|
@ -84,11 +84,12 @@ class StatusesController < ApplicationController
|
||||||
),
|
),
|
||||||
Status
|
Status
|
||||||
)
|
)
|
||||||
|
|
||||||
@descendant_threads = []
|
@descendant_threads = []
|
||||||
|
|
||||||
if descendants.present?
|
if descendants.present?
|
||||||
statuses = [descendants.first]
|
statuses = [descendants.first]
|
||||||
depth = 1
|
depth = 1
|
||||||
|
|
||||||
descendants.drop(1).each_with_index do |descendant, index|
|
descendants.drop(1).each_with_index do |descendant, index|
|
||||||
if descendants[index].id == descendant.in_reply_to_id
|
if descendants[index].id == descendant.in_reply_to_id
|
||||||
|
|
|
@ -23,6 +23,7 @@ class StreamEntriesController < ApplicationController
|
||||||
skip_session!
|
skip_session!
|
||||||
expires_in 3.minutes, public: true
|
expires_in 3.minutes, public: true
|
||||||
end
|
end
|
||||||
|
|
||||||
render xml: OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.entry(@stream_entry, true))
|
render xml: OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.entry(@stream_entry, true))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,18 +5,19 @@
|
||||||
is_successor ||= false
|
is_successor ||= false
|
||||||
direct_reply_id ||= false
|
direct_reply_id ||= false
|
||||||
parent_id ||= false
|
parent_id ||= false
|
||||||
is_direct_parent = direct_reply_id == status.id
|
is_direct_parent = direct_reply_id == status.id
|
||||||
is_direct_child = parent_id == status.in_reply_to_id
|
is_direct_child = parent_id == status.in_reply_to_id
|
||||||
centered ||= include_threads && !is_predecessor && !is_successor
|
centered ||= include_threads && !is_predecessor && !is_successor
|
||||||
h_class = microformats_h_class(status, is_predecessor, is_successor, include_threads)
|
h_class = microformats_h_class(status, is_predecessor, is_successor, include_threads)
|
||||||
style_classes = style_classes(status, is_predecessor, is_successor, include_threads)
|
style_classes = style_classes(status, is_predecessor, is_successor, include_threads)
|
||||||
mf_classes = microformats_classes(status, is_direct_parent, is_direct_child)
|
mf_classes = microformats_classes(status, is_direct_parent, is_direct_child)
|
||||||
entry_classes = h_class + ' ' + mf_classes + ' ' + style_classes
|
entry_classes = h_class + ' ' + mf_classes + ' ' + style_classes
|
||||||
|
|
||||||
- if status.reply? && include_threads
|
- if status.reply? && include_threads
|
||||||
- if @next_ancestor
|
- if @next_ancestor
|
||||||
.entry{ class: entry_classes }
|
.entry{ class: entry_classes }
|
||||||
= render 'stream_entries/more', url: short_account_status_url(@next_ancestor.account.username, @next_ancestor)
|
= render 'stream_entries/more', url: TagManager.instance.url_for(@next_ancestor)
|
||||||
|
|
||||||
= render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }
|
= render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }
|
||||||
|
|
||||||
.entry{ class: entry_classes }
|
.entry{ class: entry_classes }
|
||||||
|
@ -44,9 +45,10 @@
|
||||||
= render 'stream_entries/more', url: short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
|
= render 'stream_entries/more', url: short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
|
||||||
- @descendant_threads.each do |thread|
|
- @descendant_threads.each do |thread|
|
||||||
= render partial: 'stream_entries/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }
|
= render partial: 'stream_entries/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }
|
||||||
|
|
||||||
- if thread[:next_status]
|
- if thread[:next_status]
|
||||||
.entry{ class: entry_classes }
|
.entry{ class: entry_classes }
|
||||||
= render 'stream_entries/more', url: short_account_status_url(thread[:next_status].account.username, thread[:next_status])
|
= render 'stream_entries/more', url: TagManager.instance.url_for(thread[:next_status])
|
||||||
- if @next_descendant_thread
|
- if @next_descendant_thread
|
||||||
.entry{ class: entry_classes }
|
.entry{ class: entry_classes }
|
||||||
= render 'stream_entries/more', url: short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
|
= render 'stream_entries/more', url: short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
|
||||||
|
|
Reference in New Issue