From a8c238c2afd3cf01f00ca72bb9f1d7e9806d62b5 Mon Sep 17 00:00:00 2001 From: gozzy Date: Sun, 16 Apr 2023 02:36:20 +0000 Subject: [PATCH] correct proposeByDelegate support --- store/governance/gov.js | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/store/governance/gov.js b/store/governance/gov.js index 8a06ce8..3d946de 100644 --- a/store/governance/gov.js +++ b/store/governance/gov.js @@ -179,21 +179,35 @@ const actions = { ) { try { const { ethAccount } = rootState.metamask - const { lockedBalance, constants } = state + const { lockedBalance, constants, delegators } = state const netId = rootGetters['metamask/netId'] const proposalThreshold = toBN(constants.PROPOSAL_THRESHOLD) - const proposeIndependently = lockedBalance.gte(proposalThreshold) + const proposeIndependently = toBN(lockedBalance).gte(proposalThreshold) const govInstance = getters.govContract({ netId }) const json = JSON.stringify({ title, description }) - const fSelector = !proposeIndependently ? 'proposeByDelegate' : 'propose' - const data = await govInstance.methods[fSelector](proposalAddress, json).encodeABI() + const delegatorAddress = delegators[delegators.length - 1] - const gas = await govInstance.methods[fSelector](proposalAddress, json).estimateGas({ - from: ethAccount, - value: 0 - }) + let data, gas + + if (proposeIndependently) { + data = await govInstance.methods.propose(proposalAddress, json).encodeABI() + gas = await govInstance.methods.propose(proposalAddress, json).estimateGas({ + from: ethAccount, + value: 0 + }) + } else { + data = await govInstance.methods + .proposeByDelegate(delegatorAddress, proposalAddress, json) + .encodeABI() + gas = await govInstance.methods + .proposeByDelegate(delegatorAddress, proposalAddress, json) + .estimateGas({ + from: ethAccount, + value: 0 + }) + } const callParams = { method: 'eth_sendTransaction',