FEATURE: Load fewer topics in the topic list on slow platforms (Android)

This commit is contained in:
Robin Ward
2014-12-15 11:54:26 -05:00
parent a014507da4
commit b1bc4741b1
9 changed files with 29 additions and 11 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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