From 6392f1302eb6b824ab20ba84ea1241f7afde30b8 Mon Sep 17 00:00:00 2001 From: poupotte Date: Wed, 7 Oct 2015 17:44:38 +0200 Subject: [PATCH] Don't submit register request multiple times, refs #174 --- client/app/states/registration.coffee | 30 ++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/client/app/states/registration.coffee b/client/app/states/registration.coffee index 514e7a9d..0f784af6 100644 --- a/client/app/states/registration.coffee +++ b/client/app/states/registration.coffee @@ -129,6 +129,7 @@ module.exports = class Registration extends StateModel initSignup: -> # Declares a stream to receive the form submission @signup = new Bacon.Bus() + @isSignup = false # If the current step is `preset`, set the valve to block the step flow: # it will resume when the sign up form request returns a success. @@ -146,18 +147,23 @@ module.exports = class Registration extends StateModel - data: an object containing the form input entries as key/values pairs ### signupSubmit: (data) => - # Submit the form content to the register endpoint and creates a stream - # with the ajax promise - req = Bacon.fromPromise $.post '/register', JSON.stringify data - # If the request is successful, we stores the username in the global - # scope to prepare the login view. - req.subscribe -> window.username = data['public_name'] - # Unblock the step flow valve when the response is successful - @stepValve.plug req.map false - # Map request errors in the `errors` stream - @errors.plug req.errors().mapError '.responseJSON.errors' - # Map the request end to the next button busy state - @nextBusy.plug req.mapEnd false + if @isSignup + # Map the request end to the next button busy state + @nextBusy.push new Bacon.Next(false) + else + @isSignup = true + # Submit the form content to the register endpoint and creates a stream + # with the ajax promise + req = Bacon.fromPromise $.post '/register', JSON.stringify data + # If the request is successful, we stores the username in the global + # scope to prepare the login view. + req.subscribe -> window.username = data['public_name'] + # Unblock the step flow valve when the response is successful + @stepValve.plug req.map false + # Map request errors in the `errors` stream + @errors.plug req.errors().mapError '.responseJSON.errors' + # Map the request end to the next button busy state + @nextBusy.plug req.mapEnd false ###