diff --git a/src/routes/safe/component/AddOwner/AddOwnerForm/index.jsx b/src/routes/safe/component/AddOwner/AddOwnerForm/index.jsx
index b47890b4..6f9a301f 100644
--- a/src/routes/safe/component/AddOwner/AddOwnerForm/index.jsx
+++ b/src/routes/safe/component/AddOwner/AddOwnerForm/index.jsx
@@ -1,6 +1,7 @@
// @flow
import * as React from 'react'
import Field from '~/components/forms/Field'
+import OpenPaper from '~/components/Stepper/OpenPaper'
import TextField from '~/components/forms/TextField'
import Checkbox from '~/components/forms/Checkbox'
import { composeValidators, required, mustBeEthereumAddress, uniqueAddress } from '~/components/forms/validator'
@@ -29,8 +30,8 @@ type Props = {
addresses: string[]
}
-const AddOwnerForm = ({ addresses, numOwners, threshold }: Props) => () => (
-
+const AddOwnerForm = ({ addresses, numOwners, threshold }: Props) => (controls: React$Node) => (
+
Add Owner
@@ -65,7 +66,7 @@ const AddOwnerForm = ({ addresses, numOwners, threshold }: Props) => () => (
/>
Increase threshold?
-
+
)
export default AddOwnerForm
diff --git a/src/routes/safe/component/AddOwner/Review/index.jsx b/src/routes/safe/component/AddOwner/Review/index.jsx
index 7c2b9ac9..b935c757 100644
--- a/src/routes/safe/component/AddOwner/Review/index.jsx
+++ b/src/routes/safe/component/AddOwner/Review/index.jsx
@@ -1,6 +1,7 @@
// @flow
import * as React from 'react'
import CircularProgress from '@material-ui/core/CircularProgress'
+import OpenPaper from '~/components/Stepper/OpenPaper'
import Block from '~/components/layout/Block'
import Bold from '~/components/layout/Bold'
import Heading from '~/components/layout/Heading'
@@ -16,13 +17,13 @@ const spinnerStyle = {
minHeight: '50px',
}
-const Review = () => ({ values, submitting }: FormProps) => {
+const Review = () => (controls: React$Node, { values, submitting }: FormProps) => {
const text = values[INCREASE_PARAM]
? 'This operation will increase the threshold of the safe'
: 'This operation will not modify the threshold of the safe'
return (
-
+
Review the Add Owner operation
Owner Name: {values[NAME_PARAM]}
@@ -36,7 +37,7 @@ const Review = () => ({ values, submitting }: FormProps) => {
{ submitting && }
-
+
)
}
diff --git a/src/routes/safe/component/AddOwner/index.jsx b/src/routes/safe/component/AddOwner/index.jsx
index f63518e7..69e0381b 100644
--- a/src/routes/safe/component/AddOwner/index.jsx
+++ b/src/routes/safe/component/AddOwner/index.jsx
@@ -7,6 +7,7 @@ import { type Safe } from '~/routes/safe/store/model/safe'
import { type Owner, makeOwner } from '~/routes/safe/store/model/owner'
import { setOwners } from '~/utils/localStorage'
import { getSafeEthereumInstance, createTransaction } from '~/logic/safe/safeFrontendOperations'
+import { signaturesViaMetamask } from '~/config'
import AddOwnerForm, { NAME_PARAM, OWNER_ADDRESS_PARAM, INCREASE_PARAM } from './AddOwnerForm'
import Review from './Review'
import selector, { type SelectorProps } from './selector'
@@ -36,12 +37,14 @@ const getOwnerAddressesFrom = (owners: List) => {
}
export const addOwner = async (values: Object, safe: Safe, threshold: number, executor: string) => {
- const nonce = Date.now()
+ const safeAddress = safe.get('address')
+ const gnosisSafe = await getSafeEthereumInstance(safeAddress)
+ const nonce = signaturesViaMetamask() ? await gnosisSafe.nonce() : Date.now()
+
const newThreshold = values[INCREASE_PARAM] ? threshold + 1 : threshold
const newOwnerAddress = values[OWNER_ADDRESS_PARAM]
const newOwnerName = values[NAME_PARAM]
- const safeAddress = safe.get('address')
- const gnosisSafe = await getSafeEthereumInstance(safeAddress)
+
const data = gnosisSafe.contract.addOwnerWithThreshold.getData(newOwnerAddress, newThreshold)
await createTransaction(safe, `Add Owner ${newOwnerName}`, safeAddress, 0, nonce, executor, data)
setOwners(safeAddress, safe.get('owners').push(makeOwner({ name: newOwnerName, address: newOwnerAddress })))