Skip to content

Commit

Permalink
Merge pull request #3 from zeta-chain/group-proposals
Browse files Browse the repository at this point in the history
Added page for viewing group proposals
  • Loading branch information
brewmaster012 committed Aug 27, 2024
2 parents 4ed229e + b4f8ab9 commit 50cadc7
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 0 deletions.
16 changes: 16 additions & 0 deletions common.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export var externalChainIDs;
export var Chains;
export var zetaclientIPs;
export var bitcoinChainID;
export var groupAdminAddresses;
var zetaIP;
var auxIP = "46.4.15.110";
var zetaChainID;
Expand Down Expand Up @@ -64,6 +65,9 @@ if (network == "mockmain") {
};
esploraAPIURL = "https://blockstream.info/api";
externalChainIDs = [1,56,8332];
groupAdminAddresses = {
"Network Admin": "zeta1afk9zr2hn2jsac63h4hm60vl9z3e5u69gndzf7c99cqge3vzwjzsxn0x73",
};

Chains = {
1: {
Expand Down Expand Up @@ -121,6 +125,12 @@ if (network == "mockmain") {
};
esploraAPIURL = "https://blockstream.info/api";
externalChainIDs = [1,56,8332];
groupAdminAddresses = {
"Network Operations": "zeta1afk9zr2hn2jsac63h4hm60vl9z3e5u69gndzf7c99cqge3vzwjzsxn0x73",
"Network Admin": "zeta1dlszg2sst9r69my4f84l3mj66zxcf3umcgujys30t84srg95dgvs5wguxq",
"Validator Admin": "zeta1c799jddmlz7segvg6jrw6w2k6svwafganjdznard3tc74n7td7rqzgjegn",
"Validator Operations": "zeta17pmq7hp4upvmmveqexzuhzu64v36re3w3447n7dt46uwp594wtps03v8vg",
};

Chains = {
1: {
Expand Down Expand Up @@ -193,6 +203,11 @@ if (network == "mockmain") {
};
esploraAPIURL = "https://blockstream.info/testnet/api";
externalChainIDs = [5, 97, 80001, 18332];
groupAdminAddresses = {
"Network Admin": "zeta1afk9zr2hn2jsac63h4hm60vl9z3e5u69gndzf7c99cqge3vzwjzsxn0x73",
"Network Operations": "zeta1afk9zr2hn2jsac63h4hm60vl9z3e5u69gndzf7c99cqge3vzwjzsxn0x73",
"Validator Admin": "zeta1dlszg2sst9r69my4f84l3mj66zxcf3umcgujys30t84srg95dgvs5wguxq",
};

Chains = {
5: {
Expand Down Expand Up @@ -611,6 +626,7 @@ export function renderHeader() {
<a href="./wallet.html">Wallet</a> <span class="flexible-filler"></span>
<a href="./audit.html">Audit</a> <span class="flexible-filler"></span>
<a href="./staking.html">Staking</a>
<a href="./group-proposals.html">Admin Proposals</a>
</div>
`
document.body.insertAdjacentHTML('afterbegin', headerHTML);
Expand Down
20 changes: 20 additions & 0 deletions group-proposals.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Groups</title>
<link rel="stylesheet" href="main.css"> <!-- Assuming you have a CSS file -->
</head>
<body>
<div class="container">
<h2>Open Group Proposals</h2>
<div id="proposals-list">
<!-- Proposals will be dynamically inserted here -->
</div>
</div>

<!-- <script src="../common.js"></script> Include common.js for nodeURL -->
<script type="module" src="./group-proposals.js"></script> <!-- Add type="module" -->
</body>
</html>
69 changes: 69 additions & 0 deletions group-proposals.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import {
AddressExplorerByChainID,
bitcoinChainID,
esploraAPIURL,
evmURL,
nodeURL,
groupAdminAddresses,
RPCByChainID,
externalChainIDs,
makeTableElement2, makeTableElement, renderHeader
} from './common.js';
import './web3.min.js';
import {convertbits, decode, encode} from "./bech32.js";

await renderHeader();

async function fetchProposalsByGroupAdminAddresses() {
const allProposals = [];

for (const [adminName, groupPolicyAddress] of Object.entries(groupAdminAddresses)) {
try {
const response = await fetch(`${nodeURL}/cosmos/group/v1/proposals_by_group_policy/${groupPolicyAddress}`);
const data = await response.json();
console.log(`Proposals for ${adminName}:`, data.proposals);

// Attach group name and address to each proposal
for (const proposal of data.proposals) {
proposal.groupName = adminName;
proposal.groupAddress = groupPolicyAddress;

// Fetch proposal details
const detailsResponse = await fetch(`${nodeURL}/cosmos/group/v1/proposal/${proposal.id}`);
const detailsData = await detailsResponse.json();
proposal.details = detailsData.proposal;
}

allProposals.push(...data.proposals);
} catch (error) {
console.error(`Error fetching proposals for ${adminName}:`, error);
}
}

displayProposals(allProposals);
}

function displayProposals(proposals) {
const proposalsList = document.getElementById('proposals-list');
if (proposals.length === 0) {
proposalsList.innerText = 'No open proposals found.';
return;
}
proposals.forEach(proposal => {
const proposalItem = document.createElement('div');
proposalItem.innerHTML = `
<strong>Group Name:</strong> ${proposal.groupName} <br />
<strong>Group Address:</strong> ${proposal.groupAddress} <br />
<strong>Proposal ID:</strong> ${proposal.id} <br />
<strong>Status:</strong> ${proposal.status} <br />
<strong>Title:</strong> ${proposal.details.title} <br />
<strong>Summary:</strong> ${proposal.details.summary} <br />
<strong>Final Tally Result:</strong> Yes: ${proposal.details.final_tally_result.yes_count}, No: ${proposal.details.final_tally_result.no_count}, Abstain: ${proposal.details.final_tally_result.abstain_count}, No with Veto: ${proposal.details.final_tally_result.no_with_veto_count} <br />
<strong>Messages:</strong> ${proposal.details.messages.map(msg => JSON.stringify(msg)).join(', ')}
<br /> <br />
`;
proposalsList.appendChild(proposalItem);
});
}

fetchProposalsByGroupAdminAddresses();

0 comments on commit 50cadc7

Please sign in to comment.