Skip to content

Commit

Permalink
Merge pull request #743 from subquery/feat/add-query-rewards
Browse files Browse the repository at this point in the history
feat: add query rewards and total rewards
  • Loading branch information
HuberTRoy committed Jul 16, 2024
2 parents ef9183d + c700566 commit f903e39
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 3 deletions.
4 changes: 3 additions & 1 deletion src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ const makeDebugInfo = (debugInfo: object) => {
};

const RenderRouter: React.FC = () => {
const { address, connector } = useAccount();
const { address, connector, isConnected } = useAccount();
const { signer } = useEthersSigner();
const provider = useEthersProviderWithPublic();

Expand All @@ -56,6 +56,7 @@ const RenderRouter: React.FC = () => {
signerAddress: 'not collected',
signerChainId: 'not collected',
providerNetwork: provider._network.name,
isConnected: isConnected,
});

const signerAddress = await signer?.getAddress();
Expand All @@ -66,6 +67,7 @@ const RenderRouter: React.FC = () => {
signerAddress,
signerChainId,
providerNetwork: provider._network.name,
isConnected: isConnected,
});
})();
}, [address, connector, signer, provider]);
Expand Down
79 changes: 78 additions & 1 deletion src/hooks/useSortedIndexerDeployments.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ export interface UseSortedIndexerDeploymentsReturn extends Pick<DeploymentIndexe
allocatedAmount?: string;
lastEraAllocatedRewards?: string;
lastEraBurnt?: string;
lastEraQueryRewards?: string;
totalRewards?: string;
}

// TODO: apply with query hook
Expand All @@ -49,6 +51,7 @@ export function useSortedIndexerDeployments(indexer: string): AsyncData<Array<Us
fetchPolicy: 'network-only',
});

// TODO: migrate to network-query
const lastEraAllocatedRewardsAndBurned = useQuery<{
indexerAllocationRewards: {
groupedAggregates: Array<{
Expand Down Expand Up @@ -81,6 +84,63 @@ export function useSortedIndexerDeployments(indexer: string): AsyncData<Array<Us
},
);

const queryAndTotalRewardsSortByDeploymentIdAndEra = useQuery<{
indexerEraDeploymentRewards: {
nodes: Array<{
deploymentId: string;
totalRewards: string;
queryRewards: string;
}>;
};
totalRewardsOfDeployment: {
groupedAggregates: {
keys: string[];
sum: {
totalRewards: string;
};
}[];
};
}>(
gql`
query GetAllocationRewardsByDeploymentIdAndIndexerId(
$indexerId: String!
$deploymentId: [String!]
$eraIdx: Int!
) {
indexerEraDeploymentRewards(
filter: {
indexerId: { equalTo: $indexerId }
deploymentId: { in: $deploymentId }
eraIdx: { equalTo: $eraIdx }
}
) {
nodes {
deploymentId
queryRewards
}
}
totalRewardsOfDeployment: indexerEraDeploymentRewards(
filter: { indexerId: { equalTo: $indexerId }, deploymentId: { in: $deploymentId } }
) {
groupedAggregates(groupBy: DEPLOYMENT_ID) {
keys
sum {
totalRewards
}
}
}
}
`,
{
variables: {
indexerId: indexer || '',
eraIdx: (currentEra.data?.index || 0) - 1,
deploymentId: indexerDeployments.data?.indexerDeployments?.nodes.map((i) => i?.deploymentId),
},
},
);

const { indexerMetadata } = useIndexerMetadata(indexer);
const proxyEndpoint = indexerMetadata?.url;

Expand Down Expand Up @@ -140,6 +200,15 @@ export function useSortedIndexerDeployments(indexer: string): AsyncData<Array<Us
return i?.keys?.[0] === deploymentId;
},
);
const queryRewards =
queryAndTotalRewardsSortByDeploymentIdAndEra.data?.indexerEraDeploymentRewards?.nodes?.find(
(i) => i.deploymentId === deploymentId,
);
const totalRewards =
queryAndTotalRewardsSortByDeploymentIdAndEra.data?.totalRewardsOfDeployment?.groupedAggregates?.find(
(i) => i?.keys?.[0] === deploymentId,
);

const lastEraAllocatedRewards = allocationInfo?.sum?.reward?.toString();
const lastEraBurnt = allocationInfo?.sum?.burnt?.toString();

Expand All @@ -162,10 +231,18 @@ export function useSortedIndexerDeployments(indexer: string): AsyncData<Array<Us
lastEraBurnt,
id: indexerDeployment?.id,
deployment: indexerDeployment?.deployment || null,
lastEraQueryRewards: queryRewards?.queryRewards,
totalRewards: totalRewards?.sum.totalRewards,
};
}),
);
}, [indexerDeployments.loading, proxyEndpoint, allocatedProjects.data, lastEraAllocatedRewardsAndBurned.data]);
}, [
indexerDeployments.loading,
proxyEndpoint,
allocatedProjects.data,
lastEraAllocatedRewardsAndBurned.data,
queryAndTotalRewardsSortByDeploymentIdAndEra.data,
]);

return {
...sortedIndexerDeployments,
Expand Down
33 changes: 32 additions & 1 deletion src/pages/indexer/MyProjects/OwnDeployments/OwnDeployments.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,21 @@ export const OwnDeployments: React.FC<Props> = ({ indexer, emptyList, desc }) =>
return BigNumberJs(a.deploymentApy || '0').comparedTo(b.deploymentApy || '0');
},
},
{
width: 230,
title: <TableTitle title="Total Rewards" />,
dataIndex: 'totalRewards',
render: (totalRewards) => {
return (
<Typography>
{formatNumber(formatSQT(totalRewards || '0'))} {TOKEN}
</Typography>
);
},
sorter: (a, b) => {
return BigNumberJs(a.totalRewards || '0').comparedTo(b.totalRewards || '0');
},
},
{
width: 230,
title: <TableTitle title="Allocated amount" />,
Expand Down Expand Up @@ -226,6 +241,22 @@ export const OwnDeployments: React.FC<Props> = ({ indexer, emptyList, desc }) =>
return BigNumberJs(a.lastEraAllocatedRewards || '0').comparedTo(b.lastEraAllocatedRewards || '0');
},
},
{
width: 230,
title: <TableTitle title="LAST ERA QUERY REWARDS" />,
dataIndex: 'lastEraQueryRewards',
render: (lastEraQueryRewards) => {
return (
<Typography>
{formatNumber(formatSQT(lastEraQueryRewards || '0'))} {TOKEN}
</Typography>
);
},
sorter: (a, b) => {
return BigNumberJs(a.lastEraQueryRewards || '0').comparedTo(b.lastEraQueryRewards || '0');
},
},

{
width: 230,
title: <TableTitle title="LAST ERA BURNED REWARDS" />,
Expand Down Expand Up @@ -683,7 +714,7 @@ export const OwnDeployments: React.FC<Props> = ({ indexer, emptyList, desc }) =>
dataSource={indexerDeployments.loading ? previousSortedData : sortedData}
rowKey={'deploymentId'}
pagination={false}
scroll={width <= 1800 ? { x: 1800 } : undefined}
scroll={width <= 2260 ? { x: 2260 } : undefined}
loading={indexerDeployments.loading}
/>
)}
Expand Down
4 changes: 4 additions & 0 deletions src/utils/parseError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,10 @@ export const isNeedSignerToDoTransaction = (msg: Error | string | undefined): bo
return false;
}

if (msg.toString().includes('sending a transaction requires a signer')) {
return true;
}

return false;
};

Expand Down

0 comments on commit f903e39

Please sign in to comment.