From dc91fd482a65cca24ae6f66f92e8e924124fce43 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 13 Oct 2017 16:35:07 +0900 Subject: Set InstancePresenter to `Auth::RegistrationsController#create` (#5366) --- app/controllers/auth/registrations_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/controllers') diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index aac3c31ff..223db96ff 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -6,7 +6,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController before_action :check_enabled_registrations, only: [:new, :create] before_action :configure_sign_up_params, only: [:create] before_action :set_sessions, only: [:edit, :update] - before_action :set_instance_presenter, only: [:new, :update] + before_action :set_instance_presenter, only: [:new, :create, :update] def destroy not_found -- cgit From b8db386e056fe236ed3f41e563a824e30733c4ce Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 13 Oct 2017 16:44:29 +0200 Subject: Fix UserTrackingConcern firing on every request, optimize some queries (#5368) - For some reason, :if option on before_action did not work. It got executed every time, returned false, and the action run anyway, which led to the current_sign_in_at and sign_in_count being updated on every request - Return "do not filter" early in FeedManager#filter_from_home? if the status is authored by receiver. Usually this method is not called for own statuses at all, but it is called when Feed#get uses the database - Return early if #reload_stale_associations! has nothing to load to save a database query with WHERE 1=0 --- app/controllers/concerns/user_tracking_concern.rb | 6 ++++-- app/lib/feed_manager.rb | 3 ++- app/models/notification.rb | 5 ++++- app/models/status.rb | 6 +++++- 4 files changed, 15 insertions(+), 5 deletions(-) (limited to 'app/controllers') diff --git a/app/controllers/concerns/user_tracking_concern.rb b/app/controllers/concerns/user_tracking_concern.rb index 8a63af95d..8663c3086 100644 --- a/app/controllers/concerns/user_tracking_concern.rb +++ b/app/controllers/concerns/user_tracking_concern.rb @@ -7,12 +7,14 @@ module UserTrackingConcern UPDATE_SIGN_IN_HOURS = 24 included do - before_action :set_user_activity, if: %i(user_signed_in? user_needs_sign_in_update?) + before_action :set_user_activity end private def set_user_activity + return unless user_needs_sign_in_update? + # Mark as signed-in today current_user.update_tracked_fields!(request) @@ -21,7 +23,7 @@ module UserTrackingConcern end def user_needs_sign_in_update? - current_user.current_sign_in_at.nil? || current_user.current_sign_in_at < UPDATE_SIGN_IN_HOURS.hours.ago + user_signed_in? && (current_user.current_sign_in_at.nil? || current_user.current_sign_in_at < UPDATE_SIGN_IN_HOURS.hours.ago) end def user_needs_feed_update? diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 100f6c8f8..89aeaadcd 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -115,7 +115,8 @@ class FeedManager end def filter_from_home?(status, receiver_id) - return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?) + return false if receiver_id == status.account_id + return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?) check_for_mutes = [status.account_id] check_for_mutes.concat([status.reblog.account_id]) if status.reblog? diff --git a/app/models/notification.rb b/app/models/notification.rb index 1e64d1ae9..0a5d987cf 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -68,7 +68,10 @@ class Notification < ApplicationRecord class << self def reload_stale_associations!(cached_items) account_ids = cached_items.map(&:from_account_id).uniq - accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h + + return if account_ids.empty? + + accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h cached_items.each do |item| item.from_account = accounts[item.from_account_id] diff --git a/app/models/status.rb b/app/models/status.rb index 6db1f2a4c..624e33395 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -194,7 +194,11 @@ class Status < ApplicationRecord account_ids << item.reblog.account_id if item.reblog? end - accounts = Account.where(id: account_ids.uniq).map { |a| [a.id, a] }.to_h + account_ids.uniq! + + return if account_ids.empty? + + accounts = Account.where(id: account_ids).map { |a| [a.id, a] }.to_h cached_items.each do |item| item.account = accounts[item.account_id] -- cgit From 1bdd694a0a62c4dce608c5bd43d3015c072d8524 Mon Sep 17 00:00:00 2001 From: KY Date: Sat, 14 Oct 2017 20:40:10 +0800 Subject: Fix #5351 - Redirection with page params after copy emoji (#5387) * Fix #5351 - Redirection with page params after copy emoji * Add page params to copy emoji link --- app/controllers/admin/custom_emojis_controller.rb | 6 ++++-- app/views/admin/custom_emojis/_custom_emoji.html.haml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'app/controllers') diff --git a/app/controllers/admin/custom_emojis_controller.rb b/app/controllers/admin/custom_emojis_controller.rb index ca81f3255..5cce5bce4 100644 --- a/app/controllers/admin/custom_emojis_controller.rb +++ b/app/controllers/admin/custom_emojis_controller.rb @@ -31,10 +31,12 @@ module Admin emoji = CustomEmoji.new(domain: nil, shortcode: @custom_emoji.shortcode, image: @custom_emoji.image) if emoji.save - redirect_to admin_custom_emojis_path, notice: I18n.t('admin.custom_emojis.copied_msg') + flash[:notice] = I18n.t('admin.custom_emojis.copied_msg') else - redirect_to admin_custom_emojis_path, alert: I18n.t('admin.custom_emojis.copy_failed_msg') + flash[:alert] = I18n.t('admin.custom_emojis.copy_failed_msg') end + + redirect_to admin_custom_emojis_path(params[:page]) end def enable diff --git a/app/views/admin/custom_emojis/_custom_emoji.html.haml b/app/views/admin/custom_emojis/_custom_emoji.html.haml index 53263c43f..1fa64908c 100644 --- a/app/views/admin/custom_emojis/_custom_emoji.html.haml +++ b/app/views/admin/custom_emojis/_custom_emoji.html.haml @@ -10,7 +10,7 @@ = custom_emoji.domain %td - unless custom_emoji.local? - = table_link_to 'copy', t('admin.custom_emojis.copy'), copy_admin_custom_emoji_path(custom_emoji), method: :post + = table_link_to 'copy', t('admin.custom_emojis.copy'), copy_admin_custom_emoji_path(custom_emoji, page: params[:page]), method: :post %td - if custom_emoji.disabled? = table_link_to 'power-off', t('admin.custom_emojis.enable'), enable_admin_custom_emoji_path(custom_emoji), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } -- cgit