41 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module Admin::DashboardHelper
 | 
						|
  def relevant_account_ip(account, ip_query)
 | 
						|
    default_ip = [account.user_current_sign_in_ip || account.user_sign_up_ip]
 | 
						|
 | 
						|
    matched_ip = begin
 | 
						|
      ip_query_addr = IPAddr.new(ip_query)
 | 
						|
      account.user.recent_ips.find { |(_, ip)| ip_query_addr.include?(ip) } || default_ip
 | 
						|
    rescue IPAddr::Error
 | 
						|
      default_ip
 | 
						|
    end.last
 | 
						|
 | 
						|
    if matched_ip
 | 
						|
      link_to matched_ip, admin_accounts_path(ip: matched_ip)
 | 
						|
    else
 | 
						|
      '-'
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def relevant_account_timestamp(account)
 | 
						|
    timestamp, exact = begin
 | 
						|
      if account.user_current_sign_in_at && account.user_current_sign_in_at < 24.hours.ago
 | 
						|
        [account.user_current_sign_in_at, true]
 | 
						|
      elsif account.user_current_sign_in_at
 | 
						|
        [account.user_current_sign_in_at, false]
 | 
						|
      elsif account.user_pending?
 | 
						|
        [account.user_created_at, true]
 | 
						|
      elsif account.last_status_at.present?
 | 
						|
        [account.last_status_at, true]
 | 
						|
      else
 | 
						|
        [nil, false]
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    return '-' if timestamp.nil?
 | 
						|
    return t('generic.today') unless exact
 | 
						|
 | 
						|
    content_tag(:time, l(timestamp), class: 'time-ago', datetime: timestamp.iso8601, title: l(timestamp))
 | 
						|
  end
 | 
						|
end
 |