register.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * vim: ts=4:sw=4:expandtab
  3. */
  4. ;(function() {
  5. 'use strict';
  6. extension.windows.getBackground(function(bg) {
  7. var accountManager = new bg.getAccountManager();
  8. function log(s) {
  9. console.log(s);
  10. $('#status').text(s);
  11. }
  12. function validateCode() {
  13. var verificationCode = $('#code').val().replace(/\D/g, '');
  14. if (verificationCode.length == 6) {
  15. return verificationCode;
  16. }
  17. }
  18. function displayError(error) {
  19. $('#error').hide().text(error).addClass('in').fadeIn();
  20. }
  21. var phoneView = new Whisper.PhoneInputView({el: $('#phone-number-input')});
  22. phoneView.$el.find('input.number').intlTelInput();
  23. var number = bg.textsecure.storage.user.getNumber();
  24. if (number) {
  25. $('input.number').val(number);
  26. }
  27. $('input.number').on('validation', function() {
  28. if ($('#number-container').hasClass('valid')) {
  29. $('#request-sms, #request-voice').removeAttr('disabled');
  30. } else {
  31. $('#request-sms, #request-voice').prop('disabled', 'disabled');
  32. }
  33. });
  34. $('#code').on('change', function() {
  35. if (!validateCode()) {
  36. $('#code').addClass('invalid');
  37. } else {
  38. $('#code').removeClass('invalid');
  39. }
  40. });
  41. $('#request-voice').click(function() {
  42. $('#error').hide();
  43. var number = phoneView.validateNumber();
  44. if (number) {
  45. accountManager.requestVoiceVerification(number).catch(displayError);
  46. $('#step2').addClass('in').fadeIn();
  47. } else {
  48. $('#number-container').addClass('invalid');
  49. }
  50. });
  51. $('#request-sms').click(function() {
  52. $('#error').hide();
  53. var number = phoneView.validateNumber();
  54. if (number) {
  55. accountManager.requestSMSVerification(number).catch(displayError);
  56. $('#step2').addClass('in').fadeIn();
  57. } else {
  58. $('#number-container').addClass('invalid');
  59. }
  60. });
  61. $('#form').submit(function(e) {
  62. e.preventDefault();
  63. var number = phoneView.validateNumber();
  64. var verificationCode = $('#code').val().replace(/\D+/g, "");
  65. bg.storage.put('first_install_ran', 1);
  66. accountManager.registerSingleDevice(number, verificationCode).then(function() {
  67. bg.openInbox();
  68. window.close();
  69. }).catch(function(e) {
  70. log(e);
  71. });
  72. });
  73. });
  74. })();