35 lines
937 B
TypeScript
35 lines
937 B
TypeScript
|
import * as types from './types';
|
||
|
|
||
|
export const INITIAL_STATE: types.CustomTokensState = [];
|
||
|
|
||
|
function addCustomToken(
|
||
|
state: types.CustomTokensState,
|
||
|
action: types.AddCustomTokenAction
|
||
|
): types.CustomTokensState {
|
||
|
if (state.find(token => token.symbol === action.payload.symbol)) {
|
||
|
return state;
|
||
|
}
|
||
|
return [...state, action.payload];
|
||
|
}
|
||
|
|
||
|
function removeCustomToken(
|
||
|
state: types.CustomTokensState,
|
||
|
action: types.RemoveCustomTokenAction
|
||
|
): types.CustomTokensState {
|
||
|
return state.filter(token => token.symbol !== action.payload);
|
||
|
}
|
||
|
|
||
|
export function customTokensReducer(
|
||
|
state: types.CustomTokensState = INITIAL_STATE,
|
||
|
action: types.CustomTokenAction
|
||
|
): types.CustomTokensState {
|
||
|
switch (action.type) {
|
||
|
case types.CustomTokensActions.ADD:
|
||
|
return addCustomToken(state, action);
|
||
|
case types.CustomTokensActions.REMOVE:
|
||
|
return removeCustomToken(state, action);
|
||
|
default:
|
||
|
return state;
|
||
|
}
|
||
|
}
|