/* 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'); } }, }); })();