175 lines
4.7 KiB
JavaScript
175 lines
4.7 KiB
JavaScript
(function(context,$) {
|
|
|
|
"use strict";
|
|
context.JK = context.JK || {};
|
|
context.JK.CheckoutSignInScreen = function(app) {
|
|
|
|
var logger = context.JK.logger;
|
|
var rest = context.JK.Rest();
|
|
|
|
var $screen = null;
|
|
var $navigation = null;
|
|
var $signinForm = null;
|
|
var $self = $(this);
|
|
var $email = null;
|
|
var $password = null;
|
|
var $signinBtn = null;
|
|
var $signupBtn = null;
|
|
var $inputElements = null;
|
|
var $contentHolder = null;
|
|
var $btnNext = null;
|
|
var $btnFacebook = null;
|
|
var checkoutUtils = context.JK.CheckoutUtilsInstance;
|
|
|
|
function beforeShow(data) {
|
|
renderNavigation();
|
|
renderLoggedInState();
|
|
}
|
|
|
|
function afterShow(data) {
|
|
}
|
|
|
|
|
|
function renderLoggedInState(){
|
|
if(isLoggedIn()) {
|
|
$contentHolder.removeClass('not-signed-in').addClass('signed-in')
|
|
}
|
|
else {
|
|
$contentHolder.removeClass('signed-in').addClass('not-signed-in')
|
|
}
|
|
}
|
|
|
|
function isLoggedIn() {
|
|
return !!context.JK.currentUserId;
|
|
}
|
|
|
|
function events() {
|
|
$signinForm.on('submit', login);
|
|
$signinBtn.on('click', login);
|
|
$btnNext.on('click', moveNext);
|
|
$btnFacebook.on('click', facebookSignup);
|
|
}
|
|
|
|
function reset() {
|
|
$inputElements.removeClass('login-error');
|
|
}
|
|
|
|
function moveNext() {
|
|
window.location = '/client#/checkoutPayment';
|
|
|
|
return false;
|
|
}
|
|
|
|
function facebookSignup() {
|
|
|
|
var $btn = $(this);
|
|
|
|
if($btn.is('.disabled')) {
|
|
logger.debug("ignoring fast attempt at facebook signup")
|
|
return false;
|
|
}
|
|
|
|
$btn.addClass('disabled')
|
|
|
|
rest.createSignupHint({redirect_location: '/client#/checkoutPayment'})
|
|
.done(function() {
|
|
// send the user on to facebook signin
|
|
window.location = $btn.attr('href');
|
|
})
|
|
.fail(function() {
|
|
app.notify({text:"Facebook Signup is not working properly"});
|
|
})
|
|
.always(function() {
|
|
$btn.removeClass('disabled')
|
|
})
|
|
return false;
|
|
}
|
|
function login() {
|
|
if($signinBtn.is('.disabled')) {
|
|
return false;
|
|
}
|
|
|
|
var email = $email.val();
|
|
var password = $password.val();
|
|
|
|
reset();
|
|
|
|
$signinBtn.text('TRYING...').addClass('disabled')
|
|
|
|
rest.login({email: email, password: password, remember_me: true})
|
|
.done(function(user) {
|
|
// now determine where we should send the user
|
|
rest.getShoppingCarts()
|
|
.done(function(carts) {
|
|
if(checkoutUtils.hasOneFreeItemInShoppingCart(carts)) {
|
|
window.location = '/client#/redeemComplete'
|
|
window.location.reload();
|
|
}
|
|
else {
|
|
window.location = '/client#/checkoutPayment'
|
|
window.location.reload();
|
|
}
|
|
})
|
|
.fail(function() {
|
|
window.location = '/client#/jamtrackBrowse'
|
|
window.location.reload();
|
|
})
|
|
})
|
|
.fail(function(jqXHR) {
|
|
if(jqXHR.status == 422) {
|
|
$inputElements.addClass('login-error')
|
|
}
|
|
else {
|
|
app.notifyServerError(jqXHR, "Unable to log in")
|
|
}
|
|
})
|
|
.always(function() {
|
|
$signinBtn.text('SIGN IN').removeClass('disabled')
|
|
})
|
|
|
|
return false;
|
|
}
|
|
|
|
function renderNavigation() {
|
|
$navigation.html("");
|
|
|
|
var navigationHtml = $(
|
|
context._.template(
|
|
$('#template-checkout-navigation').html(),
|
|
{current: 1, purchases_disable_class: gon.global.purchases_enabled ? 'hidden' : ''},
|
|
{variable: 'data'}
|
|
)
|
|
);
|
|
|
|
$navigation.append(navigationHtml);
|
|
}
|
|
|
|
function initialize() {
|
|
var screenBindings = {
|
|
'beforeShow': beforeShow,
|
|
'afterShow': afterShow
|
|
};
|
|
app.bindScreen('checkoutSignin', screenBindings);
|
|
|
|
$screen = $("#checkoutSignInScreen");
|
|
$navigation = $screen.find(".checkout-navigation-bar");
|
|
$signinForm = $screen.find(".signin-form");
|
|
$signinBtn = $signinForm.find('.signin-submit');
|
|
$email = $signinForm.find('input[name="email"]');
|
|
$password = $signinForm.find('input[name="password"]');
|
|
$inputElements = $signinForm.find('.input-elements');
|
|
$contentHolder = $screen.find('.content-holder');
|
|
$btnNext = $screen.find('.btnNext');
|
|
$btnFacebook = $screen.find('.signin-facebook')
|
|
|
|
if($screen.length == 0) throw "$screen must be specified";
|
|
if($navigation.length == 0) throw "$navigation must be specified";
|
|
|
|
events();
|
|
}
|
|
|
|
this.initialize = initialize;
|
|
|
|
return this;
|
|
}
|
|
})(window,jQuery); |