]> cat aescling's git repositories - mastodon.git/commitdiff
Fix pt translations, improve pre-cache queries, removing will_paginate
authorEugen Rochko <eugen@zeonfederated.com>
Thu, 1 Dec 2016 15:26:25 +0000 (16:26 +0100)
committerEugen Rochko <eugen@zeonfederated.com>
Thu, 1 Dec 2016 15:26:25 +0000 (16:26 +0100)
from accounts/tags because it's a terribly inefficient way to paginate
large sets of data

app/controllers/accounts_controller.rb
app/controllers/api/v1/accounts_controller.rb
app/controllers/api/v1/timelines_controller.rb
app/controllers/application_controller.rb
app/controllers/tags_controller.rb
app/helpers/application_helper.rb
app/views/accounts/show.html.haml
app/views/tags/show.html.haml
config/locales/devise.pt.yml
config/locales/pt.yml

index 5d2f4eee0fba3ff7357e31f7231cae48554e1a94..b0e5a8320174764c3959abcfd6326852c8bee31f 100644 (file)
@@ -9,7 +9,8 @@ class AccountsController < ApplicationController
   def show
     respond_to do |format|
       format.html do
-        @statuses = @account.statuses.order('id desc').with_includes.with_counters.paginate(page: params[:page], per_page: 10)
+        @statuses = @account.statuses.order('id desc').paginate_by_max_id(20, params[:max_id || nil])
+        @statuses = cache_collection(@statuses, Status)
       end
 
       format.atom do
@@ -29,11 +30,11 @@ class AccountsController < ApplicationController
   end
 
   def followers
-    @followers = @account.followers.order('follows.created_at desc').paginate(page: params[:page], per_page: 6)
+    @followers = @account.followers.order('follows.created_at desc').paginate(page: params[:page], per_page: 12)
   end
 
   def following
-    @following = @account.following.order('follows.created_at desc').paginate(page: params[:page], per_page: 6)
+    @following = @account.following.order('follows.created_at desc').paginate(page: params[:page], per_page: 12)
   end
 
   private
index 9a356196cdb5965e86d68f6846c1234f57b37a77..0abdfd9fadc3ac2944a08f9caf03e5c3a7426441 100644 (file)
@@ -47,7 +47,7 @@ class Api::V1::AccountsController < ApiController
   end
 
   def statuses
-    @statuses = @account.statuses.paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a
+    @statuses = @account.statuses.paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id])
     @statuses = cache_collection(@statuses, Status)
 
     set_maps(@statuses)
index 89e54e2cf3b6b190080428339560901062c97aea..9727797e593d7fa2bd6c85188031a6360cfcf76b 100644 (file)
@@ -7,7 +7,7 @@ class Api::V1::TimelinesController < ApiController
   respond_to :json
 
   def home
-    @statuses = Feed.new(:home, current_account).get(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a
+    @statuses = Feed.new(:home, current_account).get(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id])
     @statuses = cache_collection(@statuses)
 
     set_maps(@statuses)
@@ -23,7 +23,7 @@ class Api::V1::TimelinesController < ApiController
   end
 
   def mentions
-    @statuses = Feed.new(:mentions, current_account).get(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a
+    @statuses = Feed.new(:mentions, current_account).get(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id])
     @statuses = cache_collection(@statuses)
 
     set_maps(@statuses)
@@ -39,7 +39,7 @@ class Api::V1::TimelinesController < ApiController
   end
 
   def public
-    @statuses = Status.as_public_timeline(current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a
+    @statuses = Status.as_public_timeline(current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id])
     @statuses = cache_collection(@statuses)
 
     set_maps(@statuses)
@@ -56,7 +56,7 @@ class Api::V1::TimelinesController < ApiController
 
   def tag
     @tag      = Tag.find_by(name: params[:id].downcase)
-    @statuses = @tag.nil? ? [] : Status.as_tag_timeline(@tag, current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a
+    @statuses = @tag.nil? ? [] : Status.as_tag_timeline(@tag, current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id])
     @statuses = cache_collection(@statuses)
 
     set_maps(@statuses)
index 9722f86b52fc16baddf03740df1e48d2cd2783d7..fbe4af07c37d4eec5472071f75b3358aea8ead62 100644 (file)
@@ -61,6 +61,7 @@ class ApplicationController < ActionController::Base
   def cache_collection(raw, klass)
     return raw unless klass.respond_to?(:with_includes)
 
