add & delete tokens per account
This commit is contained in:
parent
3667f3cb85
commit
2770df80e3
|
@ -85,7 +85,7 @@ class DetectTokensController {
|
||||||
set preferences (preferences) {
|
set preferences (preferences) {
|
||||||
if (!preferences) { return }
|
if (!preferences) { return }
|
||||||
this._preferences = preferences
|
this._preferences = preferences
|
||||||
preferences.store.subscribe(({ tokens }) => { this.tokenAddresses = tokens.map((obj) => { return obj.address }) })
|
preferences.store.subscribe(({ tokens = [] }) => { this.tokenAddresses = tokens.map((obj) => { return obj.address }) })
|
||||||
preferences.store.subscribe(({ selectedAddress }) => {
|
preferences.store.subscribe(({ selectedAddress }) => {
|
||||||
if (this.selectedAddress !== selectedAddress) {
|
if (this.selectedAddress !== selectedAddress) {
|
||||||
this.selectedAddress = selectedAddress
|
this.selectedAddress = selectedAddress
|
||||||
|
|
|
@ -24,6 +24,7 @@ class PreferencesController {
|
||||||
const initState = extend({
|
const initState = extend({
|
||||||
frequentRpcList: [],
|
frequentRpcList: [],
|
||||||
currentAccountTab: 'history',
|
currentAccountTab: 'history',
|
||||||
|
addressTokens: {},
|
||||||
tokens: [],
|
tokens: [],
|
||||||
useBlockie: false,
|
useBlockie: false,
|
||||||
featureFlags: {},
|
featureFlags: {},
|
||||||
|
@ -35,6 +36,16 @@ class PreferencesController {
|
||||||
this.diagnostics = opts.diagnostics
|
this.diagnostics = opts.diagnostics
|
||||||
|
|
||||||
this.store = new ObservableStore(initState)
|
this.store = new ObservableStore(initState)
|
||||||
|
|
||||||
|
Object.defineProperty(this.store._state, 'tokens', {
|
||||||
|
get: () => {
|
||||||
|
const selectedAddress = this.store.getState().selectedAddress
|
||||||
|
const tokens = this.store.getState().addressTokens
|
||||||
|
// TODO when create vault
|
||||||
|
if (!(selectedAddress in tokens)) return []
|
||||||
|
return tokens[selectedAddress]
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// PUBLIC METHODS
|
// PUBLIC METHODS
|
||||||
|
|
||||||
|
@ -117,14 +128,16 @@ class PreferencesController {
|
||||||
*/
|
*/
|
||||||
addAddresses (addresses) {
|
addAddresses (addresses) {
|
||||||
const identities = this.store.getState().identities
|
const identities = this.store.getState().identities
|
||||||
|
const addressTokens = this.store.getState().addressTokens
|
||||||
addresses.forEach((address) => {
|
addresses.forEach((address) => {
|
||||||
// skip if already exists
|
// skip if already exists
|
||||||
if (identities[address]) return
|
if (identities[address]) return
|
||||||
// add missing identity
|
// add missing identity
|
||||||
const identityCount = Object.keys(identities).length
|
const identityCount = Object.keys(identities).length
|
||||||
|
if (!(address in addressTokens)) addressTokens[address] = []
|
||||||
identities[address] = { name: `Account ${identityCount + 1}`, address }
|
identities[address] = { name: `Account ${identityCount + 1}`, address }
|
||||||
})
|
})
|
||||||
this.store.updateState({ identities })
|
this.store.updateState({ identities, addressTokens })
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -181,7 +194,8 @@ class PreferencesController {
|
||||||
setSelectedAddress (_address) {
|
setSelectedAddress (_address) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const address = normalizeAddress(_address)
|
const address = normalizeAddress(_address)
|
||||||
this.store.updateState({ selectedAddress: address })
|
const tokens = this.store.getState().addressTokens[_address]
|
||||||
|
this.store.updateState({ selectedAddress: address, tokens: tokens })
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -233,7 +247,10 @@ class PreferencesController {
|
||||||
tokens.push(newEntry)
|
tokens.push(newEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.store.updateState({ tokens })
|
const selectedAddress = this.store.getState().selectedAddress
|
||||||
|
const addressTokens = this.store.getState().addressTokens
|
||||||
|
addressTokens[selectedAddress] = tokens
|
||||||
|
this.store.updateState({ addressTokens })
|
||||||
|
|
||||||
return Promise.resolve(tokens)
|
return Promise.resolve(tokens)
|
||||||
}
|
}
|
||||||
|
@ -246,11 +263,13 @@ class PreferencesController {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
removeToken (rawAddress) {
|
removeToken (rawAddress) {
|
||||||
const tokens = this.store.getState().tokens
|
const addressTokens = this.store.getState().addressTokens
|
||||||
|
const selectedAddress = this.store.getState().selectedAddress
|
||||||
|
|
||||||
const updatedTokens = tokens.filter(token => token.address !== rawAddress)
|
const updatedTokens = addressTokens[selectedAddress].filter(token => token.address !== rawAddress)
|
||||||
|
addressTokens[selectedAddress] = updatedTokens
|
||||||
|
this.store.updateState({ addressTokens, tokens: updatedTokens })
|
||||||
|
|
||||||
this.store.updateState({ tokens: updatedTokens })
|
|
||||||
return Promise.resolve(updatedTokens)
|
return Promise.resolve(updatedTokens)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue