|
| 1 | +import { remote } from 'electron' |
| 2 | +import { ReplaySubject } from 'rxjs' |
| 3 | +import { bufferTime } from 'rxjs/operators' |
1 | 4 | import AddressesUsedSubject from '../models/subjects/addresses-used-subject' |
2 | 5 | import AddressService from '../services/addresses' |
3 | 6 | import WalletService from '../services/wallets' |
4 | 7 | import { AccountExtendedPublicKey } from '../models/keys/key' |
5 | 8 |
|
| 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 | + |
6 | 20 | // update txCount when addresses used |
7 | 21 | 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) |
10 | 26 | const walletIds: string[] = addrs.map(addr => addr.walletId).filter((value, idx, a) => a.indexOf(value) === idx) |
11 | 27 | await Promise.all( |
12 | 28 | walletIds.map(async id => { |
|
0 commit comments