2019-04-06 15:08:12 +02:00
|
|
|
import { Module, MutationTree, ActionTree } from 'vuex'
|
2019-06-06 16:44:50 +02:00
|
|
|
import { LocalAccount } from '~/src/types/localAccount'
|
2019-04-14 16:11:24 +02:00
|
|
|
import { RootState } from '@/store'
|
2019-12-04 14:35:53 +01:00
|
|
|
import { MyWindow } from '~/src/types/global'
|
|
|
|
|
2020-04-11 11:22:49 +02:00
|
|
|
const win = (window as any) as MyWindow
|
2019-04-06 15:08:12 +02:00
|
|
|
|
2019-06-06 16:44:50 +02:00
|
|
|
export type AccountState = {
|
|
|
|
accounts: Array<LocalAccount>
|
2019-04-06 15:08:12 +02:00
|
|
|
accountLoading: boolean
|
|
|
|
}
|
|
|
|
|
|
|
|
const state = (): AccountState => ({
|
|
|
|
accounts: [],
|
|
|
|
accountLoading: false
|
|
|
|
})
|
|
|
|
|
|
|
|
export const MUTATION_TYPES = {
|
|
|
|
UPDATE_ACCOUNTS: 'updateAccounts',
|
|
|
|
UPDATE_ACCOUNT_LOADING: 'updateAccountLoading'
|
|
|
|
}
|
|
|
|
|
|
|
|
const mutations: MutationTree<AccountState> = {
|
2019-04-14 16:21:08 +02:00
|
|
|
[MUTATION_TYPES.UPDATE_ACCOUNTS]: (state, accounts: Array<LocalAccount>) => {
|
2019-04-06 15:08:12 +02:00
|
|
|
state.accounts = accounts
|
|
|
|
},
|
|
|
|
[MUTATION_TYPES.UPDATE_ACCOUNT_LOADING]: (state, value: boolean) => {
|
|
|
|
state.accountLoading = value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-14 16:11:24 +02:00
|
|
|
const actions: ActionTree<AccountState, RootState> = {
|
2020-11-28 15:01:27 +01:00
|
|
|
loadAccounts: async ({ commit }): Promise<Array<LocalAccount>> => {
|
|
|
|
const accounts = await win.ipcRenderer.invoke('list-accounts')
|
|
|
|
commit(MUTATION_TYPES.UPDATE_ACCOUNTS, accounts)
|
|
|
|
return accounts
|
2019-04-06 15:08:12 +02:00
|
|
|
},
|
2019-04-14 16:21:08 +02:00
|
|
|
removeAccount: (_, account: LocalAccount) => {
|
2019-04-06 15:08:12 +02:00
|
|
|
return new Promise((resolve, reject) => {
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.send('remove-account', account._id)
|
|
|
|
win.ipcRenderer.once('error-remove-account', (_, err: Error) => {
|
|
|
|
win.ipcRenderer.removeAllListeners('response-remove-account')
|
2019-04-06 15:08:12 +02:00
|
|
|
reject(err)
|
|
|
|
})
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.once('response-remove-account', (_, _id: string) => {
|
|
|
|
win.ipcRenderer.removeAllListeners('error-remove-account')
|
2019-04-06 15:08:12 +02:00
|
|
|
resolve()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
2019-04-14 16:21:08 +02:00
|
|
|
forwardAccount: (_, account: LocalAccount) => {
|
2019-04-06 15:08:12 +02:00
|
|
|
return new Promise((resolve, reject) => {
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.send('forward-account', account)
|
|
|
|
win.ipcRenderer.once('error-forward-account', (_, err: Error) => {
|
|
|
|
win.ipcRenderer.removeAllListeners('response-forward-account')
|
2019-04-06 15:08:12 +02:00
|
|
|
reject(err)
|
|
|
|
})
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.once('response-forward-account', () => {
|
|
|
|
win.ipcRenderer.removeAllListeners('error-forward-account')
|
2019-04-06 15:08:12 +02:00
|
|
|
resolve()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
2019-04-14 16:21:08 +02:00
|
|
|
backwardAccount: (_, account: LocalAccount) => {
|
2019-04-06 15:08:12 +02:00
|
|
|
return new Promise((resolve, reject) => {
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.send('backward-account', account)
|
|
|
|
win.ipcRenderer.once('error-backward-account', (_, err: Error) => {
|
|
|
|
win.ipcRenderer.removeAllListeners('response-forward-account')
|
2019-04-06 15:08:12 +02:00
|
|
|
reject(err)
|
|
|
|
})
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.once('response-backward-account', () => {
|
|
|
|
win.ipcRenderer.removeAllListeners('error-backward-account')
|
2019-04-06 15:08:12 +02:00
|
|
|
resolve()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
removeAllAccounts: () => {
|
|
|
|
return new Promise((resolve, reject) => {
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.send('remove-all-accounts')
|
|
|
|
win.ipcRenderer.once('error-remove-all-accounts', (_, err: Error) => {
|
|
|
|
win.ipcRenderer.removeAllListeners('response-remove-all-accounts')
|
2019-04-06 15:08:12 +02:00
|
|
|
reject(err)
|
|
|
|
})
|
2019-12-04 14:35:53 +01:00
|
|
|
win.ipcRenderer.once('response-remove-all-accounts', () => {
|
|
|
|
win.ipcRenderer.removeAllListeners('error-remove-all-accounts')
|
2019-04-06 15:08:12 +02:00
|
|
|
resolve()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-14 16:11:24 +02:00
|
|
|
const account: Module<AccountState, RootState> = {
|
2019-04-06 15:08:12 +02:00
|
|
|
namespaced: true,
|
|
|
|
state: state,
|
|
|
|
mutations: mutations,
|
|
|
|
actions: actions
|
|
|
|
}
|
|
|
|
|
|
|
|
export default account
|