|  |  |  | /* | 
					
						
							|  |  |  |  * vim: ts=4:sw=4:expandtab | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | (function () { | 
					
						
							|  |  |  |     'use strict'; | 
					
						
							|  |  |  |     window.Whisper = window.Whisper || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Whisper.StandaloneRegistrationView = Whisper.View.extend({ | 
					
						
							|  |  |  |         templateName: 'standalone', | 
					
						
							|  |  |  |         className: 'install main', | 
					
						
							|  |  |  |         initialize: function() { | 
					
						
							|  |  |  |             this.accountManager = getAccountManager(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             this.render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             var number = textsecure.storage.user.getNumber(); | 
					
						
							|  |  |  |             if (number) { | 
					
						
							|  |  |  |                 this.$('input.number').val(number); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             this.phoneView = new Whisper.PhoneInputView({el: this.$('#phone-number-input')}); | 
					
						
							|  |  |  |             this.$('#error').hide(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         events: { | 
					
						
							|  |  |  |             'submit #form': 'submit', | 
					
						
							|  |  |  |             'validation input.number': 'onValidation', | 
					
						
							|  |  |  |             'change #code': 'onChangeCode', | 
					
						
							|  |  |  |             'click #request-voice': 'requestVoice', | 
					
						
							|  |  |  |             'click #request-sms': 'requestSMSVerification', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         submit: function(e) { | 
					
						
							|  |  |  |             e.preventDefault(); | 
					
						
							|  |  |  |             var number = this.phoneView.validateNumber(); | 
					
						
							|  |  |  |             var verificationCode = $('#code').val().replace(/\D+/g, ""); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             this.accountManager.registerSingleDevice(number, verificationCode).then(function() { | 
					
						
							|  |  |  |                 this.$el.trigger('openInbox'); | 
					
						
							|  |  |  |             }.bind(this)).catch(this.log.bind(this)); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         log: function (s) { | 
					
						
							|  |  |  |             console.log(s); | 
					
						
							|  |  |  |             this.$('#status').text(s); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         validateCode: function() { | 
					
						
							|  |  |  |             var verificationCode = $('#code').val().replace(/\D/g, ''); | 
					
						
							|  |  |  |             if (verificationCode.length == 6) { | 
					
						
							|  |  |  |                 return verificationCode; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         displayError: function(error) { | 
					
						
							|  |  |  |             this.$('#error').hide().text(error).addClass('in').fadeIn(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onValidation: function() { | 
					
						
							|  |  |  |             if (this.$('#number-container').hasClass('valid')) { | 
					
						
							|  |  |  |                 this.$('#request-sms, #request-voice').removeAttr('disabled'); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 this.$('#request-sms, #request-voice').prop('disabled', 'disabled'); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onChangeCode: function() { | 
					
						
							|  |  |  |             if (!this.validateCode()) { | 
					
						
							|  |  |  |                 this.$('#code').addClass('invalid'); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 this.$('#code').removeClass('invalid'); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         requestVoice: function() { | 
					
						
							|  |  |  |             this.$('#error').hide(); | 
					
						
							|  |  |  |             var number = this.phoneView.validateNumber(); | 
					
						
							|  |  |  |             if (number) { | 
					
						
							|  |  |  |                 this.accountManager.requestVoiceVerification(number).catch(this.displayError.bind(this)); | 
					
						
							|  |  |  |                 this.$('#step2').addClass('in').fadeIn(); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 this.$('#number-container').addClass('invalid'); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         requestSMSVerification: function() { | 
					
						
							|  |  |  |             $('#error').hide(); | 
					
						
							|  |  |  |             var number = this.phoneView.validateNumber(); | 
					
						
							|  |  |  |             if (number) { | 
					
						
							|  |  |  |                 this.accountManager.requestSMSVerification(number).catch(this.displayError.bind(this)); | 
					
						
							|  |  |  |                 this.$('#step2').addClass('in').fadeIn(); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 this.$('#number-container').addClass('invalid'); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | })(); |