# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  include Pundit::Authorization
  include Pagy::Backend

  before_action :authenticate_user!
  before_action :set_tema
  before_action :preparar_splash

  # Pundit: redireciona se não autorizado
  rescue_from Pundit::NotAuthorizedError do |e|
    flash[:alert] = "Você não tem permissão para realizar esta ação."
    redirect_to root_path
  end

  private

  def set_tema
    @tema = current_user&.tema_preferido || 'dark'
  end

  # Mostra a animação de abertura uma única vez, na primeira página HTML após o
  # login. O flag é gravado em #after_sign_in_path_for (Devise) e nos logins do
  # motorista (PIN/QR); aqui ele é lido e apagado (one-shot).
  def preparar_splash
    return unless request.get? && request.format.html?

    @mostrar_splash = session.delete(:mostrar_splash)
  end

  def after_sign_in_path_for(resource)
    session[:mostrar_splash] = true
    resource.motorista? ? motorista_dashboard_path : dashboard_path
  end
end
