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.
		
		
		
		
		
			
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
/* global Whisper, $, getAccountManager, textsecure */
 | 
						|
 | 
						|
/* eslint-disable more/no-then */
 | 
						|
 | 
						|
// eslint-disable-next-line func-names
 | 
						|
(function() {
 | 
						|
  'use strict';
 | 
						|
 | 
						|
  window.Whisper = window.Whisper || {};
 | 
						|
 | 
						|
  Whisper.StandaloneRegistrationView = Whisper.View.extend({
 | 
						|
    templateName: 'standalone',
 | 
						|
    className: 'full-screen-flow',
 | 
						|
    initialize() {
 | 
						|
      this.accountManager = getAccountManager();
 | 
						|
 | 
						|
      this.render();
 | 
						|
 | 
						|
      const 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() {
 | 
						|
      const number = this.phoneView.validateNumber();
 | 
						|
      const verificationCode = $('#code')
 | 
						|
        .val()
 | 
						|
        .replace(/\D+/g, '');
 | 
						|
 | 
						|
      this.accountManager
 | 
						|
        .registerSingleDevice(number, verificationCode)
 | 
						|
        .then(() => {
 | 
						|
          this.$el.trigger('openInbox');
 | 
						|
        })
 | 
						|
        .catch(this.log.bind(this));
 | 
						|
    },
 | 
						|
    log(s) {
 | 
						|
      window.log.info(s);
 | 
						|
      this.$('#status').text(s);
 | 
						|
    },
 | 
						|
    validateCode() {
 | 
						|
      const verificationCode = $('#code')
 | 
						|
        .val()
 | 
						|
        .replace(/\D/g, '');
 | 
						|
 | 
						|
      if (verificationCode.length === 6) {
 | 
						|
        return verificationCode;
 | 
						|
      }
 | 
						|
 | 
						|
      return null;
 | 
						|
    },
 | 
						|
    displayError(error) {
 | 
						|
      this.$('#error')
 | 
						|
        .hide()
 | 
						|
        .text(error)
 | 
						|
        .addClass('in')
 | 
						|
        .fadeIn();
 | 
						|
    },
 | 
						|
    onValidation() {
 | 
						|
      if (this.$('#number-container').hasClass('valid')) {
 | 
						|
        this.$('#request-sms, #request-voice').removeAttr('disabled');
 | 
						|
      } else {
 | 
						|
        this.$('#request-sms, #request-voice').prop('disabled', 'disabled');
 | 
						|
      }
 | 
						|
    },
 | 
						|
    onChangeCode() {
 | 
						|
      if (!this.validateCode()) {
 | 
						|
        this.$('#code').addClass('invalid');
 | 
						|
      } else {
 | 
						|
        this.$('#code').removeClass('invalid');
 | 
						|
      }
 | 
						|
    },
 | 
						|
    requestVoice() {
 | 
						|
      window.removeSetupMenuItems();
 | 
						|
      this.$('#error').hide();
 | 
						|
      const 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() {
 | 
						|
      window.removeSetupMenuItems();
 | 
						|
      $('#error').hide();
 | 
						|
      const 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');
 | 
						|
      }
 | 
						|
    },
 | 
						|
  });
 | 
						|
})();
 |