Skip to content

Commit 0f763a5

Browse files
committed
fix: Fix the problem that balance not right if switch network from default network
Change WalletCreatedSubject from ReplaySubject to Subject, when switch network from default network, WalletCreatedSubject will start subscribe and replay the old created event which happend in default network, so two queue will started and balance will be incorrect
1 parent bbca5f7 commit 0f763a5

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

packages/neuron-wallet/src/models/subjects/wallet-created-subject.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { ReplaySubject } from 'rxjs'
1+
import { Subject } from 'rxjs'
22

33
export class WalletCreatedSubject {
4-
static subject = new ReplaySubject<string>(1)
4+
static subject = new Subject<string>()
55

66
static getSubject() {
77
return this.subject
88
}
99

10-
static setSubject(subject: ReplaySubject<string>) {
10+
static setSubject(subject: Subject<string>) {
1111
this.subject = subject
1212
}
1313
}

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import DataUpdateSubject from 'models/subjects/data-update'
1010
import logger from 'utils/logger'
1111
import NodeService from 'services/node'
1212
import NetworksService from 'services/networks'
13-
import { distinctUntilChanged } from 'rxjs/operators'
13+
import { distinctUntilChanged, pairwise, startWith } from 'rxjs/operators'
1414
import LockUtils from 'models/lock-utils'
1515
import DaoUtils from 'models/dao-utils'
1616
import NetworkSwitchSubject from 'models/subjects/network-switch-subject'
@@ -59,11 +59,17 @@ const networkChange = async (network: NetworkWithID) => {
5959

6060
export const databaseInitSubject = new ReplaySubject<DatabaseInitParams>(1)
6161

62-
NetworkSwitchSubject.getSubject().subscribe(async (network: NetworkWithID | undefined) => {
63-
if (network) {
64-
await networkChange(network)
65-
}
66-
})
62+
NetworkSwitchSubject
63+
.getSubject()
64+
.pipe(
65+
startWith(undefined),
66+
pairwise()
67+
)
68+
.subscribe(async ([previousNetwork, network]: (NetworkWithID | undefined)[]) => {
69+
if ((!previousNetwork && network) || (previousNetwork && network && network.id !== previousNetwork.id)) {
70+
await networkChange(network)
71+
}
72+
})
6773

6874
NodeService
6975
.getInstance()

0 commit comments

Comments
 (0)