Fix pt translations, improve pre-cache queries, removing will_paginate
from accounts/tags because it's a terribly inefficient way to paginate large sets of data
This commit is contained in:
		
							parent
							
								
									bdf7d8f8fd
								
							
						
					
					
						commit
						1d0321fc45
					
				
					 10 changed files with 21 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,10 +8,10 @@ pt:
 | 
			
		|||
    failure:
 | 
			
		||||
      already_authenticated: A sua sessão já está aberta.
 | 
			
		||||
      inactive: A sua contra ainda não está ativada.
 | 
			
		||||
      invalid: %{authentication_keys} ou password inválidos.
 | 
			
		||||
      invalid: "%{authentication_keys} ou password inválidos."
 | 
			
		||||
      last_attempt: Tem mais uma tentativa antes de a sua conta ser protegida.
 | 
			
		||||
      locked: A sua conta está protegida
 | 
			
		||||
      not_found_in_database: %{authentication_keys} ou password inválidos.
 | 
			
		||||
      not_found_in_database: "%{authentication_keys} ou password inválidos."
 | 
			
		||||
      timeout: A sua sessão expirou. Por favore entre de novo para continuar.
 | 
			
		||||
      unauthenticated: Você precsa de entrar ou registar-se antes de continuar.
 | 
			
		||||
      unconfirmed: Você tem de confirmar o seu endereço de email antes de continuar.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,7 @@
 | 
			
		|||
pt:
 | 
			
		||||
  about:
 | 
			
		||||
    about_instance: "<em>%{instance}</em> é uma instância de Mastodon."
 | 
			
		||||
    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.
 | 
			
		||||
    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.
 | 
			
		||||
    get_started: Como começar
 | 
			
		||||
    source_code: Source code
 | 
			
		||||
    terms: Termos
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue