mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
3e6d13d309
@ -64,11 +64,10 @@ class DetectTokensController {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
restartTokenDetection () {
|
restartTokenDetection () {
|
||||||
if (this.isActive && this.selectedAddress) {
|
if (!(this.isActive && this.selectedAddress)) { return }
|
||||||
this.detectNewTokens()
|
this.detectNewTokens()
|
||||||
this.interval = DEFAULT_INTERVAL
|
this.interval = DEFAULT_INTERVAL
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Number}
|
* @type {Number}
|
||||||
@ -113,11 +112,19 @@ class DetectTokensController {
|
|||||||
this._keyringMemStore = keyringMemStore
|
this._keyringMemStore = keyringMemStore
|
||||||
this._keyringMemStore.subscribe(({ isUnlocked }) => {
|
this._keyringMemStore.subscribe(({ isUnlocked }) => {
|
||||||
if (this.isUnlocked !== isUnlocked) {
|
if (this.isUnlocked !== isUnlocked) {
|
||||||
if (isUnlocked) { this.restartTokenDetection() }
|
|
||||||
this.isUnlocked = isUnlocked
|
this.isUnlocked = isUnlocked
|
||||||
|
if (isUnlocked) { this.restartTokenDetection() }
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal isActive state
|
||||||
|
* @type {Object}
|
||||||
|
*/
|
||||||
|
get isActive () {
|
||||||
|
return this.isOpen && this.isUnlocked
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = DetectTokensController
|
module.exports = DetectTokensController
|
||||||
|
@ -1432,6 +1432,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
set isClientOpen (open) {
|
set isClientOpen (open) {
|
||||||
this._isClientOpen = open
|
this._isClientOpen = open
|
||||||
this.isClientOpenAndUnlocked = this.getState().isUnlocked && open
|
this.isClientOpenAndUnlocked = this.getState().isUnlocked && open
|
||||||
|
this.detectTokensController.isOpen = open
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1442,6 +1443,5 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||||||
*/
|
*/
|
||||||
set isClientOpenAndUnlocked (active) {
|
set isClientOpenAndUnlocked (active) {
|
||||||
this.tokenRatesController.isActive = active
|
this.tokenRatesController.isActive = active
|
||||||
this.detectTokensController.isActive = active
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,8 @@ describe('DetectTokensController', () => {
|
|||||||
network.setProviderType('mainnet')
|
network.setProviderType('mainnet')
|
||||||
const preferences = new PreferencesController()
|
const preferences = new PreferencesController()
|
||||||
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
controller.isActive = true
|
controller.isOpen = true
|
||||||
|
controller.isUnlocked = true
|
||||||
|
|
||||||
var stub = sandbox.stub(controller, 'detectNewTokens')
|
var stub = sandbox.stub(controller, 'detectNewTokens')
|
||||||
|
|
||||||
@ -48,7 +49,8 @@ describe('DetectTokensController', () => {
|
|||||||
network.setProviderType('rinkeby')
|
network.setProviderType('rinkeby')
|
||||||
const preferences = new PreferencesController()
|
const preferences = new PreferencesController()
|
||||||
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
controller.isActive = true
|
controller.isOpen = true
|
||||||
|
controller.isUnlocked = true
|
||||||
|
|
||||||
var stub = sandbox.stub(controller, 'detectTokenBalance')
|
var stub = sandbox.stub(controller, 'detectTokenBalance')
|
||||||
.withArgs('0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4').returns(true)
|
.withArgs('0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4').returns(true)
|
||||||
@ -63,7 +65,8 @@ describe('DetectTokensController', () => {
|
|||||||
network.setProviderType('mainnet')
|
network.setProviderType('mainnet')
|
||||||
const preferences = new PreferencesController()
|
const preferences = new PreferencesController()
|
||||||
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
controller.isActive = true
|
controller.isOpen = true
|
||||||
|
controller.isUnlocked = true
|
||||||
|
|
||||||
sandbox.stub(controller, 'detectTokenBalance')
|
sandbox.stub(controller, 'detectTokenBalance')
|
||||||
.withArgs('0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4')
|
.withArgs('0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4')
|
||||||
@ -82,7 +85,8 @@ describe('DetectTokensController', () => {
|
|||||||
const preferences = new PreferencesController()
|
const preferences = new PreferencesController()
|
||||||
preferences.addToken('0x0d262e5dc4a06a0f1c90ce79c7a60c09dfc884e4', 'J8T', 8)
|
preferences.addToken('0x0d262e5dc4a06a0f1c90ce79c7a60c09dfc884e4', 'J8T', 8)
|
||||||
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
controller.isActive = true
|
controller.isOpen = true
|
||||||
|
controller.isUnlocked = true
|
||||||
|
|
||||||
sandbox.stub(controller, 'detectTokenBalance')
|
sandbox.stub(controller, 'detectTokenBalance')
|
||||||
.withArgs('0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4')
|
.withArgs('0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4')
|
||||||
@ -100,7 +104,8 @@ describe('DetectTokensController', () => {
|
|||||||
network.setProviderType('mainnet')
|
network.setProviderType('mainnet')
|
||||||
const preferences = new PreferencesController()
|
const preferences = new PreferencesController()
|
||||||
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
controller.isActive = true
|
controller.isOpen = true
|
||||||
|
controller.isUnlocked = true
|
||||||
var stub = sandbox.stub(controller, 'detectNewTokens')
|
var stub = sandbox.stub(controller, 'detectNewTokens')
|
||||||
await preferences.setSelectedAddress('0xbc86727e770de68b1060c91f6bb6945c73e10388')
|
await preferences.setSelectedAddress('0xbc86727e770de68b1060c91f6bb6945c73e10388')
|
||||||
sandbox.assert.called(stub)
|
sandbox.assert.called(stub)
|
||||||
@ -111,10 +116,26 @@ describe('DetectTokensController', () => {
|
|||||||
network.setProviderType('mainnet')
|
network.setProviderType('mainnet')
|
||||||
const preferences = new PreferencesController()
|
const preferences = new PreferencesController()
|
||||||
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
controller.isActive = true
|
controller.isOpen = true
|
||||||
controller.selectedAddress = '0x0'
|
controller.selectedAddress = '0x0'
|
||||||
var stub = sandbox.stub(controller, 'detectNewTokens')
|
var stub = sandbox.stub(controller, 'detectNewTokens')
|
||||||
await controller._keyringMemStore.updateState({ isUnlocked: true })
|
await controller._keyringMemStore.updateState({ isUnlocked: true })
|
||||||
sandbox.assert.called(stub)
|
sandbox.assert.called(stub)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should not trigger detect new tokens when not open or not unlocked', async () => {
|
||||||
|
const network = new NetworkController()
|
||||||
|
network.setProviderType('mainnet')
|
||||||
|
const preferences = new PreferencesController()
|
||||||
|
const controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||||
|
controller.isOpen = true
|
||||||
|
controller.isUnlocked = false
|
||||||
|
var stub = sandbox.stub(controller, 'detectTokenBalance')
|
||||||
|
clock.tick(180000)
|
||||||
|
sandbox.assert.notCalled(stub)
|
||||||
|
controller.isOpen = false
|
||||||
|
controller.isUnlocked = true
|
||||||
|
clock.tick(180000)
|
||||||
|
sandbox.assert.notCalled(stub)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user