WA-238 adapt safeContracts> initContracts and code when creating safe to new safe-contracts
This commit is contained in:
parent
fb01100e6c
commit
e3c4c7661d
|
@ -1,7 +1,7 @@
|
||||||
// @flow
|
// @flow
|
||||||
import { getWeb3 } from '~/wallets/getWeb3'
|
import { getWeb3 } from '~/wallets/getWeb3'
|
||||||
import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts'
|
import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts'
|
||||||
import { type DailyLimitProps } from '~/routes/safe/store/model/safe'
|
import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit'
|
||||||
|
|
||||||
export const LIMIT_POSITION = 0
|
export const LIMIT_POSITION = 0
|
||||||
export const SPENT_TODAY_POS = 1
|
export const SPENT_TODAY_POS = 1
|
||||||
|
@ -23,7 +23,7 @@ const getDailyLimitModuleFrom = async (safeAddress) => {
|
||||||
return dailyLimitModule
|
return dailyLimitModule
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getDailyLimitFrom = async (safeAddress, tokenAddress): DailyLimitProps => {
|
export const getDailyLimitFrom = async (safeAddress: string, tokenAddress: number): Promise<DailyLimitProps> => {
|
||||||
const web3 = getWeb3()
|
const web3 = getWeb3()
|
||||||
const dailyLimitModule = await getDailyLimitModuleFrom(safeAddress)
|
const dailyLimitModule = await getDailyLimitModuleFrom(safeAddress)
|
||||||
|
|
||||||
|
|
|
@ -5,14 +5,31 @@ import { ensureOnce } from '~/utils/singleton'
|
||||||
import { getWeb3 } from '~/wallets/getWeb3'
|
import { getWeb3 } from '~/wallets/getWeb3'
|
||||||
import GnosisSafeSol from '#/GnosisSafeTeamEdition.json'
|
import GnosisSafeSol from '#/GnosisSafeTeamEdition.json'
|
||||||
import ProxyFactorySol from '#/ProxyFactory.json'
|
import ProxyFactorySol from '#/ProxyFactory.json'
|
||||||
import CreateAndAddModule from '#/CreateAndAddModule.json'
|
import CreateAndAddModules from '#/CreateAndAddModules.json'
|
||||||
import DailyLimitModule from '#/DailyLimitModule.json'
|
import DailyLimitModule from '#/DailyLimitModule.json'
|
||||||
|
|
||||||
let proxyFactoryMaster
|
let proxyFactoryMaster
|
||||||
let createAndAddExtensionMaster
|
let createAndAddModuleMaster
|
||||||
let safeMaster
|
let safeMaster
|
||||||
let dailyLimitMaster
|
let dailyLimitMaster
|
||||||
|
|
||||||
|
const createModuleDataWrapper = () => {
|
||||||
|
const web3 = getWeb3()
|
||||||
|
// eslint-disable-next-line
|
||||||
|
return web3.eth.contract([{"constant":false,"inputs":[{"name":"data","type":"bytes"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}])
|
||||||
|
}
|
||||||
|
|
||||||
|
const getModuleDataWrapper = ensureOnce(createModuleDataWrapper)
|
||||||
|
|
||||||
|
function createAndAddModulesData(dataArray) {
|
||||||
|
const ModuleDataWrapper = getModuleDataWrapper()
|
||||||
|
|
||||||
|
const mw = ModuleDataWrapper.at(1)
|
||||||
|
// Remove method id (10) and position of data in payload (64)
|
||||||
|
return dataArray.reduce((acc, data) => acc + mw.setup.getData(data).substr(74), '0x')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const createGnosisSafeContract = (web3: any) => {
|
const createGnosisSafeContract = (web3: any) => {
|
||||||
const gnosisSafe = contract(GnosisSafeSol)
|
const gnosisSafe = contract(GnosisSafeSol)
|
||||||
gnosisSafe.setProvider(web3.currentProvider)
|
gnosisSafe.setProvider(web3.currentProvider)
|
||||||
|
@ -28,7 +45,7 @@ const createProxyFactoryContract = (web3: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const createAddExtensionContract = (web3: any) => {
|
const createAddExtensionContract = (web3: any) => {
|
||||||
const createAndAddModule = contract(CreateAndAddModule)
|
const createAndAddModule = contract(CreateAndAddModules)
|
||||||
createAndAddModule.setProvider(web3.currentProvider)
|
createAndAddModule.setProvider(web3.currentProvider)
|
||||||
|
|
||||||
return createAndAddModule
|
return createAndAddModule
|
||||||
|
@ -62,9 +79,9 @@ const createMasterCopies = async () => {
|
||||||
// Create AddExtension Master Copy
|
// Create AddExtension Master Copy
|
||||||
const CreateAndAddExtension = getCreateAddExtensionContract(web3)
|
const CreateAndAddExtension = getCreateAddExtensionContract(web3)
|
||||||
try {
|
try {
|
||||||
createAndAddExtensionMaster = await CreateAndAddExtension.deployed()
|
createAndAddModuleMaster = await CreateAndAddExtension.deployed()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
createAndAddExtensionMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' })
|
createAndAddModuleMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' })
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize safe master copy
|
// Initialize safe master copy
|
||||||
|
@ -95,11 +112,13 @@ const getSafeDataBasedOn = async (accounts, numConfirmations, dailyLimitInEth) =
|
||||||
const proxyFactoryData = await proxyFactoryMaster.contract.createProxy
|
const proxyFactoryData = await proxyFactoryMaster.contract.createProxy
|
||||||
.getData(dailyLimitMaster.address, moduleData)
|
.getData(dailyLimitMaster.address, moduleData)
|
||||||
|
|
||||||
const createAndAddExtensionData = createAndAddExtensionMaster.contract.createAndAddModule
|
const modulesCreationData = createAndAddModulesData([proxyFactoryData])
|
||||||
.getData(proxyFactoryMaster.address, proxyFactoryData)
|
|
||||||
|
const createAndAddModuleData = createAndAddModuleMaster.contract.createAndAddModules
|
||||||
|
.getData(proxyFactoryMaster.address, modulesCreationData)
|
||||||
|
|
||||||
return safeMaster.contract.setup
|
return safeMaster.contract.setup
|
||||||
.getData(accounts, numConfirmations, createAndAddExtensionMaster.address, createAndAddExtensionData)
|
.getData(accounts, numConfirmations, createAndAddModuleMaster.address, createAndAddModuleData)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const deploySafeContract = async (
|
export const deploySafeContract = async (
|
||||||
|
|
Loading…
Reference in New Issue