Browse Source

Improve syncAccount action

master
Loëck Vézien 7 years ago
parent
commit
ae2f440287
No known key found for this signature in database GPG Key ID: CBCDCE384E853AC4
  1. 9
      src/internals/accounts/sync.js
  2. 17
      src/renderer/events.js

9
src/internals/accounts/sync.js

@ -17,14 +17,7 @@ export default (send: Function) => ({
send('accounts.sync.progress', null, { kill: false })
try {
const result = await accounts.reduce(
(promise, account) =>
promise.then(async results => {
const result = await syncAccount(account)
return [...results, result]
}),
Promise.resolve([]),
)
const result = await Promise.all(accounts.map(syncAccount))
send('accounts.sync.success', result)
} catch (err) {

17
src/renderer/events.js

@ -3,6 +3,7 @@
import { ipcRenderer } from 'electron'
import objectPath from 'object-path'
import get from 'lodash/get'
import uniqBy from 'lodash/uniqBy'
import type { Accounts } from 'types/common'
@ -11,7 +12,7 @@ import { CHECK_UPDATE_TIMEOUT, SYNC_ACCOUNT_TIMEOUT } from 'constants'
import { updateDevices, addDevice, removeDevice } from 'actions/devices'
import { syncAccount } from 'actions/accounts'
import { setUpdateStatus } from 'reducers/update'
import { getAccounts } from 'reducers/accounts'
import { getAccountData, getAccounts } from 'reducers/accounts'
type MsgPayload = {
type: string,
@ -66,9 +67,17 @@ export default ({ store, locked }: { store: Object, locked: boolean }) => {
sync: {
success: accounts => {
if (syncAccounts) {
accounts.forEach(
account => account.transactions.length > 0 && store.dispatch(syncAccount(account)),
)
const currentState = store.getState()
accounts.forEach(account => {
const currentAccountData = getAccountData(currentState, account.id) || {}
const transactions = uniqBy(
[...currentAccountData.transactions, ...account.transactions],
tx => tx.hash,
)
if (currentAccountData.transactions.length !== transactions.length) {
store.dispatch(syncAccount(account))
}
})
syncTimeout = setTimeout(() => {
const newAccounts = getAccounts(store.getState())
startSyncAccounts(newAccounts)

Loading…
Cancel
Save