- {
- priorities.map((priority: any, index: number) => (
-
- Title: {priority.title}
- Reward token: {priority.rewardToken}
- Epoch budget: {priority.epochBudget} per {priority.epochDuration} days
- Start date: {priority.startDate}
-
-
-
-
-
- ))
- }
+
+ {priorities.map((priority: any, index: number) => (
+
+ Title:
{priority.title}
+
+ Reward token:
{priority.rewardToken}
+
+ Epoch budget: {priority.epochBudget} per {priority.epochDuration}{" "}
+ days
+
+ Start date: {priority.startDate}
+
+
+
+
+ {priority.epochContributions.length > 0 && (
+
+
+ Contributions for epoch {priority.currentEpoch}:
+
+
+
+
+ Contributor |
+ Amount |
+
+
+
+
+ {contributions.map(
+ (contribution: any, index: number) => (
+
+ {contribution.contributor} |
+ {contribution.amount} |
+
+ )
+ )}
+
+
+
+
+ )}
+
+ ))}
>
- )
+ );
}
export async function getStaticPaths() {
- console.log('getStaticPaths')
+ console.log("getStaticPaths");
return {
paths: [
// { params: { address: '0x96Bf89193E2A07720e42bA3AD736128a45537e63' } }
],
- fallback: 'blocking'
- }
+ fallback: "blocking",
+ };
}
export async function getStaticProps(context: any) {
- console.log('getStaticProps')
+ console.log("getStaticProps");
- const address = context.params.address
- console.log('address:', address)
+ const address = context.params.address;
+ console.log("address:", address);
const daoContract = {
address: address,
- abi: Sector3DAO.abi
- }
+ abi: Sector3DAO.abi,
+ };
const daoData = await readContracts({
contracts: [
{
...daoContract,
- functionName: 'name'
+ functionName: "name",
},
{
...daoContract,
- functionName: 'purpose'
+ functionName: "purpose",
},
{
...daoContract,
- functionName: 'getPriorityCount'
- }
- ]
- })
- console.log('daoData:', daoData)
+ functionName: "getPriorityCount",
+ },
+ ],
+ });
+ console.log("daoData:", daoData);
- let priorityAddresses: any[] = []
+ let priorityAddresses: any[] = [];
- const priorityCount: Number = Number(daoData[2])
- console.log('priorityCount:', priorityCount)
+ const priorityCount: Number = Number(daoData[2]);
+ console.log("priorityCount:", priorityCount);
let priorityIndex = 0;
while (priorityIndex < priorityCount) {
- console.log('priorityIndex:', priorityIndex)
+ console.log("priorityIndex:", priorityIndex);
const priorityData = await readContract({
address: address,
abi: Sector3DAO.abi,
- functionName: 'priorities',
- args: [priorityIndex]
- })
- console.log('priorityData:', priorityData)
- priorityAddresses[priorityIndex] = priorityData
+ functionName: "priorities",
+ args: [priorityIndex],
+ });
+ console.log("priorityData:", priorityData);
+ priorityAddresses[priorityIndex] = priorityData;
- priorityIndex++
+ priorityIndex++;
}
- let priorities = []
+ let priorities = [];
for (const priorityAddress of priorityAddresses) {
- console.log('priorityAddress:', priorityAddress)
+ console.log("priorityAddress:", priorityAddress);
const priorityContract = {
address: priorityAddress,
- abi: Sector3DAOPriority.abi
- }
+ abi: Sector3DAOPriority.abi,
+ };
const priorityData = await readContracts({
contracts: [
{
...priorityContract,
- functionName: 'title'
+ functionName: "title",
},
{
...priorityContract,
- functionName: 'rewardToken'
+ functionName: "rewardToken",
},
{
...priorityContract,
- functionName: 'startTime'
+ functionName: "startTime",
},
{
...priorityContract,
- functionName: 'epochDuration'
+ functionName: "epochDuration",
},
{
...priorityContract,
- functionName: 'epochBudget'
- }
- ]
- })
- console.log('priorityData:', priorityData)
+ functionName: "epochBudget",
+ },
+ ],
+ });
+ console.log("priorityData:", priorityData);
const priority: any = {
address: priorityAddress,
title: priorityData[0],
rewardToken: priorityData[1],
- startDate: new Date(Number(priorityData[2]) * 1_000).toISOString().substring(0, 10),
+ startDate: new Date(Number(priorityData[2]) * 1_000)
+ .toISOString()
+ .substring(0, 10),
epochDuration: priorityData[3],
- epochBudget: ethers.utils.formatUnits(String(priorityData[4]))
- }
- priorities[priorities.length] = priority
+ epochBudget: ethers.utils.formatUnits(String(priorityData[4])),
+ };
+ priorities[priorities.length] = priority;
+
+ const currentEpoch = Math.floor(
+ Date.now() / (priorityData[3] * 24 * 60 * 60 * 1000)
+ );
+ const epochContributionsData = await readContract({
+ address: priorityAddress,
+ abi: Sector3DAOPriority.abi,
+ functionName: "getEpochContributions",
+ args: [currentEpoch],
+ });
+
+ const epochContributions = epochContributionsData[1].map(
+ (amount: any, index: number) => {
+ const contributor = epochContributionsData[0][index];
+ return { contributor, amount };
+ }
+ );
+
+ console.log("epochContributions:", epochContributions);
}
const dao = {
name: daoData[0],
purpose: daoData[1],
- address: address
- }
+ address: address,
+ };
return {
props: {
dao: dao,
- priorities: priorities
- }
- }
-}
+ priorities: priorities,
+ },
+ };
+}
\ No newline at end of file