Browse Source

Merge pull request #60 from loeck/master

Hide Synchronizing when you don't have accounts
master
Loëck Vézien 7 years ago
committed by GitHub
parent
commit
5f78f9bb70
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      src/components/TopBar.js
  2. 8
      src/internals/accounts/sync.js
  3. 34
      src/renderer/events.js

20
src/components/TopBar.js

@ -9,6 +9,7 @@ import type { Devices } from 'types/common'
import type { SetCurrentDevice } from 'actions/devices'
import { getDevices, getCurrentDevice } from 'reducers/devices'
import { getAccounts } from 'reducers/accounts'
import { setCurrentDevice } from 'actions/devices'
import { lock } from 'reducers/application'
import { hasPassword } from 'reducers/settings'
@ -16,8 +17,9 @@ import { hasPassword } from 'reducers/settings'
import Box from 'components/base/Box'
const mapStateToProps: MapStateToProps<*, *, *> = state => ({
devices: getDevices(state),
hasAccounts: Object.keys(getAccounts(state)).length > 0,
currentDevice: getCurrentDevice(state),
devices: getDevices(state),
hasPassword: hasPassword(state),
})
@ -27,10 +29,11 @@ const mapDispatchToProps: MapDispatchToProps<*, *, *> = {
}
type Props = {
setCurrentDevice: SetCurrentDevice,
lock: Function,
hasPassword: boolean,
hasAccounts: boolean,
devices: Devices,
hasPassword: boolean,
lock: Function,
setCurrentDevice: SetCurrentDevice,
}
type State = {
sync: {
@ -93,15 +96,16 @@ class TopBar extends PureComponent<Props, State> {
handleLock = () => this.props.lock()
render() {
const { devices, hasPassword } = this.props
const { devices, hasPassword, hasAccounts } = this.props
const { sync } = this.state
return (
<Box bg="white" px={2} noShrink style={{ height: 60, zIndex: 20 }} align="center" horizontal>
<Box grow>
{sync.progress === true
? 'Synchronizing...'
: sync.fail === true ? 'Synchronization fail :(' : 'Synchronisation finished!'}
{hasAccounts &&
(sync.progress === true
? 'Synchronizing...'
: sync.fail === true ? 'Synchronization fail :(' : 'Synchronisation finished!')}
</Box>
<Box justify="flex-end" horizontal>
{hasPassword && <LockApplication onLock={this.handleLock} />}

8
src/internals/accounts/sync.js

@ -17,9 +17,13 @@ export default (send: Function) => ({
send('accounts.sync.progress', null, { kill: false })
try {
const result = await Promise.all(accounts.map(syncAccount))
await Promise.all(
accounts.map(a =>
syncAccount(a).then(account => send('account.sync.success', account, { kill: false })),
),
)
send('accounts.sync.success', result)
send('accounts.sync.success')
} catch (err) {
send('accounts.sync.fail', err.stack || err)
}

34
src/renderer/events.js

@ -63,24 +63,30 @@ export function checkUpdates() {
export default ({ store, locked }: { store: Object, locked: boolean }) => {
const handlers = {
account: {
sync: {
success: account => {
if (syncAccounts) {
const currentAccountData = getAccountData(store.getState(), account.id) || {}
const transactions = uniqBy(
[...currentAccountData.transactions, ...account.transactions],
tx => tx.hash,
)
if (currentAccountData.transactions.length !== transactions.length) {
store.dispatch(syncAccount(account))
}
}
},
},
},
accounts: {
sync: {
success: accounts => {
success: () => {
if (syncAccounts) {
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)
const accounts = getAccounts(store.getState())
startSyncAccounts(accounts)
}, SYNC_ACCOUNT_TIMEOUT)
}
},

Loading…
Cancel
Save