~cytrogen/masto-fe

e13d2edd4733aad42a5404954421c92de6a644ff — Claire 2 years ago ce8b589
Fix “Authorized applications” inefficiently and incorrectly getting last use date (#25060)

M app/controllers/oauth/authorized_applications_controller.rb => app/controllers/oauth/authorized_applications_controller.rb +12 -0
@@ 9,6 9,8 @@ class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicatio
  before_action :set_body_classes
  before_action :set_cache_headers

  before_action :set_last_used_at_by_app, only: :index, unless: -> { request.format == :json }

  skip_before_action :require_functional!

  include Localized


@@ 35,4 37,14 @@ class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicatio
  def set_cache_headers
    response.cache_control.replace(private: true, no_store: true)
  end

  def set_last_used_at_by_app
    @last_used_at_by_app = Doorkeeper::AccessToken
                           .select('DISTINCT ON (application_id) application_id, last_used_at')
                           .where(resource_owner_id: current_resource_owner.id)
                           .where.not(last_used_at: nil)
                           .order(application_id: :desc, last_used_at: :desc)
                           .pluck(:application_id, :last_used_at)
                           .to_h
  end
end

M app/lib/application_extension.rb => app/lib/application_extension.rb +0 -4
@@ 9,10 9,6 @@ module ApplicationExtension
    validates :redirect_uri, length: { maximum: 2_000 }
  end

  def most_recently_used_access_token
    @most_recently_used_access_token ||= access_tokens.where.not(last_used_at: nil).order(last_used_at: :desc).first
  end

  def confirmation_redirect_uri
    redirect_uri.lines.first.strip
  end

M app/views/oauth/authorized_applications/index.html.haml => app/views/oauth/authorized_applications/index.html.haml +2 -2
@@ 18,8 18,8 @@

      .announcements-list__item__action-bar
        .announcements-list__item__meta
          - if application.most_recently_used_access_token
            = t('doorkeeper.authorized_applications.index.last_used_at', date: l(application.most_recently_used_access_token.last_used_at.to_date))
          - if @last_used_at_by_app[application.id]
            = t('doorkeeper.authorized_applications.index.last_used_at', date: l(@last_used_at_by_app[application.id].to_date))
          - else
            = t('doorkeeper.authorized_applications.index.never_used')