angular.module('cesium.join.controllers', ['cesium.services']) .config(function($stateProvider) { 'ngInject'; $stateProvider .state('app.join', { url: "/join", views: { 'menuContent': { templateUrl: "templates/home/home.html", controller: 'JoinCtrl' } } }) ; }) .controller('JoinCtrl', JoinController) .controller('JoinModalCtrl', JoinModalController) ; function JoinController($timeout, Modals) { 'ngInject'; // Open join modal $timeout(function() { Modals.showJoin(); }, 100); } function JoinModalController($scope, $state, UIUtils, CryptoUtils, Modals, csWallet, csCurrency, BMA) { 'ngInject'; $scope.formData = { pseudo: '' }; $scope.slides = { slider: null, options: { loop: false, effect: 'slide', speed: 500 } }; $scope.isLastSlide = false; $scope.search = { looking: true }; $scope.showUsername = false; $scope.showPassword = false; $scope.smallscreen = UIUtils.screen.isSmall(); $scope.userIdPattern = BMA.constants.regex.USER_ID; csCurrency.load() .then(function (data) { if (data) { $scope.knownCurrencies = data.currencies; } $scope.search.looking = false; }) .catch(UIUtils.onError('GET_CURRENCIES_FAILED')); $scope.slidePrev = function() { $scope.slides.slider.unlockSwipes(); $scope.slides.slider.slidePrev(); $scope.slides.slider.lockSwipes(); $scope.isLastSlide = false; }; $scope.slideNext = function() { $scope.slides.slider.unlockSwipes(); $scope.slides.slider.slideNext(); $scope.slides.slider.lockSwipes(); $scope.isLastSlide = $scope.formData.isMember ? ($scope.slides.slider.activeIndex === 5) : ($scope.slides.slider.activeIndex === 4); }; $scope.selectCurrency = function(currency) { $scope.formData.currency = currency; $scope.slideNext(); }; $scope.selectAccountType = function(type) { $scope.formData.isMember = (type === 'member'); $scope.slideNext(); }; $scope.showAccountPubkey = function() { $scope.formData.computing=true; CryptoUtils.connect($scope.formData.username, $scope.formData.password) .then(function(keypair) { $scope.formData.pubkey = CryptoUtils.util.encode_base58(keypair.signPk); $scope.formData.computing=false; }) .catch(function(err) { $scope.formData.computing=false; console.error('>>>>>>>' , err); UIUtils.alert.error('ERROR.CRYPTO_UNKNOWN_ERROR'); }); }; $scope.formDataChanged = function() { $scope.formData.computing=false; $scope.formData.pubkey=null; }; $scope.doNext = function(formName) { console.debug("[join] form " + formName + " OK. index=" + $scope.slides.slider.activeIndex); if (!formName) { formName = $scope.slides.slider.activeIndex === 2 ? 'saltForm' : ($scope.slides.slider.activeIndex === 3 ? 'passwordForm' : ($scope.slides.slider.activeIndex === 4 ? 'pseudoForm' : formName)); } if (formName) { $scope[formName].$submitted=true; if(!$scope[formName].$valid) { return; } if (formName === 'passwordForm' && !$scope.formData.isMember) { $scope.slideNext(2); // skip pseudo $scope.showAccountPubkey(); } else { $scope.slideNext(); if (formName === 'pseudoForm') { $scope.showAccountPubkey(); } } } }; $scope.doNewAccount = function(confirm) { if (!confirm) { return UIUtils.alert.confirm($scope.formData.isMember ? 'ACCOUNT.NEW.CONFIRMATION_MEMBER_ACCOUNT' : 'ACCOUNT.NEW.CONFIRMATION_WALLET_ACCOUNT') .then(function(confirm) { if (confirm) { $scope.doNewAccount(true); } }); } var onErrorLogout = function(message) { return function(err) { csWallet.logout() .then(function(){ UIUtils.onError(message)(err); }); }; }; UIUtils.loading.show(); csWallet.login($scope.formData.username, $scope.formData.password) .then(function() { if (!$scope.formData.isMember) { // Redirect to wallet $state.go('app.view_wallet'); return; } // Send self csWallet.self($scope.formData.pseudo, false/*do NOT load membership here*/) .then(function() { // Send membership IN csWallet.membership.inside() .then(function() { $scope.closeModal(); // Redirect to wallet $state.go('app.view_wallet'); }) .catch(onErrorLogout('ERROR.SEND_MEMBERSHIP_IN_FAILED')); }) .catch(onErrorLogout('ERROR.SEND_IDENTITY_FAILED')); }) .catch(function(err) { UIUtils.loading.hide(); console.error('>>>>>>>' , err); UIUtils.alert.error('ERROR.CRYPTO_UNKNOWN_ERROR'); }); }; $scope.showHelpModal = function(helpAnchor) { if (!helpAnchor) { helpAnchor = $scope.slides.slider.activeIndex == 2 ? 'join-salt' : ( $scope.slides.slider.activeIndex == 3 ? 'join-password' : 'join-pseudo'); } Modals.showHelp({anchor: helpAnchor}); }; // TODO: remove auto add account when done /*$timeout(function() { //$scope.selectCurrency('test_net'); //$scope.selectAccountType('member'); $scope.formData.username="azertypoi"; $scope.formData.confirmUsername=$scope.formData.username; $scope.formData.password="azertypoi"; $scope.formData.confirmPassword=$scope.formData.password; $scope.formData.pseudo="azertypoi"; //$scope.doNext(); //$scope.doNext(); }, 400);*/ }