Handle user registration responses with turbo_stream

This commit is contained in:
wandji20
2024-10-13 01:01:17 +01:00
parent 5e6244f7e6
commit 2f30ddf751
5 changed files with 21 additions and 22 deletions

View File

@@ -4,7 +4,6 @@ module Spree
class UsersController < ::BaseController
include Spree::Core::ControllerHelpers
include I18nHelper
include CablecarResponses
layout 'darkswarm'
@@ -31,13 +30,10 @@ module Spree
registered = Spree::User.find_by(email: params[:email]).present?
if registered
render status: :ok, cable_ready: cable_car.
inner_html(
"#login-feedback",
partial("layouts/alert",
locals: { type: "alert", message: t('devise.failure.already_registered') })
).
dispatch_event(name: "login:modal:open")
respond_to do |format|
format.html { head :ok }
format.turbo_stream { :registered_email }
end
else
head :not_found
end
@@ -48,12 +44,12 @@ module Spree
if @user.save
flash[:success] = t('devise.user_registrations.spree_user.signed_up_but_unconfirmed')
render cable_ready: cable_car.redirect_to(url: main_app.root_path)
redirect_to main_app.root_path
else
render status: :unprocessable_entity, cable_ready: cable_car.morph(
"#signup-tab",
partial("layouts/signup_tab", locals: { signup_form_user: @user })
)
respond_to do |format|
format.html { head :unprocessable_entity }
format.turbo_stream { render :create, status: :unprocessable_entity }
end
end
end
@@ -98,14 +94,10 @@ module Spree
end
def render_alert_timestamp_error_message
render cable_ready: cable_car.inner_html(
"#signup-feedback",
partial("layouts/alert",
locals: {
type: "alert",
message: InvisibleCaptcha.timestamp_error_message
})
)
respond_to do |format|
format.html { head :ok }
format.turbo_stream { render :render_alert_timestamp_error_message }
end
end
end
end

View File

@@ -1,7 +1,7 @@
- signup_form_user = Spree::User.new if local_assigns[:signup_form_user].nil?
#signup-tab
= form_with model: signup_form_user, url: spree.account_path, scope: :user, data: { remote: "true" } do |form|
= form_with model: signup_form_user, url: spree.account_path, scope: :user, data: { turbo: true } do |form|
.row
.large-12.columns#signup-feedback

View File

@@ -0,0 +1,2 @@
= turbo_stream.update 'signup-tab' do
= render partial: 'layouts/signup_tab', locals: { signup_form_user: @user }

View File

@@ -0,0 +1,2 @@
= turbo_stream.replace 'login-feedback' do
= render partial: "layouts/alert", locals: { type: "alert", message: t('devise.failure.already_registered') }

View File

@@ -0,0 +1,3 @@
= turbo_stream.update 'signup-feedback' do
= render partial: 'layouts/alert',
locals: { type: "alert", message: InvisibleCaptcha.timestamp_error_message }