Skip to content

Commit

Permalink
fix: Conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
ChefMomota committed Oct 17, 2024
1 parent 7e76a3a commit b7f0a47
Show file tree
Hide file tree
Showing 26 changed files with 118 additions and 5,169 deletions.
31 changes: 25 additions & 6 deletions apps/web/src/hooks/useFarm.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import { ComputedFarmConfigV3, createFarmFetcherV3, fetchTokenUSDValues } from '@pancakeswap/farms'
import {
ComputedFarmConfigV3,
createFarmFetcherV3,
defineFarmV3ConfigsFromUniversalFarm,
fetchTokenUSDValues,
fetchUniversalFarms,
Protocol,
UniversalFarmConfigV3,
} from '@pancakeswap/farms'
import { priceHelperTokens } from '@pancakeswap/farms/constants/common'
import { Currency, ERC20Token } from '@pancakeswap/sdk'
import { FeeAmount, Pool } from '@pancakeswap/v3-sdk'
import { useQuery } from '@tanstack/react-query'
import { useMemo } from 'react'

import { legacyFarmsV3ConfigChainMap } from '@pancakeswap/farms/constants/v3'
import { FAST_INTERVAL } from 'config/constants'
import { useEffect, useMemo, useState } from 'react'
import { getViemClients } from 'utils/viem'

const farmFetcherV3 = createFarmFetcherV3(getViemClients)
Expand All @@ -19,18 +25,31 @@ interface FarmParams {

export function useFarm({ currencyA, currencyB, feeAmount }: FarmParams) {
const chainId = currencyA?.chainId
const [farms, setFarms] = useState<ComputedFarmConfigV3[]>([])

useEffect(() => {
const fetchFarmV3Config = async () => {
if (chainId) {
const farmsV3 = await fetchUniversalFarms(chainId, Protocol.V3)
setFarms(defineFarmV3ConfigsFromUniversalFarm(farmsV3 as UniversalFarmConfigV3[]))
}
}

fetchFarmV3Config()
}, [chainId])

const farmConfig = useMemo(() => {
if (!chainId || !currencyA || !currencyB || !feeAmount) {
return null
}
const farms: ComputedFarmConfigV3[] = legacyFarmsV3ConfigChainMap[chainId]

if (!farms) {
return null
}
const lpAddress = Pool.getAddress(currencyA.wrapped, currencyB.wrapped, feeAmount)
const farm = farms.find((f) => f.lpAddress === lpAddress)
return farm ?? null
}, [chainId, currencyA, currencyB, feeAmount])
}, [chainId, currencyA, currencyB, farms, feeAmount])

