module CacheKeysHelper

  def locale_and_user_status(authorable=nil)
    @cache_key_user ||= calculate_user_status(authorable)
    "#{I18n.locale}/#{@cache_key_user}"
  end

  def calculate_user_status(authorable=nil)
    user_status = "user"

    if user_signed_in?
      user_status += ":signed"
      user_status += ":verified" if current_user.level_two_or_three_verified?
      user_status += ":org" if current_user.organization?
      user_status += ":admin" if current_user.administrator?
      user_status += ":moderator" if current_user.moderator?
      user_status += ":author" if authorable && authorable.author == current_user
    else
      user_status += ":visitor"
    end

    user_status
  end

  # when commentable id and type are used but no need to update cache on updated_at changes
  def commentable_cache_key(commentable)
    "#{commentable.class.name}-#{commentable.id}"
  end

end