refs #2500 Fix account preferences
This commit is contained in:
parent
0adc0dd8ac
commit
47e2b1b8e8
|
@ -184,19 +184,22 @@ export const removeAllAccounts = (db: sqlite3.Database): Promise<null> => {
|
|||
})
|
||||
}
|
||||
|
||||
export const forwardAccount = (db: sqlite3.Database, account: LocalAccount): Promise<LocalAccount> => {
|
||||
export const forwardAccount = (db: sqlite3.Database, id: number): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('BEGIN TRANSACTION')
|
||||
|
||||
db.all('SELECT * FROM accounts ORDER BY sort', (err, rows) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
const index = rows.findIndex(r => r.id === account.id)
|
||||
if (index < 0 || index >= rows.length) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return resolve(account)
|
||||
return reject(err)
|
||||
}
|
||||
|
||||
const index = rows.findIndex(r => r.id === id)
|
||||
if (index < 0 || index >= rows.length - 1) {
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return resolve(null)
|
||||
}
|
||||
const target = rows[index + 1]
|
||||
const base = rows[index]
|
||||
|
@ -204,24 +207,26 @@ export const forwardAccount = (db: sqlite3.Database, account: LocalAccount): Pro
|
|||
db.serialize(() => {
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [-100, base.id], err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [base.sort, target.id], err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [target.sort, base.id], err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
db.run('COMMIT')
|
||||
resolve(
|
||||
Object.assign(account, {
|
||||
order: target.sort
|
||||
})
|
||||
)
|
||||
return resolve(null)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -229,18 +234,22 @@ export const forwardAccount = (db: sqlite3.Database, account: LocalAccount): Pro
|
|||
})
|
||||
}
|
||||
|
||||
export const backwardAccount = (db: sqlite3.Database, account: LocalAccount): Promise<LocalAccount> => {
|
||||
export const backwardAccount = (db: sqlite3.Database, id: number): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('BEGIN TRANSACTION')
|
||||
|
||||
db.all('SELECT * FROM accounts ORDER BY sort', (err, rows) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
const index = rows.findIndex(r => r.id === account.id)
|
||||
|
||||
const index = rows.findIndex(r => r.id === id)
|
||||
if (index < 1) {
|
||||
return resolve(account)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return resolve(null)
|
||||
}
|
||||
const target = rows[index - 1]
|
||||
const base = rows[index]
|
||||
|
@ -248,25 +257,26 @@ export const backwardAccount = (db: sqlite3.Database, account: LocalAccount): Pr
|
|||
db.serialize(() => {
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [-100, base.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
reject(err)
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [base.sort, target.id], err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [target.sort, base.id], err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
db.run('COMMIT')
|
||||
resolve(
|
||||
Object.assign(account, {
|
||||
order: target.sort
|
||||
})
|
||||
)
|
||||
return resolve(null)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -522,12 +522,12 @@ ipcMain.handle('remove-account', async (_: IpcMainInvokeEvent, id: number) => {
|
|||
}
|
||||
})
|
||||
|
||||
ipcMain.handle('forward-account', async (_: IpcMainInvokeEvent, acct: LocalAccount) => {
|
||||
await forwardAccount(db, acct)
|
||||
ipcMain.handle('forward-account', async (_: IpcMainInvokeEvent, id: number) => {
|
||||
await forwardAccount(db, id)
|
||||
})
|
||||
|
||||
ipcMain.handle('backward-account', async (_: IpcMainInvokeEvent, acct: LocalAccount) => {
|
||||
await backwardAccount(db, acct)
|
||||
ipcMain.handle('backward-account', async (_: IpcMainInvokeEvent, id: number) => {
|
||||
await backwardAccount(db, id)
|
||||
})
|
||||
|
||||
ipcMain.handle('remove-all-accounts', async (_: IpcMainInvokeEvent) => {
|
||||
|
|
|
@ -16,7 +16,16 @@
|
|||
<el-table-column prop="domain" :label="$t('preferences.account.domain')"> </el-table-column>
|
||||
<el-table-column :label="$t('preferences.account.association')">
|
||||
<template #default="scope">
|
||||
<el-button class="action" link @click.prevent="removeAccount(scope.$index, accounts)">
|
||||
<el-button
|
||||
class="action"
|
||||
link
|
||||
@click.prevent="
|
||||
removeAccount(
|
||||
scope.$index,
|
||||
accounts.map(a => a.id)
|
||||
)
|
||||
"
|
||||
>
|
||||
<font-awesome-icon icon="xmark" />
|
||||
{{ $t('preferences.account.remove_association') }}
|
||||
</el-button>
|
||||
|
@ -25,12 +34,30 @@
|
|||
<el-table-column :label="$t('preferences.account.order')" width="60">
|
||||
<template #default="scope">
|
||||
<div class="allow-up">
|
||||
<el-button class="arrow-up action" link @click.prevent="forward(scope.$index, accounts)">
|
||||
<el-button
|
||||
class="arrow-up action"
|
||||
link
|
||||
@click.prevent="
|
||||
backward(
|
||||
scope.$index,
|
||||
accounts.map(a => a.id)
|
||||
)
|
||||
"
|
||||
>
|
||||
<font-awesome-icon icon="arrow-up" />
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="allow-down">
|
||||
<el-button class="arrow-down action" link @click.prevent="backward(scope.$index, accounts)">
|
||||
<el-button
|
||||
class="arrow-down action"
|
||||
link
|
||||
@click.prevent="
|
||||
forward(
|
||||
scope.$index,
|
||||
accounts.map(a => a.id)
|
||||
)
|
||||
"
|
||||
>
|
||||
<font-awesome-icon icon="arrow-down" />
|
||||
</el-button>
|
||||
</div>
|
||||
|
@ -61,7 +88,6 @@ import { useRouter } from 'vue-router'
|
|||
import { useStore } from '@/store'
|
||||
import { ACTION_TYPES, MUTATION_TYPES } from '@/store/Preferences/Account'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { LocalAccount } from '~/src/types/localAccount'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'account',
|
||||
|
@ -71,7 +97,13 @@ export default defineComponent({
|
|||
const i18n = useI18next()
|
||||
const router = useRouter()
|
||||
|
||||
const accounts = computed(() => store.state.Preferences.Account.accounts)
|
||||
const accounts = computed(() =>
|
||||
store.state.Preferences.Account.accounts.map(([a, s]) => ({
|
||||
id: a.id,
|
||||
username: a.username,
|
||||
domain: s.domain
|
||||
}))
|
||||
)
|
||||
const accountLoading = computed(() => store.state.Preferences.Account.accountLoading)
|
||||
const backgroundColor = computed(() => store.state.App.theme.background_color)
|
||||
|
||||
|
@ -93,7 +125,7 @@ export default defineComponent({
|
|||
}
|
||||
}
|
||||
|
||||
const removeAccount = (index: number, accounts: Array<LocalAccount>) => {
|
||||
const removeAccount = (index: number, accounts: Array<number>) => {
|
||||
store
|
||||
.dispatch(`${space}/${ACTION_TYPES.REMOVE_ACCOUNT}`, accounts[index])
|
||||
.then(() => {
|
||||
|
@ -107,13 +139,13 @@ export default defineComponent({
|
|||
})
|
||||
}
|
||||
|
||||
const forward = (index: number, accounts: Array<LocalAccount>) => {
|
||||
const forward = (index: number, accounts: Array<number>) => {
|
||||
store.dispatch(`${space}/${ACTION_TYPES.FORWARD_ACCOUNT}`, accounts[index]).then(() => {
|
||||
loadAccounts()
|
||||
})
|
||||
}
|
||||
|
||||
const backward = (index: number, accounts: Array<LocalAccount>) => {
|
||||
const backward = (index: number, accounts: Array<number>) => {
|
||||
store.dispatch(`${space}/${ACTION_TYPES.BACKWARD_ACCOUNT}`, accounts[index]).then(() => {
|
||||
loadAccounts()
|
||||
})
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { Module, MutationTree, ActionTree } from 'vuex'
|
||||
import { toRaw } from 'vue'
|
||||
import { LocalAccount } from '~/src/types/localAccount'
|
||||
import { RootState } from '@/store'
|
||||
import { MyWindow } from '~/src/types/global'
|
||||
|
@ -45,14 +44,14 @@ const actions: ActionTree<AccountState, RootState> = {
|
|||
commit(MUTATION_TYPES.UPDATE_ACCOUNTS, accounts)
|
||||
return accounts
|
||||
},
|
||||
[ACTION_TYPES.REMOVE_ACCOUNT]: async (_, account: LocalAccount) => {
|
||||
await win.ipcRenderer.invoke('remove-account', account.id)
|
||||
[ACTION_TYPES.REMOVE_ACCOUNT]: async (_, id: number) => {
|
||||
await win.ipcRenderer.invoke('remove-account', id)
|
||||
},
|
||||
[ACTION_TYPES.FORWARD_ACCOUNT]: async (_, account: LocalAccount) => {
|
||||
await win.ipcRenderer.invoke('forward-account', toRaw(account))
|
||||
[ACTION_TYPES.FORWARD_ACCOUNT]: async (_, id: number) => {
|
||||
await win.ipcRenderer.invoke('forward-account', id)
|
||||
},
|
||||
[ACTION_TYPES.BACKWARD_ACCOUNT]: async (_, account: LocalAccount) => {
|
||||
await win.ipcRenderer.invoke('backward-account', toRaw(account))
|
||||
[ACTION_TYPES.BACKWARD_ACCOUNT]: async (_, id: number) => {
|
||||
await win.ipcRenderer.invoke('backward-account', id)
|
||||
},
|
||||
[ACTION_TYPES.REMOVE_ALL_ACCOUNTS]: async () => {
|
||||
await win.ipcRenderer.invoke('remove-all-accounts')
|
||||
|
|
Loading…
Reference in New Issue