return useQuery({
queryKey: [chainId, farmConfig?.token0.symbol, farmConfig?.token1.symbol, farmConfig?.feeAmount],
Expand Down
11 changes: 2 additions & 9 deletions apps/web/src/pages/api/configs/farms/v2/index.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
import {
fetchAllUniversalFarms,
formatUniversalFarmToSerializedFarm,
UNIVERSAL_FARMS_WITH_TESTNET,
} from '@pancakeswap/farms'
import { fetchAllUniversalFarms, formatUniversalFarmToSerializedFarm } from '@pancakeswap/farms'
import { NextApiHandler } from 'next'
import { stringify } from 'viem'

const handler: NextApiHandler = async (req, res) => {
const includeTestnet = !!req.query.includeTestnet

try {
const fetchFarmConfig = await fetchAllUniversalFarms()
const farmConfig = includeTestnet ? fetchFarmConfig : UNIVERSAL_FARMS_WITH_TESTNET
const farmConfig = await fetchAllUniversalFarms()
const legacyFarmConfig = formatUniversalFarmToSerializedFarm(farmConfig)
// cache for long time, it should revalidate on every deployment
res.setHeader('Cache-Control', `max-age=10800, s-maxage=31536000`)
Expand Down
14 changes: 11 additions & 3 deletions apps/web/src/pages/api/v3/[chainId]/farms/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import { ChainId } from '@pancakeswap/chains'
import { createFarmFetcherV3, fetchCommonTokenUSDValue } from '@pancakeswap/farms'
import {
createFarmFetcherV3,
defineFarmV3ConfigsFromUniversalFarm,
fetchCommonTokenUSDValue,
fetchUniversalFarms,
Protocol,
UniversalFarmConfigV3,
} from '@pancakeswap/farms'
import { priceHelperTokens } from '@pancakeswap/farms/constants/common'
import { legacyFarmsV3ConfigChainMap } from '@pancakeswap/farms/constants/v3'
import { NextApiHandler } from 'next'
import { getViemClients } from 'utils/viem.server'
import { nativeEnum as zNativeEnum } from 'zod'
Expand All @@ -22,7 +28,9 @@ const handler: NextApiHandler = async (req, res) => {
if (!farmFetcherV3.isChainSupported(chainId)) {
return res.status(400).json({ error: 'Chain not supported' })
}
const farms = legacyFarmsV3ConfigChainMap[chainId]

const fetchFarmsV3 = await fetchUniversalFarms(chainId, Protocol.V3)
const farms = defineFarmV3ConfigsFromUniversalFarm(fetchFarmsV3 as UniversalFarmConfigV3[])

const commonPrice = await fetchCommonTokenUSDValue(priceHelperTokens[chainId])

Expand Down
8 changes: 5 additions & 3 deletions apps/web/src/state/farmsV3/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import {
FarmsV3Response,
IPendingCakeByTokenId,
PositionDetails,
Protocol,
SerializedFarmsV3Response,
bCakeSupportedChainId,
createFarmFetcherV3,
defineFarmV3ConfigsFromUniversalFarm,
fetchUniversalFarms,
supportedChainIdV3,
} from '@pancakeswap/farms'
import { priceHelperTokens } from '@pancakeswap/farms/constants/common'
import { legacyFarmsV3ConfigChainMap } from '@pancakeswap/farms/constants/v3'
import { bCakeFarmBoosterVeCakeABI } from '@pancakeswap/farms/constants/v3/abi/bCakeFarmBoosterVeCake'
import { TvlMap, fetchCommonTokenUSDValue } from '@pancakeswap/farms/src/fetchFarmsV3'
import { deserializeToken } from '@pancakeswap/token-lists'
Expand Down Expand Up @@ -83,8 +85,8 @@ export const useFarmsV3Public = () => {
}

// direct copy from api routes, the client side fetch is preventing cache due to migration phase we want fresh data
const farms = legacyFarmsV3ConfigChainMap[chainId as ChainId]

const fetchFarmsV3 = await fetchUniversalFarms(chainId, Protocol.V3)
const farms = defineFarmV3ConfigsFromUniversalFarm(fetchFarmsV3 as UniversalFarmConfigV3[])
const commonPrice = await fetchCommonTokenUSDValue(priceHelperTokens[chainId ?? -1])

try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { ChainId } from '@pancakeswap/chains'
import { legacyFarmsV3ConfigChainMap } from '@pancakeswap/farms/constants/v3'
import {
ComputedFarmConfigV3,
defineFarmV3ConfigsFromUniversalFarm,
fetchUniversalFarms,
Protocol,
UniversalFarmConfigV3,
} from '@pancakeswap/farms'
import { useTranslation } from '@pancakeswap/localization'
import { Currency } from '@pancakeswap/sdk'
import { AtomBox, AutoColumn, Button, CircleLoader, Text } from '@pancakeswap/uikit'
Expand Down Expand Up @@ -37,7 +42,16 @@ export default function FeeSelector({
}) {
const { t } = useTranslation()
const { chainId } = useActiveChainId()
const farmV3Config = legacyFarmsV3ConfigChainMap[currencyA?.chainId as ChainId]
const [farmV3Config, setFarmV3Config] = useState<ComputedFarmConfigV3[]>([])

useEffect(() => {
const fetchFarmV3Config = async () => {
const farms = await fetchUniversalFarms(chainId, Protocol.V3)
setFarmV3Config(defineFarmV3ConfigsFromUniversalFarm(farms as UniversalFarmConfigV3[]))
}

fetchFarmV3Config()
}, [])

const farmV3 = useMemo(() => {
if (currencyA && currencyB) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { getLegacyFarmConfig } from '@pancakeswap/farms'
import { legacyFarmsV3ConfigChainMap } from '@pancakeswap/farms/constants/v3'
import { fetchUniversalFarms, getLegacyFarmConfig, Protocol } from '@pancakeswap/farms'
import { useQuery } from '@tanstack/react-query'
import BigNumber from 'bignumber.js'
import useActiveWeb3React from 'hooks/useActiveWeb3React'
Expand All @@ -16,7 +15,8 @@ const useIsRenderUserBanner = () => {
queryKey: ['shouldRenderUserBanner', account],
queryFn: async () => {
const v2FarmsConfigSize = (await getLegacyFarmConfig(chainId))?.length || 0
const v3FarmsConfigSize = legacyFarmsV3ConfigChainMap[chainId]?.length || 0
const farmsV3 = await fetchUniversalFarms(chainId, Protocol.V3)
const v3FarmsConfigSize = farmsV3?.length || 0
const totalFarmSize = v2FarmsConfigSize + v3FarmsConfigSize
return Boolean(totalFarmSize)
},
Expand Down
27 changes: 22 additions & 5 deletions apps/web/src/views/Swap/hooks/useTradingRewardTokenList.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,34 @@
import { ChainId } from '@pancakeswap/chains'
import { legacyFarmsV3ConfigChainMap } from '@pancakeswap/farms/constants/v3'
import {
ComputedFarmConfigV3,
defineFarmV3ConfigsFromUniversalFarm,
fetchUniversalFarms,
Protocol,
UniversalFarmConfigV3,
} from '@pancakeswap/farms'
import { useActiveChainId } from 'hooks/useActiveChainId'
import { useMemo } from 'react'
import { useEffect, useMemo, useState } from 'react'
import useAllTradingRewardPair, { RewardStatus, RewardType } from 'views/TradingReward/hooks/useAllTradingRewardPair'

const useTradingRewardTokenList = () => {
const { chainId } = useActiveChainId()
const [farms, setFarms] = useState<ComputedFarmConfigV3[]>([])

const { data } = useAllTradingRewardPair({
status: RewardStatus.ALL,
type: RewardType.CAKE_STAKERS,
})

useEffect(() => {
const fetchFarmV3Config = async () => {
if (chainId) {
const farmsV3 = await fetchUniversalFarms(chainId, Protocol.V3)
setFarms(defineFarmV3ConfigsFromUniversalFarm(farmsV3 as UniversalFarmConfigV3[]))
}
}

fetchFarmV3Config()
}, [chainId])

const uniqueAddressList = useMemo(() => {
const currentTime = Date.now() / 1000

Expand Down Expand Up @@ -42,13 +60,12 @@ const useTradingRewardTokenList = () => {
uniqueAddressList
// eslint-disable-next-line array-callback-return, consistent-return
.map((list) => {
const farms = legacyFarmsV3ConfigChainMap[chainId as ChainId]
const pair = farms.find((farm) => farm.lpAddress.toLowerCase() === (list as string).toLowerCase())
if (pair) return pair
})
.filter((i) => Boolean(i))
)
}, [uniqueAddressList, chainId])
}, [uniqueAddressList, farms])

return {
tokenPairs,
Expand Down
30 changes: 10 additions & 20 deletions apps/web/src/views/TradingReward/config/pairs/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,23 @@ import { ChainId } from '@pancakeswap/chains'
import { ComputedFarmConfigV3, FarmV3SupportedChainId } from '@pancakeswap/farms/src'

// Edge Case Farms
import { legacyV3ArbFarmConfig } from '@pancakeswap/farms/src/farms/arb'
import { legacyV3BaseFarmConfig } from '@pancakeswap/farms/src/farms/base'
import { legacyV3BscFarmConfig } from '@pancakeswap/farms/src/farms/bsc'
import { legacyV3BscTestnetFarmConfig } from '@pancakeswap/farms/src/farms/bscTestnet'
import { legacyV3EthereumFarmConfig } from '@pancakeswap/farms/src/farms/eth'
import { legacyV3LineaFarmConfig } from '@pancakeswap/farms/src/farms/linea'
import { legacyV3OpBNBFarmConfig } from '@pancakeswap/farms/src/farms/opBNB'
import { legacyV3OpBNBTestnetFarmConfig } from '@pancakeswap/farms/src/farms/opBnbTestnet'
import { legacyV3PolygonZkEVMFarmConfig } from '@pancakeswap/farms/src/farms/polygonZkEVM'
import { legacyV3ZkSyncFarmConfig } from '@pancakeswap/farms/src/farms/zkSync'
import { tradingRewardBaseV3Pair } from './edgeCasesFarms/baseFarm'
import { tradingRewardBscV3Pair } from './edgeCasesFarms/bscFarm'
import { tradingRewardLineaV3Pair } from './edgeCasesFarms/lineaFarm'
import { tradingRewardZkEvmV3Pair } from './edgeCasesFarms/zkEVMFarm'
import { tradingRewardZkSyncV3Pair } from './edgeCasesFarms/zkSyncFarm'

export const tradingRewardPairConfigChainMap: Record<FarmV3SupportedChainId, ComputedFarmConfigV3[]> = {
[ChainId.ETHEREUM]: legacyV3EthereumFarmConfig,
[ChainId.BSC]: [...legacyV3BscFarmConfig, ...tradingRewardBscV3Pair],
[ChainId.BSC_TESTNET]: legacyV3BscTestnetFarmConfig,
[ChainId.POLYGON_ZKEVM]: [...legacyV3PolygonZkEVMFarmConfig, ...tradingRewardZkEvmV3Pair],
[ChainId.ETHEREUM]: [],
[ChainId.BSC]: [...tradingRewardBscV3Pair],
[ChainId.BSC_TESTNET]: [],
[ChainId.POLYGON_ZKEVM]: [...tradingRewardZkEvmV3Pair],
[ChainId.POLYGON_ZKEVM_TESTNET]: [],
[ChainId.ZKSYNC]: [...legacyV3ZkSyncFarmConfig, ...tradingRewardZkSyncV3Pair],
[ChainId.ZKSYNC]: [...tradingRewardZkSyncV3Pair],
[ChainId.ZKSYNC_TESTNET]: [],
[ChainId.ARBITRUM_ONE]: legacyV3ArbFarmConfig,
[ChainId.LINEA]: [...legacyV3LineaFarmConfig, ...tradingRewardLineaV3Pair],
[ChainId.BASE]: [...legacyV3BaseFarmConfig, ...tradingRewardBaseV3Pair],
[ChainId.OPBNB_TESTNET]: legacyV3OpBNBTestnetFarmConfig,
[ChainId.OPBNB]: legacyV3OpBNBFarmConfig,
[ChainId.ARBITRUM_ONE]: [],
[ChainId.LINEA]: [...tradingRewardLineaV3Pair],
[ChainId.BASE]: [...tradingRewardBaseV3Pair],
[ChainId.OPBNB_TESTNET]: [],
[ChainId.OPBNB]: [],
}
30 changes: 0 additions & 30 deletions packages/farms/constants/v3/index.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,5 @@
import { ChainId } from '@pancakeswap/chains'
import { Address } from 'viem'
import { FarmV3SupportedChainId } from '../../src'
import { legacyV3ArbFarmConfig } from '../../src/farms/arb'
import { legacyV3BaseFarmConfig } from '../../src/farms/base'
import { legacyV3BscFarmConfig } from '../../src/farms/bsc'
import { legacyV3BscTestnetFarmConfig } from '../../src/farms/bscTestnet'
import { legacyV3EthereumFarmConfig } from '../../src/farms/eth'
import { legacyV3LineaFarmConfig } from '../../src/farms/linea'
import { legacyV3OpBNBFarmConfig } from '../../src/farms/opBNB'
import { legacyV3OpBNBTestnetFarmConfig } from '../../src/farms/opBnbTestnet'
import { legacyV3PolygonZkEVMFarmConfig } from '../../src/farms/polygonZkEVM'
import { legacyV3PolygonZkEVMTestnetFarmConfig } from '../../src/farms/polygonZkEVMTestnet'
import { legacyV3ZkSyncFarmConfig } from '../../src/farms/zkSync'
import { legacyV3ZkSyncTestnetFarmConfig } from '../../src/farms/zkSyncTestnet'
import { ComputedFarmConfigV3 } from '../../src/types'

/** @deprecated */
export const legacyFarmsV3ConfigChainMap: Record<FarmV3SupportedChainId, ComputedFarmConfigV3[]> = {
[ChainId.ETHEREUM]: legacyV3EthereumFarmConfig,
[ChainId.BSC]: legacyV3BscFarmConfig,
[ChainId.BSC_TESTNET]: legacyV3BscTestnetFarmConfig,
[ChainId.ZKSYNC_TESTNET]: legacyV3ZkSyncTestnetFarmConfig,
[ChainId.POLYGON_ZKEVM]: legacyV3PolygonZkEVMFarmConfig,
[ChainId.POLYGON_ZKEVM_TESTNET]: legacyV3PolygonZkEVMTestnetFarmConfig,
[ChainId.ZKSYNC]: legacyV3ZkSyncFarmConfig,
[ChainId.ARBITRUM_ONE]: legacyV3ArbFarmConfig,
[ChainId.LINEA]: legacyV3LineaFarmConfig,
[ChainId.BASE]: legacyV3BaseFarmConfig,
[ChainId.OPBNB_TESTNET]: legacyV3OpBNBTestnetFarmConfig,
[ChainId.OPBNB]: legacyV3OpBNBFarmConfig,
}

export type Addresses = {
[chainId in ChainId]?: Address
Expand Down
1 change: 0 additions & 1 deletion packages/farms/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ test('exports', () => {
"FARM_AUCTION_HOSTING_IN_SECONDS",
"fetchAllUniversalFarms",
"fetchAllUniversalFarmsMap",
"UNIVERSAL_FARMS_WITH_TESTNET",
"fetchUniversalFarms",
"getLegacyFarmConfig",
"isStableFarm",
Expand Down
Loading

0 comments on commit b7f0a47

Please sign in to comment.