From 52424fba6d35b86279793b4439a0ab6501459c88 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 2 Jun 2024 04:00:46 +0200 Subject: [PATCH] Add available_services helper to be used for desktop and mobile --- app/helpers/publisher_helper.rb | 4 ++++ app/views/publisher/_publisher.html.haml | 7 +++---- app/views/publisher/_publisher.mobile.haml | 9 ++++----- spec/helpers/publisher_helper_spec.rb | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/helpers/publisher_helper.rb b/app/helpers/publisher_helper.rb index 905d216c7..b7ba0ccb9 100644 --- a/app/helpers/publisher_helper.rb +++ b/app/helpers/publisher_helper.rb @@ -5,6 +5,10 @@ # 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, diff --git a/app/views/publisher/_publisher.html.haml b/app/views/publisher/_publisher.html.haml index f759655d1..5d3633eca 100644 --- a/app/views/publisher/_publisher.html.haml +++ b/app/views/publisher/_publisher.html.haml @@ -55,10 +55,9 @@ %button.btn.btn-group.btn-primary#submit= t("shared.publisher.share") .btn-toolbar.pull-right#publisher-service-icons - - if current_user.services - - current_user.services.each do |service| - - if AppConfig.configured_services.map(&:to_s).include? service.provider - = service_button(service) + - available_services.each do |service| + = service_button(service) + .btn.btn-link.question_mark{title: t("shared.public_explain.manage"), data: {toggle: "modal", target: "#publicExplainModal"}} %i.entypo-cog diff --git a/app/views/publisher/_publisher.mobile.haml b/app/views/publisher/_publisher.mobile.haml index da881fa25..ece543724 100644 --- a/app/views/publisher/_publisher.mobile.haml +++ b/app/views/publisher/_publisher.mobile.haml @@ -11,11 +11,10 @@ = hidden_field_tag "aspect_ids[]", "all_aspects" .form-group %span#publisher-service-icons - - if current_user.services - - for service in current_user.services - = image_tag "social-media-logos/#{service.provider}-32x32.png", - title: service.provider.titleize, class: "service_icon dim", - id: "#{service.provider}", maxchar: "#{service.class::MAX_CHARACTERS}" + - available_services.each do |service| + = image_tag "social-media-logos/#{service.provider}-32x32.png", + title: service.provider.titleize, class: "service_icon dim", + id: service.provider, maxchar: service.class::MAX_CHARACTERS.to_s .clear #publisher-textarea-wrapper diff --git a/spec/helpers/publisher_helper_spec.rb b/spec/helpers/publisher_helper_spec.rb index 34dcad051..60b959627 100644 --- a/spec/helpers/publisher_helper_spec.rb +++ b/spec/helpers/publisher_helper_spec.rb @@ -1,6 +1,25 @@ # frozen_string_literal: true describe PublisherHelper, type: :helper do + describe "#available_services" do + include Devise::Test::ControllerHelpers + + before do + @user = alice + + @user.services << FactoryBot.build(:service, type: "Services::Wordpress", provider: "wordpress") + @user.services << FactoryBot.build(:service, type: "Services::Tumblr", provider: "tumblr") + + def current_user + @user + end + end + + it "returns only the connected and enabled services" do + expect(available_services.map(&:provider)).to eq(%w[tumblr]) + end + end + describe "#public_selected?" do it "returns true when the selected_aspects contains 'public'" do expect(helper.public_selected?(["public"])).to be_truthy