WA-234 Adding remove owner button

This commit is contained in:
apanizo 2018-06-11 10:08:33 +02:00
parent 97f0a02309
commit 24cac51be3
7 changed files with 40 additions and 9 deletions

View File

@ -6,10 +6,12 @@ import GnoSafe from './Safe'
type Props = SelectorProps type Props = SelectorProps
const Layout = ({ safe, balance, provider }: Props) => ( const Layout = ({
safe, balance, provider, userAddress,
}: Props) => (
<React.Fragment> <React.Fragment>
{ safe { safe
? <GnoSafe safe={safe} balance={balance} /> ? <GnoSafe safe={safe} balance={balance} userAddress={userAddress} />
: <NoSafe provider={provider} text="Not found safe" /> : <NoSafe provider={provider} text="Not found safe" />
} }
</React.Fragment> </React.Fragment>

View File

@ -16,6 +16,7 @@ storiesOf('Routes /safe:address', module)
.addDecorator(FrameDecorator) .addDecorator(FrameDecorator)
.add('Safe undefined being connected', () => ( .add('Safe undefined being connected', () => (
<Component <Component
userAddress="foo"
safe={undefined} safe={undefined}
provider="METAMASK" provider="METAMASK"
balance="0" balance="0"
@ -24,6 +25,7 @@ storiesOf('Routes /safe:address', module)
)) ))
.add('Safe undefined NOT connected', () => ( .add('Safe undefined NOT connected', () => (
<Component <Component
userAddress="foo"
safe={undefined} safe={undefined}
provider="" provider=""
balance="0" balance="0"
@ -35,6 +37,7 @@ storiesOf('Routes /safe:address', module)
return ( return (
<Component <Component
userAddress="foo"
safe={safe} safe={safe}
provider="METAMASK" provider="METAMASK"
balance="2" balance="2"
@ -47,6 +50,7 @@ storiesOf('Routes /safe:address', module)
return ( return (
<Component <Component
userAddress="foo"
safe={safe} safe={safe}
provider="METAMASK" provider="METAMASK"
balance="2" balance="2"

View File

@ -8,11 +8,13 @@ import List, { ListItem, ListItemIcon } from 'material-ui/List'
import Avatar from 'material-ui/Avatar' import Avatar from 'material-ui/Avatar'
import Button from '~/components/layout/Button' import Button from '~/components/layout/Button'
import Group from 'material-ui-icons/Group' import Group from 'material-ui-icons/Group'
import Delete from 'material-ui-icons/Delete'
import Person from 'material-ui-icons/Person' import Person from 'material-ui-icons/Person'
import ExpandLess from 'material-ui-icons/ExpandLess' import ExpandLess from 'material-ui-icons/ExpandLess'
import ExpandMore from 'material-ui-icons/ExpandMore' import ExpandMore from 'material-ui-icons/ExpandMore'
import { type OwnerProps } from '~/routes/safe/store/model/owner' import { type OwnerProps } from '~/routes/safe/store/model/owner'
import { type WithStyles } from '~/theme/mui' import { type WithStyles } from '~/theme/mui'
import { sameAddress } from '~/wallets/ethAddresses'
const styles = { const styles = {
nested: { nested: {
@ -22,13 +24,15 @@ const styles = {
type Props = Open & WithStyles & { type Props = Open & WithStyles & {
owners: List<OwnerProps>, owners: List<OwnerProps>,
userAddress: string,
onAddOwner: () => void, onAddOwner: () => void,
} }
export const ADD_OWNER_BUTTON_TEXT = 'Add' export const ADD_OWNER_BUTTON_TEXT = 'Add'
export const REMOVE_OWNER_BUTTON_TEXT = 'Delete'
const Owners = openHoc(({ const Owners = openHoc(({
open, toggle, owners, classes, onAddOwner, open, toggle, owners, classes, onAddOwner, userAddress,
}: Props) => ( }: Props) => (
<React.Fragment> <React.Fragment>
<ListItem onClick={toggle}> <ListItem onClick={toggle}>
@ -59,6 +63,15 @@ const Owners = openHoc(({
primary={owner.name} primary={owner.name}
secondary={owner.address} secondary={owner.address}
/> />
{ !sameAddress(userAddress, owner.address) &&
<Button
variant="raised"
color="secondary"
onClick={() => {}}
>
<Delete />
</Button>
}
</ListItem> </ListItem>
))} ))}
</List> </List>

View File

@ -27,6 +27,7 @@ const safeIcon = require('./assets/gnosis_safe.svg')
type SafeProps = { type SafeProps = {
safe: Safe, safe: Safe,
balance: string, balance: string,
userAddress: string,
} }
type State = { type State = {
@ -74,7 +75,7 @@ class GnoSafe extends React.PureComponent<SafeProps, State> {
} }
render() { render() {
const { safe, balance } = this.props const { safe, balance, userAddress } = this.props
const { component } = this.state const { component } = this.state
return ( return (
@ -82,7 +83,7 @@ class GnoSafe extends React.PureComponent<SafeProps, State> {
<Col sm={12} top="xs" md={5} margin="xl" overflow> <Col sm={12} top="xs" md={5} margin="xl" overflow>
<List style={listStyle}> <List style={listStyle}>
<Balance balance={balance} /> <Balance balance={balance} />
<Owners owners={safe.owners} onAddOwner={this.onAddOwner} /> <Owners owners={safe.owners} onAddOwner={this.onAddOwner} userAddress={userAddress} />
<Confirmations confirmations={safe.get('threshold')} onEditThreshold={this.onEditThreshold} /> <Confirmations confirmations={safe.get('threshold')} onEditThreshold={this.onEditThreshold} />
<Address address={safe.get('address')} /> <Address address={safe.get('address')} />
<DailyLimit balance={balance} dailyLimit={safe.get('dailyLimit')} onWithdrawn={this.onWithdrawn} /> <DailyLimit balance={balance} dailyLimit={safe.get('dailyLimit')} onWithdrawn={this.onWithdrawn} />

View File

@ -30,13 +30,13 @@ class SafeView extends React.PureComponent<Props> {
render() { render() {
const { const {
safe, provider, balance, granted, safe, provider, balance, granted, userAddress,
} = this.props } = this.props
return ( return (
<Page> <Page>
{ granted { granted
? <Layout balance={balance} provider={provider} safe={safe} /> ? <Layout balance={balance} provider={provider} safe={safe} userAddress={userAddress} />
: <NoRights /> : <NoRights />
} }
</Page> </Page>

View File

@ -12,6 +12,7 @@ export type SelectorProps = {
safe: SafeSelectorProps, safe: SafeSelectorProps,
provider: string, provider: string,
balance: string, balance: string,
userAddress: string,
} }
export const grantedSelector: Selector<GlobalState, RouterProps, boolean> = createSelector( export const grantedSelector: Selector<GlobalState, RouterProps, boolean> = createSelector(
@ -40,4 +41,5 @@ export default createStructuredSelector({
provider: providerNameSelector, provider: providerNameSelector,
balance: balanceSelector, balance: balanceSelector,
granted: grantedSelector, granted: grantedSelector,
userAddress: userAccountSelector,
}) })

View File

@ -1,3 +1,12 @@
// @flow // @flow
export const sameAddress = (firstAddress: string, secondAddress: string): boolean => export const sameAddress = (firstAddress: string, secondAddress: string): boolean => {
firstAddress.toLowerCase() === secondAddress.toLowerCase() if (!firstAddress) {
return false
}
if (!secondAddress) {
return false
}
return firstAddress.toLowerCase() === secondAddress.toLowerCase()
}