# frozen_string_literal: true

module UserAuthTokensMixin
  extend ActiveSupport::Concern

  included { attributes :id, :client_ip, :location, :browser, :device, :os, :icon, :created_at }

  def client_ip
    object.client_ip.to_s
  end

  def location
    ipinfo = DiscourseIpInfo.get(client_ip, locale: I18n.locale)
    ipinfo[:location].presence || I18n.t("staff_action_logs.unknown")
  end

  def browser
    val = BrowserDetection.browser(object.user_agent)
    I18n.t("user_auth_tokens.browser.#{val}")
  end

  def device
    val = BrowserDetection.device(object.user_agent)
    I18n.t("user_auth_tokens.device.#{val}")
  end

  def os
    val = BrowserDetection.os(object.user_agent)
    I18n.t("user_auth_tokens.os.#{val}")
  end

  def icon
    case BrowserDetection.os(object.user_agent)
    when :android
      "fab-android"
    when :chromeos
      "fab-chrome"
    when :macos, :ios
      "fab-apple"
    when :linux
      "fab-linux"
    when :windows
      "fab-windows"
    else
      "question"
    end
  end
end