From 636d4b64db425262a426f432749a0fb8d04fb6c4 Mon Sep 17 00:00:00 2001 From: wandji20 Date: Sun, 13 Oct 2024 01:17:00 +0100 Subject: [PATCH] Handle order voucher responses with turbo_stream --- .../voucher_adjustments_controller.rb | 21 +++++++------------ app/views/checkout/_voucher_section.html.haml | 6 +++--- .../render_error.turbo_stream.haml | 4 ++++ .../update_payment_section.turbo_stream.haml | 2 ++ 4 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 app/views/voucher_adjustments/render_error.turbo_stream.haml create mode 100644 app/views/voucher_adjustments/update_payment_section.turbo_stream.haml diff --git a/app/controllers/voucher_adjustments_controller.rb b/app/controllers/voucher_adjustments_controller.rb index c4f5fdf5fb..ebe8ee7dfa 100644 --- a/app/controllers/voucher_adjustments_controller.rb +++ b/app/controllers/voucher_adjustments_controller.rb @@ -60,24 +60,19 @@ class VoucherAdjustmentsController < BaseController end def update_payment_section - render cable_ready: cable_car.replace( - selector: "#checkout-payment-methods", - html: render_to_string(partial: "checkout/payment", locals: { step: "payment" }) - ) + respond_to do |format| + format.html { head :ok } + format.turbo_stream { render :update_payment_section } + end end def render_error flash.now[:error] = @order.errors.full_messages.to_sentence - render status: :unprocessable_entity, cable_ready: cable_car. - replace("#flashes", partial("shared/flashes", locals: { flashes: flash })). - replace( - "#voucher-section", - partial( - "checkout/voucher_section", - locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first } - ) - ) + respond_to do |format| + format.html { head :unprocessable_entity } + format.turbo_stream { render :render_error, status: :unprocessable_entity } + end end def voucher_params diff --git a/app/views/checkout/_voucher_section.html.haml b/app/views/checkout/_voucher_section.html.haml index 0f7fb12f53..fd51b79943 100644 --- a/app/views/checkout/_voucher_section.html.haml +++ b/app/views/checkout/_voucher_section.html.haml @@ -2,13 +2,13 @@ .checkout-title = t("checkout.step2.voucher.apply_voucher") .checkout-input{"data-controller": "toggle-control"} - = form_with url: voucher_adjustments_path, model: @order, method: :post, data: { remote: true } do |form| + = form_with url: voucher_adjustments_path, model: @order, method: :post, data: { turbo: true } do |form| - if voucher_adjustment.present? .two-columns-inputs.voucher %span.button.voucher-added %i.ofn-i_051-check-big = t("checkout.step2.voucher.voucher", voucher_amount: voucher_adjustment.originator.display_value) - = link_to t("checkout.step2.voucher.remove_code"), voucher_adjustment_path(id: voucher_adjustment.id), method: "delete", data: { confirm: t("checkout.step2.voucher.confirm_delete") } + = link_to t("checkout.step2.voucher.remove_code"), voucher_adjustment_path(id: voucher_adjustment.id), data: { turbo_method: "delete", confirm: t("checkout.step2.voucher.confirm_delete") } - # This might not be true, ie payment method including a fee which wouldn't be covered by voucher or tax implication raising total to be bigger than the voucher amount ? - if voucher_adjustment.originator.amount > order.pre_discount_total && voucher_adjustment.originator.is_a?(Vouchers::FlatRate) @@ -22,4 +22,4 @@ = form.error_message_on :voucher_code %div.checkout-input - = form.submit t("checkout.step2.voucher.apply"), disabled: true, class: "button cancel voucher-button", "data-disable-with": false, data: { "toggle-control-target": "control" } + = form.submit t("checkout.step2.voucher.apply"), disabled: true, class: "button cancel voucher-button", data: { "toggle-control-target": "control" } diff --git a/app/views/voucher_adjustments/render_error.turbo_stream.haml b/app/views/voucher_adjustments/render_error.turbo_stream.haml new file mode 100644 index 0000000000..9c5e68bef0 --- /dev/null +++ b/app/views/voucher_adjustments/render_error.turbo_stream.haml @@ -0,0 +1,4 @@ += turbo_stream.replace 'flashes' do + = render partial: "shared/flashes", locals: { flashes: flash } += turbo_stream.replace 'voucher-section' do + = render partial: 'checkout/voucher_section', locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first } \ No newline at end of file diff --git a/app/views/voucher_adjustments/update_payment_section.turbo_stream.haml b/app/views/voucher_adjustments/update_payment_section.turbo_stream.haml new file mode 100644 index 0000000000..d56c1bfd10 --- /dev/null +++ b/app/views/voucher_adjustments/update_payment_section.turbo_stream.haml @@ -0,0 +1,2 @@ += turbo_stream.replace 'checkout-payment-methods' do + = render partial: "checkout/payment", locals: { step: "payment" } \ No newline at end of file