+    raw                    = raw.select(:id, :updated_at).to_a if raw.is_a?(ActiveRecord::Relation)
     uncached_ids           = []
     cached_keys_with_value = Rails.cache.read_multi(*raw.map(&:cache_key))
 
index a6b359485257978a2ef021d1c093ddedfe6a53dd..4a70b2a8f8272a58881ddeb32caee9365cae5785 100644 (file)
@@ -4,6 +4,7 @@ class TagsController < ApplicationController
   layout 'public'
 
   def show
-    @statuses = Tag.find_by!(name: params[:id].downcase).statuses.order('id desc').with_includes.with_counters.paginate(page: params[:page], per_page: 10)
+    @statuses = Tag.find_by!(name: params[:id].downcase).statuses.order('id desc').paginate_by_max_id(20, params[:max_id] || nil)
+       @statuses = cache_collection(@statuses, Status)
   end
 end
index be82ff2fe38a62f88aecf2afefcfc2657c884b8a..29c2c912028ca13f6fbccd39d137c5880ed5bc90 100644 (file)
@@ -4,4 +4,8 @@ module ApplicationHelper
   def active_nav_class(path)
     current_page?(path) ? 'active' : ''
   end
+
+  def id_paginate(path, per_page, collection)
+       # todo
+  end
 end
index 563b4384959895c80eaeca3dbcaf7bd97dfab851..c04faa32f90f7514ae0c2067e52f193be4da4b14 100644 (file)
@@ -14,4 +14,4 @@
   .activity-stream
     = render partial: 'stream_entries/status', collection: @statuses, as: :status
 
-= will_paginate @statuses, pagination_options
+= id_paginate account_url(@account), 20, @statuses
index 0e6fd2db7ae3ae283481fa8b3e65794a5fa43800..bfe5c0439ffddeec41bcd0608508f0cd6457e9bd 100644 (file)
@@ -5,4 +5,4 @@
   .activity-stream
     = render partial: 'stream_entries/status', collection: @statuses, as: :status, cached: true
 
-= will_paginate @statuses, pagination_options
+= id_paginate tag_path, 20, @statuses
index 6c6f3d4d292413d1c05acc871e595e0149c57a12..2de4b7ca110411a0021422fb747862060849382b 100644 (file)
@@ -8,10 +8,10 @@ pt:
     failure:\r
       already_authenticated: A sua sessão já está aberta.\r
       inactive: A sua contra ainda não está ativada.\r
-      invalid: %{authentication_keys} ou password inválidos.\r
+      invalid: "%{authentication_keys} ou password inválidos."\r
       last_attempt: Tem mais uma tentativa antes de a sua conta ser protegida.\r
       locked: A sua conta está protegida\r
-      not_found_in_database: %{authentication_keys} ou password inválidos.\r
+      not_found_in_database: "%{authentication_keys} ou password inválidos."\r
       timeout: A sua sessão expirou. Por favore entre de novo para continuar.\r
       unauthenticated: Você precsa de entrar ou registar-se antes de continuar.\r
       unconfirmed: Você tem de confirmar o seu endereço de email antes de continuar.\r
index 2d74c7c8513a270c12226b80a580babb8950510c..321fdbe23d9e033eda73e9fe9ac211235825079c 100644 (file)
@@ -2,8 +2,7 @@
 pt:\r
   about:\r
     about_instance: "<em>%{instance}</em> é uma instância de Mastodon."\r
-    about_mastodon: Mastodon é um servidor de rede social <em>grátis, e open-source</em>. Uma alternativa <em>descentralizada</em> \r
-    ás plataformas comerciais, que evita o risco de uma única empresa monopolizar a sua comunicação. Qualquer um pode ter uma instância Mastodon e assim participar na <em>rede social federada</em> sem problemas.\r
+    about_mastodon: Mastodon é um servidor de rede social <em>grátis, e open-source</em>. Uma alternativa <em>descentralizada</em> ás plataformas comerciais, que evita o risco de uma única empresa monopolizar a sua comunicação. Qualquer um pode ter uma instância Mastodon e assim participar na <em>rede social federada</em> sem problemas.\r
     get_started: Como começar\r
     source_code: Source code\r
     terms: Termos\r