class ApplicationController < ActionController::Base include RestoreLayoutPreferences, Onboardable, Localize, AutoSync, Authentication, Invitable, SelfHostable, StoreLocation, Impersonatable, Breadcrumbable, FeatureGuardable, Notifiable include Pagy::Backend before_action :detect_os before_action :set_default_chat before_action :set_active_storage_url_options private def detect_os user_agent = request.user_agent @os = case user_agent when /Windows/i then "windows" when /Macintosh/i then "mac" when /Linux/i then "linux" when /Android/i then "android" when /iPhone|iPad/i then "ios" else "" end end # By default, we show the user the last chat they interacted with def set_default_chat @last_viewed_chat = Current.user&.last_viewed_chat @chat = @last_viewed_chat end def set_active_storage_url_options ActiveStorage::Current.url_options = { protocol: request.protocol, host: request.host, port: request.optional_port } end end