From a699012a52dc9e09d721067468fed2fa087ef42b Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Wed, 18 Sep 2019 17:51:38 +0400 Subject: [PATCH] setDefaultSafe action --- src/components/Sidebar/SafeList.jsx | 15 ++++++++++++--- src/components/Sidebar/index.jsx | 8 +++++--- src/routes/safeList/store/selectors/index.js | 7 +++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/components/Sidebar/SafeList.jsx b/src/components/Sidebar/SafeList.jsx index 74dafe98..8d78e650 100644 --- a/src/components/Sidebar/SafeList.jsx +++ b/src/components/Sidebar/SafeList.jsx @@ -9,6 +9,7 @@ import ListItemText from '@material-ui/core/ListItemText' import Link from '~/components/layout/Link' import Hairline from '~/components/layout/Hairline' import Paragraph from '~/components/layout/Paragraph' +import ButtonLink from '~/components/layout/ButtonLink' import Identicon from '~/components/Identicon' import { mediumFontSize, sm, secondary, primary, @@ -20,6 +21,7 @@ import { SAFELIST_ADDRESS } from '~/routes/routes' type SafeListProps = { safes: List, onSafeClick: Function, + setDefaultSafe: Function, } const useStyles = makeStyles({ @@ -39,7 +41,7 @@ const useStyles = makeStyles({ }, }) -const SafeList = ({ safes, onSafeClick }: SafeListProps) => { +const SafeList = ({ safes, onSafeClick, setDefaultSafe }: SafeListProps) => { const classes = useStyles() return ( @@ -59,9 +61,16 @@ const SafeList = ({ safes, onSafeClick }: SafeListProps) => { {safe.ethBalance} {' '} - ETH +ETH - Make default + { + setDefaultSafe(safe.address) + }} + > + Make default + diff --git a/src/components/Sidebar/index.jsx b/src/components/Sidebar/index.jsx index 004f6677..c70a7de0 100644 --- a/src/components/Sidebar/index.jsx +++ b/src/components/Sidebar/index.jsx @@ -14,6 +14,7 @@ import Hairline from '~/components/layout/Hairline' import Row from '~/components/layout/Row' import { type Safe } from '~/routes/safe/store/models/safe' import { safesListSelector } from '~/routes/safeList/store/selectors' +import setDefaultSafe from '~/routes/safe/store/actions/setDefaultSafe' import useSidebarStyles from './style' import SafeList from './SafeList' import { WELCOME_ADDRESS } from '~/routes/routes' @@ -33,6 +34,7 @@ export const SidebarContext = React.createContext({ type SidebarProps = { children: React.Node, safes: List, + setDefaultSafeAction: Function, } const filterBy = (filter: string, safes: List): List => safes.filter( @@ -41,7 +43,7 @@ const filterBy = (filter: string, safes: List): List => safes.filter || safe.name.toLowerCase().includes(filter.toLowerCase()), ) -const Sidebar = ({ children, safes }: SidebarProps) => { +const Sidebar = ({ children, safes, setDefaultSafeAction }: SidebarProps) => { const [isOpen, setIsOpen] = useState(false) const [filter, setFilter] = useState('') const classes = useSidebarStyles() @@ -110,7 +112,7 @@ const Sidebar = ({ children, safes }: SidebarProps) => { - + {children} @@ -121,5 +123,5 @@ const Sidebar = ({ children, safes }: SidebarProps) => { export default connect( // $FlowFixMe (state) => ({ safes: safesListSelector(state) }), - null, + { setDefaultSafeAction: setDefaultSafe }, )(Sidebar) diff --git a/src/routes/safeList/store/selectors/index.js b/src/routes/safeList/store/selectors/index.js index 4b7960d3..f37f0afa 100644 --- a/src/routes/safeList/store/selectors/index.js +++ b/src/routes/safeList/store/selectors/index.js @@ -5,6 +5,8 @@ import { type GlobalState } from '~/store/index' import { type Safe } from '~/routes/safe/store/models/safe' import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +const safesStateSelector = (state: GlobalState): Map => state[SAFE_REDUCER_ID] + export const safesMapSelector = (state: GlobalState): Map => state[SAFE_REDUCER_ID].get('safes') export const safesListSelector: Selector> = createSelector( @@ -16,3 +18,8 @@ export const safesCountSelector: Selector = createSelec safesMapSelector, (safes: Map): number => safes.size, ) + +export const defaultSafeSelector: Selector = createSelector( + safesStateSelector, + (safeState: Map): string => safeState.get('defaultSafe'), +)