Skip to content

Commit fcad39a

Browse files
committed
fix: move update address to sync process and buffer it
update address will block main process now
1 parent c82f54a commit fcad39a

3 files changed

Lines changed: 23 additions & 6 deletions

File tree

packages/neuron-wallet/src/listeners/address.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
1+
import { remote } from 'electron'
2+
import { ReplaySubject } from 'rxjs'
3+
import { bufferTime } from 'rxjs/operators'
14
import AddressesUsedSubject from '../models/subjects/addresses-used-subject'
25
import AddressService from '../services/addresses'
36
import WalletService from '../services/wallets'
47
import { AccountExtendedPublicKey } from '../models/keys/key'
58

9+
const isRenderer = process && process.type === 'renderer'
10+
const addressesUsedSubject = isRenderer
11+
? remote.require('./models/subjects/addresses-used-subject').default.getSubject()
12+
: AddressesUsedSubject.getSubject()
13+
14+
// pipe not working directly
15+
const bridge = new ReplaySubject<string[]>(1000)
16+
addressesUsedSubject.subscribe((addresses: string[]) => {
17+
bridge.next(addresses)
18+
})
19+
620
// update txCount when addresses used
721
export const register = () => {
8-
AddressesUsedSubject.getSubject().subscribe(async (addresses: string[]) => {
9-
const addrs = await AddressService.updateTxCountAndBalances(addresses)
22+
bridge.pipe(bufferTime(1000)).subscribe(async (addressesList: string[][]) => {
23+
const addresses = addressesList.reduce((acc, val) => acc.concat(val), [])
24+
const uniqueAddresses = [...new Set(addresses)]
25+
const addrs = await AddressService.updateTxCountAndBalances(uniqueAddresses)
1026
const walletIds: string[] = addrs.map(addr => addr.walletId).filter((value, idx, a) => a.indexOf(value) === idx)
1127
await Promise.all(
1228
walletIds.map(async id => {

packages/neuron-wallet/src/main.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ import createMainWindow from './startup/create-main-window'
1010
import createSyncBlockTask from './startup/sync-block-task/create'
1111
import initConnection from './database/address/ormconfig'
1212
import WalletsService from './services/wallets'
13-
import { register as registerAddressListener } from './listeners/address'
14-
15-
// register to listen address updates
16-
registerAddressListener()
1713

1814
const walletsService = WalletsService.getInstance()
1915

packages/neuron-wallet/src/startup/sync-block-task/task.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import { initDatabase } from './init-database'
1010
import { register as registerTxStatusListener } from '../../listeners/tx-status'
1111
import Utils from '../../services/sync/utils'
1212

13+
import { register as registerAddressListener } from '../../listeners/address'
14+
15+
// register to listen address updates
16+
registerAddressListener()
17+
1318
const {
1419
nodeService,
1520
addressDbChangedSubject,

0 commit comments

Comments
 (0)