feature: filter pools by not expired

This commit is contained in:
Claudio Ramos
2021-08-30 03:57:42 -03:00
parent 0a96c1660d
commit 9438420afa
5 changed files with 73 additions and 3 deletions

File diff suppressed because one or more lines are too long

View File

@@ -7,6 +7,9 @@ import { getApr } from "../../utils/apr";
import { getPriceInBusd } from "../../utils/getPrice";
import { getTotalStaked } from "../../utils/getTotalStaked";
import { StakeOrderModal } from "./StakeOrderModal";
import { ethers } from "ethers";
import sousChef from "../../abi/sousChef.json"
import { getEndBlock } from "../../utils/getEndBlock";
type PoolProps = {
pool: PoolConfig;
@@ -29,6 +32,14 @@ export const Pool: FC<PoolProps> = ({ pool, balance }) => {
React.useEffect(() => {
(async () => {
const chef = new ethers.Contract(
pool.contractAddress[56],
new ethers.utils.Interface(sousChef),
provider
);
const stakingPrice = await getPriceInBusd(router, pool.stakingToken);
const earningPrice = await getPriceInBusd(router, pool.earningToken);

View File

@@ -1,12 +1,22 @@
import { graphql } from "babel-plugin-relay/macro";
import React from "react";
import React, { useEffect, useMemo, useState } from "react";
import { useLazyLoadQuery } from "react-relay";
import { pools } from "../../constants/Pools";
import { useBsc } from "../../contexts/BscProvider";
import { PoolConfig } from "../../types";
import { Pool } from "./Pool";
import { ethers } from "ethers";
import sousChef from "../../abi/sousChef.json"
import { getEndBlock } from "../../utils/getEndBlock";
import type { PoolListingQuery } from "./__generated__/PoolListingQuery.graphql";
export const PoolListing = () => {
const {
provider
} = useBsc();
const [validPools, setValidPools] = useState<PoolConfig[]>([])
const { currentUser } = useLazyLoadQuery<PoolListingQuery>(
graphql`
query PoolListingQuery {
@@ -22,9 +32,43 @@ export const PoolListing = () => {
const balance = currentUser?.balance.amount ?? "0";
const getChef = (pool: PoolConfig) => {
return new ethers.Contract(
pool.contractAddress[56],
new ethers.utils.Interface(sousChef),
provider
);
}
useEffect(() => {
(async() => {
const blockNumber = await provider.getBlockNumber()
console.log(blockNumber)
const valids: PoolConfig[] = []
for(let pool of pools) {
if(pool.sousId === 0) {
valids.push(pool)
setValidPools([...valids])
continue
}
try {
const chef = getChef(pool)
const endBlock = await getEndBlock(chef)
if(endBlock >= blockNumber) {
valids.push(pool)
setValidPools([...valids])
}
} catch(e) {
console.log(e)
}
}
})()
}, [])
return (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 place-items-center w-full gap-8 py-4 -mt-16 overflow-x-hidden">
{pools
{validPools
.filter((pool) => !pool.isFinished)
.sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0))
.map((pool) => (

View File

@@ -0,0 +1,14 @@
import type { Contract } from "ethers";
import { ethers } from "ethers";
import { tokens } from "../constants/pancake/Tokens";
import type { Token } from "../constants/pancake/Tokens";
export const getEndBlock = async (sousChef: Contract) => {
try {
return sousChef.bonusEndBlock();
} catch {
return 0;
}
};

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: XStake Pages: 1 -->
<svg width="606pt" height="674pt"

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB