Merge pull request #168 from gnosis/bug/custom-tokens-not-saved
BUG: Active tokens not saved
This commit is contained in:
commit
de5013140d
|
@ -56,7 +56,7 @@ export const removeTokenFromStorage = async (safeAddress: string, token: Token)
|
|||
|
||||
export const removeFromActiveTokens = async (safeAddress: string, token: Token) => {
|
||||
const activeTokens = await getActiveTokens()
|
||||
const index = activeTokens.findIndex(activeToken => activeToken.name === token.name)
|
||||
const index = activeTokens.findIndex((activeToken) => activeToken.name === token.name)
|
||||
|
||||
if (index !== -1) {
|
||||
await saveActiveTokens(safeAddress, activeTokens.delete(index))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
// @flow
|
||||
import type { Store, AnyAction } from 'redux'
|
||||
import { List } from 'immutable'
|
||||
import { ADD_SAFE } from '~/routes/safe/store/actions/addSafe'
|
||||
import { UPDATE_SAFE } from '~/routes/safe/store/actions/updateSafe'
|
||||
import { REMOVE_SAFE } from '~/routes/safe/store/actions/removeSafe'
|
||||
|
@ -28,6 +29,21 @@ const watchedActions = [
|
|||
ACTIVATE_TOKEN_FOR_ALL_SAFES,
|
||||
]
|
||||
|
||||
const recalculateActiveTokens = (state: GlobalState): void => {
|
||||
const tokens = tokensSelector(state)
|
||||
const activeTokenAddresses = getActiveTokensAddressesForAllSafes(state)
|
||||
|
||||
const activeTokens: List<Token> = tokens.withMutations((map) => {
|
||||
map.forEach((token: Token) => {
|
||||
if (!activeTokenAddresses.has(token.address)) {
|
||||
map.remove(token.address)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
saveActiveTokens(activeTokens)
|
||||
}
|
||||
|
||||
const safeStorageMware = (store: Store<GlobalState>) => (next: Function) => async (action: AnyAction) => {
|
||||
const handledAction = next(action)
|
||||
|
||||
|
@ -38,21 +54,7 @@ const safeStorageMware = (store: Store<GlobalState>) => (next: Function) => asyn
|
|||
|
||||
switch (action.type) {
|
||||
case ACTIVATE_TOKEN_FOR_ALL_SAFES: {
|
||||
let { activeTokens } = action.payload
|
||||
if (activeTokens) {
|
||||
const tokens = tokensSelector(state)
|
||||
const activeTokenAddresses = getActiveTokensAddressesForAllSafes(state)
|
||||
|
||||
activeTokens = tokens.withMutations((map) => {
|
||||
map.forEach((token: Token) => {
|
||||
if (!activeTokenAddresses.has(token.address)) {
|
||||
map.remove(token.address)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
saveActiveTokens(activeTokens)
|
||||
}
|
||||
recalculateActiveTokens(state)
|
||||
break
|
||||
}
|
||||
case ADD_SAFE: {
|
||||
|
@ -61,10 +63,13 @@ const safeStorageMware = (store: Store<GlobalState>) => (next: Function) => asyn
|
|||
break
|
||||
}
|
||||
case UPDATE_SAFE: {
|
||||
const { safeAddress, owners } = action.payload
|
||||
const { safeAddress, owners, activeTokens } = action.payload
|
||||
if (safeAddress && owners) {
|
||||
setOwners(safeAddress, owners)
|
||||
}
|
||||
if (activeTokens) {
|
||||
recalculateActiveTokens(state)
|
||||
}
|
||||
break
|
||||
}
|
||||
case REMOVE_SAFE: {
|
||||
|
@ -81,7 +86,7 @@ const safeStorageMware = (store: Store<GlobalState>) => (next: Function) => asyn
|
|||
case REMOVE_SAFE_OWNER: {
|
||||
const { safeAddress, ownerAddress } = action.payload
|
||||
const { owners } = safes.get(safeAddress)
|
||||
setOwners(safeAddress, owners.filter(o => o.address.toLowerCase() !== ownerAddress.toLowerCase()))
|
||||
setOwners(safeAddress, owners.filter((o) => o.address.toLowerCase() !== ownerAddress.toLowerCase()))
|
||||
break
|
||||
}
|
||||
case REPLACE_SAFE_OWNER: {
|
||||
|
@ -92,7 +97,7 @@ const safeStorageMware = (store: Store<GlobalState>) => (next: Function) => asyn
|
|||
setOwners(
|
||||
safeAddress,
|
||||
owners
|
||||
.filter(o => o.address.toLowerCase() !== oldOwnerAddress.toLowerCase())
|
||||
.filter((o) => o.address.toLowerCase() !== oldOwnerAddress.toLowerCase())
|
||||
.push(makeOwner({ address: ownerAddress, name: ownerName })),
|
||||
)
|
||||
break
|
||||
|
@ -100,8 +105,8 @@ const safeStorageMware = (store: Store<GlobalState>) => (next: Function) => asyn
|
|||
case EDIT_SAFE_OWNER: {
|
||||
const { safeAddress, ownerAddress, ownerName } = action.payload
|
||||
const { owners } = safes.get(safeAddress)
|
||||
const ownerToUpdateIndex = owners.findIndex(o => o.address.toLowerCase() === ownerAddress.toLowerCase())
|
||||
setOwners(safeAddress, owners.update(ownerToUpdateIndex, owner => owner.set('name', ownerName)))
|
||||
const ownerToUpdateIndex = owners.findIndex((o) => o.address.toLowerCase() === ownerAddress.toLowerCase())
|
||||
setOwners(safeAddress, owners.update(ownerToUpdateIndex, (owner) => owner.set('name', ownerName)))
|
||||
break
|
||||
}
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue