From 19d37cb66d93a6210e24e485214cc4e11656aa68 Mon Sep 17 00:00:00 2001 From: wandji20 Date: Sat, 19 Oct 2024 22:40:00 +0100 Subject: [PATCH] Remove white_label reflex and handle remove enterprise logo wth turbo stream --- .../admin/enterprises_controller.rb | 29 ++++++++++++++++++- app/reflexes/white_label_reflex.rb | 22 -------------- .../enterprises/form/_white_label.html.haml | 8 +++-- config/routes/admin.rb | 1 + spec/system/admin/enterprises_spec.rb | 2 +- 5 files changed, 36 insertions(+), 26 deletions(-) delete mode 100644 app/reflexes/white_label_reflex.rb diff --git a/app/controllers/admin/enterprises_controller.rb b/app/controllers/admin/enterprises_controller.rb index 8a881aa840..410eb7b0e3 100644 --- a/app/controllers/admin/enterprises_controller.rb +++ b/app/controllers/admin/enterprises_controller.rb @@ -13,7 +13,7 @@ module Admin prepend_before_action :override_owner, only: :create prepend_before_action :override_sells, only: :create - before_action :load_countries, except: [:index, :register, :check_permalink] + before_action :load_countries, except: [:index, :register, :check_permalink, :remove_logo] before_action :load_methods_and_fees, only: [:edit, :update] before_action :load_groups, only: [:new, :edit, :update, :create] before_action :load_taxons, only: [:new, :edit, :update, :create] @@ -142,6 +142,33 @@ module Admin end end + def remove_logo + # delete the white_label_logo_link attribute as well since it has no meaning without the logo + @object.update!(white_label_logo: nil, white_label_logo_link: "") + + f = ActionView::Helpers::FormBuilder.new(:enterprise, @object, view_context, {}) + + respond_to do |format| + format.html do + flash[:success] = I18n.t("admin.enterprises.form.white_label.remove_logo_success") + redirect_to edit_admin_enterprise_path + end + format.turbo_stream do + flash.now[:success] = I18n.t("admin.enterprises.form.white_label.remove_logo_success") + render turbo_stream: [ + turbo_stream.replace( + 'white_label_panel', + partial: "admin/enterprises/form/white_label", locals: { f:, enterprise: @object } + ), + turbo_stream.append( + "flashes", + partial: 'admin/shared/flashes', locals: { flashes: flash } + ) + ] + end + end + end + protected def delete_custom_tab diff --git a/app/reflexes/white_label_reflex.rb b/app/reflexes/white_label_reflex.rb deleted file mode 100644 index 32aa6618bc..0000000000 --- a/app/reflexes/white_label_reflex.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -class WhiteLabelReflex < ApplicationReflex - include EnterpriseConcern - delegate :view_context, to: :controller - - def remove_logo - @enterprise.update!(white_label_logo: nil) - # delete the white_label_logo_link attribute as well since it has no meaning without the logo - @enterprise.update!(white_label_logo_link: "") - - f = ActionView::Helpers::FormBuilder.new(:enterprise, @enterprise, view_context, {}) - - html = render(partial: "admin/enterprises/form/white_label", - locals: { f:, enterprise: @enterprise }) - morph "#white_label_panel", html - - flash[:success] = I18n.t("admin.enterprises.form.white_label.remove_logo_success") - cable_ready.dispatch_event(name: "modal:close") - morph_admin_flashes - end -end diff --git a/app/views/admin/enterprises/form/_white_label.html.haml b/app/views/admin/enterprises/form/_white_label.html.haml index 4c74ed6885..1946e404b5 100644 --- a/app/views/admin/enterprises/form/_white_label.html.haml +++ b/app/views/admin/enterprises/form/_white_label.html.haml @@ -29,9 +29,13 @@ - if @object.white_label_logo.present? - = render ConfirmModalComponent.new(id: "remove_logo", confirm_reflexes: "click->WhiteLabel#remove_logo" ) do - .margin-bottom-30 + = render ModalComponent.new(id: "remove_logo", close_button: false, modal_class: 'tiny') do + .content.margin-bottom-30 = t('.remove_logo_confirm') + %p.modal-actions.justify-space-around + = link_to t('js.admin.modals.confirm'), remove_logo_admin_enterprise_path, class: 'button primary', data: { turbo: true, turbo_method: :patch, action: 'click->modal#close' } + %button.button.primary{ type: "button", 'data-action': 'click->modal#close' } + = t('js.admin.modals.cancel') // Hide groups tab boolean attribute diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 8036788d46..0b41958e84 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -33,6 +33,7 @@ Openfoodnetwork::Application.routes.draw do member do get :welcome patch :register + patch :remove_logo end resources :connected_apps, only: [:create, :destroy] diff --git a/spec/system/admin/enterprises_spec.rb b/spec/system/admin/enterprises_spec.rb index 86d007a46b..365c4698f8 100644 --- a/spec/system/admin/enterprises_spec.rb +++ b/spec/system/admin/enterprises_spec.rb @@ -685,7 +685,7 @@ RSpec.describe ' expect(distributor1.white_label_logo).to be_attached click_button "Remove" within ".reveal-modal" do - click_button "Confirm" + click_link "Confirm" end expect(flash_message).to match(/Logo removed/) distributor1.reload