create `TokenState`
This commit is contained in:
parent
f96eb3b8da
commit
4e18a416ee
|
@ -3,24 +3,24 @@ import { handleActions } from 'redux-actions'
|
||||||
|
|
||||||
import { ADD_TOKEN } from 'src/logic/tokens/store/actions/addToken'
|
import { ADD_TOKEN } from 'src/logic/tokens/store/actions/addToken'
|
||||||
import { ADD_TOKENS } from 'src/logic/tokens/store/actions/saveTokens'
|
import { ADD_TOKENS } from 'src/logic/tokens/store/actions/saveTokens'
|
||||||
import { makeToken } from 'src/logic/tokens/store/model/token'
|
import { makeToken, Token } from 'src/logic/tokens/store/model/token'
|
||||||
|
|
||||||
export const TOKEN_REDUCER_ID = 'tokens'
|
export const TOKEN_REDUCER_ID = 'tokens'
|
||||||
|
|
||||||
|
export type TokenState = Map<string, Token>
|
||||||
|
|
||||||
export default handleActions(
|
export default handleActions(
|
||||||
{
|
{
|
||||||
[ADD_TOKENS]: (state, action) => {
|
[ADD_TOKENS]: (state: TokenState, action) => {
|
||||||
const { tokens } = action.payload
|
const { tokens } = action.payload
|
||||||
|
|
||||||
const newState = state.withMutations((map) => {
|
return state.withMutations((map) => {
|
||||||
tokens.forEach((token) => {
|
tokens.forEach((token: Token) => {
|
||||||
map.set(token.address, token)
|
map.set(token.address, token)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
return newState
|
|
||||||
},
|
},
|
||||||
[ADD_TOKEN]: (state, action) => {
|
[ADD_TOKEN]: (state: TokenState, action) => {
|
||||||
const { token } = action.payload
|
const { token } = action.payload
|
||||||
const { address: tokenAddress } = token
|
const { address: tokenAddress } = token
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
import { Map } from 'immutable'
|
|
||||||
import { createSelector } from 'reselect'
|
import { createSelector } from 'reselect'
|
||||||
|
|
||||||
import { TOKEN_REDUCER_ID } from 'src/logic/tokens/store/reducer/tokens'
|
import { TOKEN_REDUCER_ID, TokenState } from 'src/logic/tokens/store/reducer/tokens'
|
||||||
import { Token } from 'src/logic/tokens/store/model/token'
|
|
||||||
import { AppReduxState } from 'src/store'
|
import { AppReduxState } from 'src/store'
|
||||||
|
|
||||||
export const tokensSelector = (state: AppReduxState): Map<string, Token> => state[TOKEN_REDUCER_ID]
|
export const tokensSelector = (state: AppReduxState): TokenState => state[TOKEN_REDUCER_ID]
|
||||||
|
|
||||||
export const tokenListSelector = createSelector(tokensSelector, (tokens) => tokens.toList())
|
export const tokenListSelector = createSelector(tokensSelector, (tokens) => tokens.toList())
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue