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
|
def show
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html do
|
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
|
end
|
||||||
|
|
||||||
format.atom do
|
format.atom do
|
||||||
|
@ -29,11 +30,11 @@ class AccountsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def followers
|
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
|
end
|
||||||
|
|
||||||
def following
|
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
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -47,7 +47,7 @@ class Api::V1::AccountsController < ApiController
|
||||||
end
|
end
|
||||||
|
|
||||||
def statuses
|
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)
|
@statuses = cache_collection(@statuses, Status)
|
||||||
|
|
||||||
set_maps(@statuses)
|
set_maps(@statuses)
|
||||||
|
|
|
@ -7,7 +7,7 @@ class Api::V1::TimelinesController < ApiController
|
||||||
respond_to :json
|
respond_to :json
|
||||||
|
|
||||||
def home
|
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)
|
@statuses = cache_collection(@statuses)
|
||||||
|
|
||||||
set_maps(@statuses)
|
set_maps(@statuses)
|
||||||
|
@ -23,7 +23,7 @@ class Api::V1::TimelinesController < ApiController
|
||||||
end
|
end
|
||||||
|
|
||||||
def mentions
|
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)
|
@statuses = cache_collection(@statuses)
|
||||||
|
|
||||||
set_maps(@statuses)
|
set_maps(@statuses)
|
||||||
|
@ -39,7 +39,7 @@ class Api::V1::TimelinesController < ApiController
|
||||||
end
|
end
|
||||||
|
|
||||||
def public
|
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)
|
@statuses = cache_collection(@statuses)
|
||||||
|
|
||||||
set_maps(@statuses)
|
set_maps(@statuses)
|
||||||
|
@ -56,7 +56,7 @@ class Api::V1::TimelinesController < ApiController
|
||||||
|
|
||||||
def tag
|
def tag
|
||||||
@tag = Tag.find_by(name: params[:id].downcase)
|
@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)
|
@statuses = cache_collection(@statuses)
|
||||||
|
|
||||||
set_maps(@statuses)
|
set_maps(@statuses)
|
||||||
|
|
|
@ -61,6 +61,7 @@ class ApplicationController < ActionController::Base
|
||||||
def cache_collection(raw, klass)
|
def cache_collection(raw, klass)
|
||||||
return raw unless klass.respond_to?(:with_includes)
|
return raw unless klass.respond_to?(:with_includes)
|
||||||
|
|
||||||
|
raw = raw.select(:id, :updated_at).to_a if raw.is_a?(ActiveRecord::Relation)
|
||||||
uncached_ids = []
|
uncached_ids = []
|
||||||
cached_keys_with_value = Rails.cache.read_multi(*raw.map(&:cache_key))
|
cached_keys_with_value = Rails.cache.read_multi(*raw.map(&:cache_key))
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ class TagsController < ApplicationController
|
||||||
layout 'public'
|
layout 'public'
|
||||||
|
|
||||||
def show
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,4 +4,8 @@ module ApplicationHelper
|
||||||
def active_nav_class(path)
|
def active_nav_class(path)
|
||||||
current_page?(path) ? 'active' : ''
|
current_page?(path) ? 'active' : ''
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def id_paginate(path, per_page, collection)
|
||||||
|
# todo
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,4 +14,4 @@
|
||||||
.activity-stream
|
.activity-stream
|
||||||
= render partial: 'stream_entries/status', collection: @statuses, as: :status
|
= 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
|
.activity-stream
|
||||||
= render partial: 'stream_entries/status', collection: @statuses, as: :status, cached: true
|
= 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:
|
failure:
|
||||||
already_authenticated: A sua sessão já está aberta.
|
already_authenticated: A sua sessão já está aberta.
|
||||||
inactive: A sua contra ainda não está ativada.
|
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.
|
last_attempt: Tem mais uma tentativa antes de a sua conta ser protegida.
|
||||||
locked: A sua conta está 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.
|
timeout: A sua sessão expirou. Por favore entre de novo para continuar.
|
||||||
unauthenticated: Você precsa de entrar ou registar-se antes de 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.
|
unconfirmed: Você tem de confirmar o seu endereço de email antes de continuar.
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
pt:
|
pt:
|
||||||
about:
|
about:
|
||||||
about_instance: "<em>%{instance}</em> é uma instância de Mastodon."
|
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>
|
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.
|
||||||
á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
|
get_started: Como começar
|
||||||
source_code: Source code
|
source_code: Source code
|
||||||
terms: Termos
|
terms: Termos
|
||||||
|
|
Loading…
Reference in a new issue