diff --git a/packages/neuron-wallet/src/database/chain/cleaner.ts b/packages/neuron-wallet/src/database/chain/cleaner.ts index 30ee82a673..28e0d0c28a 100644 --- a/packages/neuron-wallet/src/database/chain/cleaner.ts +++ b/packages/neuron-wallet/src/database/chain/cleaner.ts @@ -18,4 +18,4 @@ export default class ChainCleaner { } }) } -} \ No newline at end of file +} diff --git a/packages/neuron-wallet/src/models/dao-utils.ts b/packages/neuron-wallet/src/models/dao-utils.ts index 04d76060c5..921b18c1ba 100644 --- a/packages/neuron-wallet/src/models/dao-utils.ts +++ b/packages/neuron-wallet/src/models/dao-utils.ts @@ -45,6 +45,10 @@ export default class DaoUtils { return DaoUtils.daoScriptInfo } + static cleanInfoWhenSwitchNetwork(): void { + DaoUtils.daoScriptInfo = undefined + } + static setDaoScript(info: SystemScript) { DaoUtils.daoScriptInfo = info DaoUtils.previousURL = NodeService.getInstance().core.rpc.node.url diff --git a/packages/neuron-wallet/src/models/lock-utils.ts b/packages/neuron-wallet/src/models/lock-utils.ts index 2ef84f8e51..424bd43a54 100644 --- a/packages/neuron-wallet/src/models/lock-utils.ts +++ b/packages/neuron-wallet/src/models/lock-utils.ts @@ -21,9 +21,11 @@ const subscribed = (target: any, propertyName: string) => { let value: any Object.defineProperty(target, propertyName, { get: () => value, - set: (info: { codeHash: string }) => { - SystemScriptSubject.next({ codeHash: info.codeHash }) + set: (info: SystemScript | undefined) => { value = info + if (info) { + SystemScriptSubject.next({ codeHash: info.codeHash }) + } }, }) } @@ -75,6 +77,10 @@ export default class LockUtils { return LockUtils.systemScriptInfo } + static cleanInfoWhenSwitchNetwork(): void { + LockUtils.systemScriptInfo = undefined + } + static setSystemScript(info: SystemScript) { LockUtils.systemScriptInfo = info LockUtils.previousURL = NodeService.getInstance().core.rpc.node.url diff --git a/packages/neuron-wallet/src/startup/sync-block-task/create.ts b/packages/neuron-wallet/src/startup/sync-block-task/create.ts index 19b8d04fe9..3393964d72 100644 --- a/packages/neuron-wallet/src/startup/sync-block-task/create.ts +++ b/packages/neuron-wallet/src/startup/sync-block-task/create.ts @@ -12,6 +12,8 @@ import logger from 'utils/logger' import NodeService from 'services/node' import NetworksService from 'services/networks' import { distinctUntilChanged } from 'rxjs/operators' +import LockUtils from 'models/lock-utils' +import DaoUtils from 'models/dao-utils' export { genesisBlockHash } @@ -29,6 +31,9 @@ export interface DatabaseInitParams { // network switch or network connect const networkChange = async (network: NetworkWithID) => { await InitDatabase.getInstance().stopAndWait() + // clean LockUtils info and DaoUtils info + LockUtils.cleanInfoWhenSwitchNetwork() + DaoUtils.cleanInfoWhenSwitchNetwork() const info = await InitDatabase.getInstance().init(network) DataUpdateSubject.next({