# frozen_string_literal: true

#   Copyright (c) 2010-2011, Diaspora Inc.  This file is
#   licensed under the Affero General Public License version 3 or later.  See
#   the COPYRIGHT file.

module PublisherHelper
  def available_services
    current_user.services.select {|service| AppConfig.configured_services.map(&:to_s).include? service.provider }
  end

  def service_button(service)
    provider_title = I18n.t("services.index.share_to", provider: service.provider.titleize)
    content_tag :div,
                class:   "btn btn-link service_icon dim",
                title:   "#{provider_title} (#{service.nickname})",
                id:      service.provider,
                maxchar: service.class::MAX_CHARACTERS,
                data:    {toggle: "tooltip", placement: "bottom"} do
      if service.provider == "wordpress"
        content_tag(:span, "", class: "social-media-logos-wordpress-16x16")
      else
        content_tag(:i, "", class: "entypo-social-#{service.provider} small")
      end
    end
  end

  def public_selected?(selected_aspects)
    "public" == selected_aspects.try(:first) || publisher_boolean?(:public)
  end

  def all_aspects_selected?(selected_aspects)
    !all_aspects.empty? && all_aspects.size == selected_aspects.size && !public_selected?(selected_aspects)
  end

  def aspect_selected?(aspect, selected_aspects)
    selected_aspects.include?(aspect) && !all_aspects_selected?(selected_aspects) && !public_selected?(selected_aspects)
  end

  def publisher_open?
    publisher_boolean?(:open)
  end

  private

  def publisher_boolean?(option)
    @stream.try(:publisher).try(option) == true
  end
end
