Skip to content
This repository has been archived by the owner on Dec 1, 2021. It is now read-only.

Commit

Permalink
Updated proposal tally result, added activeVotingPower value to activ…
Browse files Browse the repository at this point in the history
…e proposal collection. (#532)

* Updated tallyParams to tally_params

* Save activeVotingPower value with proposal when it is active

* Add CHANGELOG

Co-authored-by: Kwun Yeung <[email protected]>
  • Loading branch information
MonikaCat and kwunyeung authored May 28, 2021
1 parent 9070211 commit 147897c
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 10 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Changelog

## [UNRELEASED]
* [#426] Updated proposal tally result, added activeVotingPower value to active proposal collection.
* [#524] Added `noreferrer` to Banner links

## v0.41.x-14
Expand Down
30 changes: 26 additions & 4 deletions imports/api/proposals/server/methods.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,20 @@ Meteor.methods({
let response = HTTP.get(url);
let params = JSON.parse(response.content);

Chain.update({chainId: Meteor.settings.public.chainId}, {$set:{"gov.tallyParams":params.tally_params}});
Chain.update({chainId: Meteor.settings.public.chainId}, {$set:{"gov.tally_params":params.tally_params}});

url = API + '/cosmos/gov/v1beta1/proposals';
response = HTTP.get(url);
let proposals = JSON.parse(response.content).proposals;
// console.log(proposals);

let finishedProposalIds = new Set(Proposals.find(
{"proposal_status":{$in:["PROPOSAL_STATUS_PASSED", "PROPOSAL_STATUS_REJECTED", "PROPOSAL_STATUS_REMOVED"]}}
{"status":{$in:["PROPOSAL_STATUS_PASSED", "PROPOSAL_STATUS_REJECTED", "PROPOSAL_STATUS_REMOVED"]}}
).fetch().map((p)=> p.proposalId));

let activeProposals = new Set(Proposals.find(
{ "status": { $in: ["PROPOSAL_STATUS_VOTING_PERIOD"] } }
).fetch().map((p) => p.proposalId));
let proposalIds = [];
if (proposals.length > 0){
// Proposals.upsert()
Expand All @@ -38,11 +41,30 @@ Meteor.methods({
url = API + '/gov/proposals/'+proposal.proposalId+'/proposer';
let response = HTTP.get(url);
if (response.statusCode == 200){
let proposer = JSON.parse(response.content).result;
let proposer = JSON.parse(response?.content)?.result;
if (proposer.proposal_id && (parseInt(proposer.proposal_id) == proposal.proposalId)){
proposal.proposer = proposer.proposer;
proposal.proposer = proposer?.proposer;
}
}
if (activeProposals.has(proposal.proposalId)){
let validators = []
let page = 0;

do {
url = RPC + `/validators?page=${++page}&per_page=100`;
let response = HTTP.get(url);
result = JSON.parse(response.content).result;
validators = [...validators, ...result.validators];

}
while (validators.length < parseInt(result.total))

let activeVotingPower = 0;
for (v in validators) {
activeVotingPower += parseInt(validators[v].voting_power);
}
proposal.activeVotingPower = activeVotingPower;
}
bulkProposals.find({proposalId: proposal.proposalId}).upsert().updateOne({$set:proposal});
}
catch (e) {
Expand Down
11 changes: 5 additions & 6 deletions imports/ui/proposals/Proposal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ export default class Proposal extends Component{

componentDidUpdate(prevProps){
if (this.props.proposal != prevProps.proposal){
// console.log(this.props.proposal.value);
this.setState({
proposal: this.props.proposal,
deposit: <div>{this.props.proposal.total_deposit?this.props.proposal.total_deposit.map((deposit, i) => {
Expand All @@ -76,7 +75,7 @@ export default class Proposal extends Component{

let now = moment();
const powerReduction = Meteor.settings.public.powerReduction || Coin.StakingCoin.fraction;
let totalVotingPower = this.props.chain.activeVotingPower * powerReduction;
let totalVotingPower = (this.props.activeVotingPower || this.props.chain.activeVotingPower) * powerReduction;
if (this.props.proposal.voting_start_time != '0001-01-01T00:00:00Z'){
if (now.diff(moment(this.props.proposal.voting_start_time)) > 0){
let endVotingTime = moment(this.props.proposal.voting_end_time);
Expand All @@ -97,7 +96,7 @@ export default class Proposal extends Component{
abstainPercent: (totalVotes>0)?parseInt(this.props.proposal.tally.abstain)/totalVotes*100:0,
noPercent: (totalVotes>0)?parseInt(this.props.proposal.tally.no)/totalVotes*100:0,
noWithVetoPercent: (totalVotes>0)?parseInt(this.props.proposal.tally.no_with_veto)/totalVotes*100:0,
proposalValid: (this.state.totalVotes/totalVotingPower > parseFloat(this.props.chain.gov.tallyParams.quorum))?true:false
proposalValid: (this.state.totalVotes/totalVotingPower > parseFloat(this.props.chain.gov.tally_params.quorum))?true:false
})
}
else{
Expand All @@ -116,7 +115,7 @@ export default class Proposal extends Component{
abstainPercent: (totalVotes>0)?parseInt(this.props.proposal.final_tally_result.abstain)/totalVotes*100:0,
noPercent: (totalVotes>0)?parseInt(this.props.proposal.final_tally_result.no)/totalVotes*100:0,
noWithVetoPercent: (totalVotes>0)?parseInt(this.props.proposal.final_tally_result.no_with_veto)/totalVotes*100:0,
proposalValid: (this.state.totalVotes/totalVotingPower > parseFloat(this.props.chain.gov.tallyParams.quorum))?true:false
proposalValid: (this.state.totalVotes/totalVotingPower > parseFloat(this.props.chain.gov.tally_params.quorum))?true:false
})
}
}
Expand Down Expand Up @@ -280,7 +279,7 @@ export default class Proposal extends Component{
// console.log(this.state.proposal);
const proposalId = Number(this.props.proposal.proposalId), maxProposalId = Number(this.props.proposalCount);
const powerReduction = Meteor.settings.public.powerReduction || Coin.StakingCoin.fraction;
let totalVotingPower = this.props.chain.activeVotingPower * powerReduction;
let totalVotingPower = (this.props.activeVotingPower || this.props.chain.activeVotingPower) * powerReduction;
let proposalType = this.props.proposal.content["@type"].split('.');
proposalType = proposalType[proposalType.length-1].match(/[A-Z]+[^A-Z]*|[^A-Z]+/g).join(" ");

Expand Down Expand Up @@ -439,7 +438,7 @@ export default class Proposal extends Component{
<Card body className="tally-info">
<em>
<T _purify={false} percent={numbro(this.state.totalVotes/totalVotingPower).format("0.00%")}>proposals.percentageVoted</T><br/>
{this.state.proposalValid?<T _props={{className:'text-success'}} tentative={(!this.state.voteEnded)?'(tentatively) ':''} _purify={false}>proposals.validMessage</T>:(this.state.voteEnded)?<T _props={{className:'text-danger'}} quorum={numbro(this.props.chain.gov.tallyParams.quorum).format("0.00%")} _purify={false}>proposals.invalidMessage</T>:<T moreVotes={numbro((totalVotingPower*this.props.chain.gov.tallyParams.quorum-this.state.totalVotes)/Meteor.settings.public.powerReduction).format("0,0")} _purify={false}>proposals.moreVoteMessage</T>}
{this.state.proposalValid?<T _props={{className:'text-success'}} tentative={(!this.state.voteEnded)?'(tentatively) ':''} _purify={false}>proposals.validMessage</T>:(this.state.voteEnded)?<T _props={{className:'text-danger'}} quorum={numbro(this.props.chain.gov.tally_params.quorum).format("0.00%")} _purify={false}>proposals.invalidMessage</T>:<T moreVotes={numbro((totalVotingPower*this.props.chain.gov.tally_params.quorum-this.state.totalVotes)/Meteor.settings.public.powerReduction).format("0,0")} _purify={false}>proposals.moreVoteMessage</T>}
</em>
</Card>
</Col>
Expand Down

0 comments on commit 147897c

Please sign in to comment.