|  |  |  | /* global i18n: false */ | 
					
						
							|  |  |  | /* global Whisper: false */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* eslint-disable no-new */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // eslint-disable-next-line func-names
 | 
					
						
							|  |  |  | (function() { | 
					
						
							|  |  |  |   'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   window.Whisper = window.Whisper || {}; | 
					
						
							|  |  |  |   const { Logs } = window.Signal; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const CLEAR_DATA_STEPS = { | 
					
						
							|  |  |  |     CHOICE: 1, | 
					
						
							|  |  |  |     DELETING: 2, | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  |   window.Whisper.ClearDataView = Whisper.View.extend({ | 
					
						
							|  |  |  |     templateName: 'clear-data', | 
					
						
							|  |  |  |     className: 'full-screen-flow overlay', | 
					
						
							|  |  |  |     events: { | 
					
						
							|  |  |  |       'click .cancel': 'onCancel', | 
					
						
							|  |  |  |       'click .delete-all-data': 'onDeleteAllData', | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     initialize(onClear = null) { | 
					
						
							|  |  |  |       this.step = CLEAR_DATA_STEPS.CHOICE; | 
					
						
							|  |  |  |       this.onClear = onClear; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     onCancel() { | 
					
						
							|  |  |  |       this.remove(); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     async onDeleteAllData() { | 
					
						
							|  |  |  |       window.log.info('Deleting everything!'); | 
					
						
							|  |  |  |       this.step = CLEAR_DATA_STEPS.DELETING; | 
					
						
							|  |  |  |       this.render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       await this.clearAllData(); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     async clearAllData() { | 
					
						
							|  |  |  |       if (this.onClear) { | 
					
						
							|  |  |  |         this.onClear(); | 
					
						
							|  |  |  |       } else { | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |           await Logs.deleteAll(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           await window.Signal.Data.removeAll(); | 
					
						
							|  |  |  |           await window.Signal.Data.close(); | 
					
						
							|  |  |  |           await window.Signal.Data.removeDB(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           await window.Signal.Data.removeOtherData(); | 
					
						
							|  |  |  |         } catch (error) { | 
					
						
							|  |  |  |           window.log.error( | 
					
						
							|  |  |  |             'Something went wrong deleting all data:', | 
					
						
							|  |  |  |             error && error.stack ? error.stack : error | 
					
						
							|  |  |  |           ); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         window.restart(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     render_attributes() { | 
					
						
							|  |  |  |       return { | 
					
						
							|  |  |  |         isStep1: this.step === CLEAR_DATA_STEPS.CHOICE, | 
					
						
							|  |  |  |         header: i18n('deleteAllDataHeader'), | 
					
						
							|  |  |  |         body: i18n('deleteAllDataBody'), | 
					
						
							|  |  |  |         cancelButton: i18n('cancel'), | 
					
						
							|  |  |  |         deleteButton: i18n('deleteAllDataButton'), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         isStep2: this.step === CLEAR_DATA_STEPS.DELETING, | 
					
						
							|  |  |  |         deleting: i18n('deleteAllDataProgress'), | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | })(); |