diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 8a6c3a8127..ab15b122b8 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -46,21 +46,31 @@ class ProductsReflex < ApplicationReflex render_products_form_with_flash end - def delete_product(product_id) - if ProductDeleter.delete(product_id) + def delete_product(id) + authorize! :delete, Spree::Product + product = product_finder(id).find_product + authorize! :delete, product + + if product.destroy puts "Deleted Successfully" else puts "Failure" end + fetch_and_render_products end - def delete_variant(variant_id) - if VariantDeleter.new.delete(variant_id) + def delete_variant(id) + authorize! :delete, Spree::Variant + variant = variant_scope.find(id) + authorize! :delete, variant + + if VariantDeleter.new.delete(variant) puts "Deleted Successfully" else puts "Failure" end + fetch_and_render_products end @@ -238,4 +248,12 @@ class ProductsReflex < ApplicationReflex params.permit(products: ::PermittedAttributes::Product.attributes) .to_h.with_indifferent_access end + + def product_finder(id) + ProductScopeQuery.new(current_user, {id:}) + end + + def variant_scope + Spree::Variant.active + end end diff --git a/app/services/product_deleter.rb b/app/services/product_deleter.rb deleted file mode 100644 index 5c6ce96fb8..0000000000 --- a/app/services/product_deleter.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -# This soft deletes the product -class ProductDeleter - # @param id [int] ID of the product to be deleted - def self.delete(id) - product = Spree::Product.find_by(id:) - product&.destroy - end -end diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index 27ef661923..e9ba45e46a 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -16,6 +16,7 @@ export default class extends ApplicationController { } deleteVariant() { + window.dispatchEvent(new Event('modal:close')); this.stimulate('Products#delete_variant', this.currentIdValue) }