mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Load fewer topics in the topic list on slow platforms (Android)
This commit is contained in:
@@ -171,7 +171,7 @@ Discourse.TopicList.reopenClass({
|
||||
|
||||
from: function(result, filter, params) {
|
||||
var topicList = Discourse.TopicList.create({
|
||||
inserted: Em.A(),
|
||||
inserted: [],
|
||||
filter: filter,
|
||||
params: params || {},
|
||||
topics: Discourse.TopicList.topicsFrom(result),
|
||||
@@ -181,7 +181,8 @@ Discourse.TopicList.reopenClass({
|
||||
draft_sequence: result.topic_list.draft_sequence,
|
||||
draft: result.topic_list.draft,
|
||||
for_period: result.topic_list.for_period,
|
||||
loaded: true
|
||||
loaded: true,
|
||||
per_page: result.topic_list.per_page
|
||||
});
|
||||
|
||||
if (result.topic_list.filtered_category) {
|
||||
@@ -212,7 +213,7 @@ Discourse.TopicList.reopenClass({
|
||||
|
||||
// Try to use the cached version if it exists and is greater than the topics per page
|
||||
if (cachedList && (cachedList.get('filter') === filter) &&
|
||||
(cachedList.get('topics.length') || 0) > Discourse.SiteSettings.topics_per_page &&
|
||||
(cachedList.get('topics.length') || 0) > cachedList.get('per_page') &&
|
||||
_.isEqual(cachedList.get('listParams'), filterParams)) {
|
||||
cachedList.set('loaded', true);
|
||||
|
||||
|
||||
@@ -51,6 +51,10 @@ class ApplicationController < ActionController::Base
|
||||
@use_crawler_layout ||= (has_escaped_fragment? || CrawlerDetection.crawler?(request.user_agent))
|
||||
end
|
||||
|
||||
def slow_platform?
|
||||
request.user_agent =~ /Android/
|
||||
end
|
||||
|
||||
def set_layout
|
||||
use_crawler_layout? ? 'crawler' : 'application'
|
||||
end
|
||||
|
||||
@@ -264,6 +264,7 @@ class ListController < ApplicationController
|
||||
search: params[:search]
|
||||
}
|
||||
options[:no_subcategories] = true if params[:no_subcategories] == 'true'
|
||||
options[:slow_platform] = true if slow_platform?
|
||||
|
||||
options
|
||||
end
|
||||
|
||||
@@ -47,7 +47,7 @@ class TopicsController < ApplicationController
|
||||
opts = params.slice(:username_filters, :filter, :page, :post_number, :show_deleted)
|
||||
username_filters = opts[:username_filters]
|
||||
|
||||
opts[:slow_platform] = true if request.user_agent =~ /Android/
|
||||
opts[:slow_platform] = true if slow_platform?
|
||||
opts[:username_filters] = username_filters.split(',') if username_filters.is_a?(String)
|
||||
|
||||
begin
|
||||
|
||||
@@ -9,7 +9,8 @@ class TopicList
|
||||
:draft_key,
|
||||
:draft_sequence,
|
||||
:filter,
|
||||
:for_period
|
||||
:for_period,
|
||||
:per_page
|
||||
|
||||
def initialize(filter, current_user, topics, opts=nil)
|
||||
@filter = filter
|
||||
|
||||
@@ -5,7 +5,8 @@ class TopicListSerializer < ApplicationSerializer
|
||||
:draft,
|
||||
:draft_key,
|
||||
:draft_sequence,
|
||||
:for_period
|
||||
:for_period,
|
||||
:per_page
|
||||
|
||||
has_many :topics, serializer: TopicListItemSerializer, embed: :objects
|
||||
|
||||
@@ -18,7 +19,7 @@ class TopicListSerializer < ApplicationSerializer
|
||||
end
|
||||
|
||||
def include_more_topics_url?
|
||||
object.more_topics_url.present? && (object.topics.size == SiteSetting.topics_per_page)
|
||||
object.more_topics_url.present? && (object.topics.size == object.per_page)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user