|  |  |  | /* | 
					
						
							|  |  |  |  * vim: ts=4:sw=4:expandtab | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | (function () { | 
					
						
							|  |  |  |     'use strict'; | 
					
						
							|  |  |  |     window.Whisper = window.Whisper || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Whisper.InstallView = Whisper.View.extend({ | 
					
						
							|  |  |  |         initialize: function(options) { | 
					
						
							|  |  |  |             this.counter = 0; | 
					
						
							|  |  |  |             this.$('#device-name').val(options.deviceName); | 
					
						
							|  |  |  |             this.$('#step1').show(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         events: function() { | 
					
						
							|  |  |  |             return { | 
					
						
							|  |  |  |                 'click .step1': this.selectStep.bind(this, 1), | 
					
						
							|  |  |  |                 'click .step2': this.selectStep.bind(this, 2), | 
					
						
							|  |  |  |                 'click .step3': this.selectStep.bind(this, 3) | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         clearQR: function() { | 
					
						
							|  |  |  |             this.$('#qr').text("Connecting..."); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         setProvisioningUrl: function(url) { | 
					
						
							|  |  |  |                 this.$('#qr').html(''); | 
					
						
							|  |  |  |                 new QRCode(this.$('#qr')[0]).makeCode(url); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         confirmNumber: function(number) { | 
					
						
							|  |  |  |             var parsed = libphonenumber.parse(number); | 
					
						
							|  |  |  |             if (!libphonenumber.isValidNumber(parsed)) { | 
					
						
							|  |  |  |                 throw new Error('Invalid number'); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             this.$('#step4 .number').text(libphonenumber.format( | 
					
						
							|  |  |  |                 parsed, | 
					
						
							|  |  |  |                 libphonenumber.PhoneNumberFormat.INTERNATIONAL | 
					
						
							|  |  |  |             )); | 
					
						
							|  |  |  |             this.selectStep(4); | 
					
						
							|  |  |  |             this.$('#device-name').focus(); | 
					
						
							|  |  |  |             return new Promise(function(resolve, reject) { | 
					
						
							|  |  |  |                 this.$('#step4 .cancel').click(function(e) { | 
					
						
							|  |  |  |                     reject(); | 
					
						
							|  |  |  |                 }); | 
					
						
							|  |  |  |                 this.$('#sync').click(function(e) { | 
					
						
							|  |  |  |                     e.stopPropagation(); | 
					
						
							|  |  |  |                     var name = this.$('#device-name').val(); | 
					
						
							|  |  |  |                     if (name.trim().length === 0) { | 
					
						
							|  |  |  |                         this.$('#device-name').focus(); | 
					
						
							|  |  |  |                         return; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     this.$('.progress-dialog .status').text('Generating Keys'); | 
					
						
							|  |  |  |                     this.selectStep(5); | 
					
						
							|  |  |  |                     resolve(name); | 
					
						
							|  |  |  |                 }.bind(this)); | 
					
						
							|  |  |  |             }.bind(this)); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         incrementCounter: function() { | 
					
						
							|  |  |  |             this.$('.progress-dialog .bar').css('width', (++this.counter * 100 / 100) + '%'); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         selectStep: function(step) { | 
					
						
							|  |  |  |             this.$('.step').hide(); | 
					
						
							|  |  |  |             this.$('#step' + step).show(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         showSync: function() { | 
					
						
							|  |  |  |             this.$('.progress-dialog .status').text('Syncing groups and contacts'); | 
					
						
							|  |  |  |             this.$('.progress-dialog .bar').addClass('progress-bar-striped active'); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         showTooManyDevices: function() { | 
					
						
							|  |  |  |             this.selectStep('TooManyDevices'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | })(); |