diff --git a/src/main/account.js b/src/main/account.js index df51745e..06230af5 100644 --- a/src/main/account.js +++ b/src/main/account.js @@ -112,6 +112,19 @@ export default class Account { }) } + removeAll () { + return new Promise((resolve, reject) => { + this.db.remove( + {}, + { multi: true }, + (err, numRemoved) => { + if (err) return reject(err) + resolve(numRemoved) + } + ) + }) + } + async forwardAccount (ac) { if (ac.order <= 1) { return ac.order diff --git a/src/main/index.js b/src/main/index.js index e247bd5a..7fe2c407 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -383,6 +383,18 @@ ipcMain.on('refresh-accounts', (event, _) => { }) }) +ipcMain.on('remove-all-accounts', (event, _) => { + const account = new Account(accountDB) + account.removeAll() + .then(() => { + event.sender.send('response-remove-all-accounts') + }) + .catch((err) => { + log.error(err) + event.sender.send('error-remove-all-accounts', err) + }) +}) + // streaming let userStreaming = null diff --git a/src/renderer/components/Preferences/Account.vue b/src/renderer/components/Preferences/Account.vue index 2a787669..358ef332 100644 --- a/src/renderer/components/Preferences/Account.vue +++ b/src/renderer/components/Preferences/Account.vue @@ -43,6 +43,19 @@ +
+ +

Are you sure to remove all associations?

+
+ cancel + confirm +
+ Remove all associations +
+
@@ -53,7 +66,8 @@ export default { name: 'account', data () { return { - openRemoveDialog: false + openRemoveDialog: false, + deletePopoverVisible: false } }, computed: { @@ -103,6 +117,13 @@ export default { .then(() => { this.loadAccounts() }) + }, + removeAllAssociations () { + this.deletePopoverVisible = false + this.$store.dispatch('Preferences/Account/removeAllAccounts') + .then(() => { + this.$router.push('/login') + }) } } } @@ -124,6 +145,11 @@ export default { .el-table::before { background-color: var(--theme-border-color); } + + .reset { + margin: 24px 12px; + text-align: right; + } } .allow-up { diff --git a/src/renderer/store/Preferences/Account.js b/src/renderer/store/Preferences/Account.js index 82a69c50..dd06e0a3 100644 --- a/src/renderer/store/Preferences/Account.js +++ b/src/renderer/store/Preferences/Account.js @@ -67,6 +67,19 @@ const Account = { resolve() }) }) + }, + removeAllAccounts () { + return new Promise((resolve, reject) => { + ipcRenderer.send('remove-all-accounts') + ipcRenderer.once('error-remove-all-accounts', (event, err) => { + ipcRenderer.removeAllListeners('response-remove-all-accounts') + reject(err) + }) + ipcRenderer.once('response-remove-all-accounts', (event) => { + ipcRenderer.removeAllListeners('error-remove-all-accounts') + resolve() + }) + }) } } }