2018-07-03 22:33:50 +00:00
|
|
|
/* global i18n: false */
|
|
|
|
/* global Whisper: false */
|
|
|
|
|
|
|
|
/* eslint-disable no-new */
|
|
|
|
|
|
|
|
// eslint-disable-next-line func-names
|
|
|
|
(function() {
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
window.Whisper = window.Whisper || {};
|
|
|
|
const { Database } = 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() {
|
|
|
|
this.step = CLEAR_DATA_STEPS.CHOICE;
|
|
|
|
},
|
|
|
|
onCancel() {
|
|
|
|
this.remove();
|
|
|
|
},
|
|
|
|
async onDeleteAllData() {
|
2018-07-21 19:00:08 +00:00
|
|
|
window.log.info('Deleting everything!');
|
2018-07-03 22:33:50 +00:00
|
|
|
this.step = CLEAR_DATA_STEPS.DELETING;
|
|
|
|
this.render();
|
|
|
|
|
|
|
|
try {
|
|
|
|
await Database.close();
|
2018-07-21 19:00:08 +00:00
|
|
|
window.log.info('All database connections closed. Starting delete.');
|
2018-07-03 22:33:50 +00:00
|
|
|
} catch (error) {
|
2018-07-21 19:00:08 +00:00
|
|
|
window.log.error(
|
|
|
|
'Something went wrong closing all database connections.'
|
|
|
|
);
|
2018-07-03 22:33:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
this.clearAllData();
|
|
|
|
},
|
|
|
|
async clearAllData() {
|
|
|
|
try {
|
|
|
|
await Promise.all([Logs.deleteAll(), Database.drop()]);
|
|
|
|
} catch (error) {
|
2018-07-21 19:00:08 +00:00
|
|
|
window.log.error(
|
2018-07-03 22:33:50 +00:00
|
|
|
'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'),
|
|
|
|
};
|
|
|
|
},
|
|
|
|
});
|
|
|
|
})();
|