You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
/*
 | 
						|
 * vim: ts=4:sw=4:expandtab
 | 
						|
 */
 | 
						|
(function () {
 | 
						|
    'use strict';
 | 
						|
    window.Whisper = window.Whisper || {};
 | 
						|
 | 
						|
    Whisper.StandaloneRegistrationView = Whisper.View.extend({
 | 
						|
        templateName: 'standalone',
 | 
						|
        className: 'full-screen-flow',
 | 
						|
        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: {
 | 
						|
            'validation input.number': 'onValidation',
 | 
						|
            'click #request-voice': 'requestVoice',
 | 
						|
            'click #request-sms': 'requestSMSVerification',
 | 
						|
            'change #code': 'onChangeCode',
 | 
						|
            'click #verifyCode': 'verifyCode',
 | 
						|
        },
 | 
						|
        verifyCode: function(e) {
 | 
						|
            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() {
 | 
						|
            window.removeSetupMenuItems();
 | 
						|
            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() {
 | 
						|
            window.removeSetupMenuItems();
 | 
						|
            $('#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');
 | 
						|
            }
 | 
						|
        }
 | 
						|
    });
 | 
						|
})();
 |