Skip to content
This repository was archived by the owner on Nov 15, 2024. It is now read-only.

Commit a368fe6

Browse files
authored
Merge pull request #27 from raydium-io/farm-to-api
Farm to api
2 parents 116ee08 + 38ce1ff commit a368fe6

File tree

3 files changed

+121
-2230
lines changed

3 files changed

+121
-2230
lines changed

src/pages/farms.vue

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,10 @@
9898
<CollapsePanel
9999
v-for="farm in farms.filter(isInSearch).filter(isInTab).filter(canShowByStaked)"
100100
v-show="
101-
((!endedFarmsPoolId.includes(farm.farmInfo.poolId) ||
102-
endedFarmsPoolIdWhiteList.includes(farm.farmInfo.poolId)) &&
101+
((!endedFarmsPoolId.includes(farm.farmInfo.poolId) || UPCOMING.includes(farm.farmInfo.poolId)) &&
103102
!farm.farmInfo.legacy &&
104103
poolType) ||
105-
(((endedFarmsPoolId.includes(farm.farmInfo.poolId) &&
106-
!endedFarmsPoolIdWhiteList.includes(farm.farmInfo.poolId)) ||
104+
(((endedFarmsPoolId.includes(farm.farmInfo.poolId) && !UPCOMING.includes(farm.farmInfo.poolId)) ||
107105
farm.farmInfo.legacy) &&
108106
!poolType)
109107
"
@@ -122,6 +120,23 @@
122120
class="dual-tag"
123121
>DUAL YIELD</span
124122
>
123+
<span
124+
v-if="
125+
UPCOMING.includes(farm.farmInfo.poolId) &&
126+
Number(farm.farmInfo.apr) === 0 &&
127+
Number(farm.farmInfo.aprB) === 0
128+
"
129+
class="new-tag"
130+
>UPCOMING POOL</span
131+
>
132+
<span
133+
v-if="
134+
UPCOMING.includes(farm.farmInfo.poolId) &&
135+
(Number(farm.farmInfo.apr) > 0 || Number(farm.farmInfo.aprB) > 0)
136+
"
137+
class="new-tag"
138+
>NEW POOL</span
139+
>
125140
</Col>
126141
<Col class="state" :span="isMobile ? 6 : 5">
127142
<div class="title">{{ isMobile ? 'Reward' : 'Pending Reward' }}</div>
@@ -381,7 +396,7 @@ import {
381396
382397
import { get, cloneDeep } from 'lodash-es'
383398
import { TokenAmount } from '@/utils/safe-math'
384-
import { FarmInfo } from '@/utils/farms'
399+
import { FarmInfo, UPCOMING } from '@/utils/farms'
385400
import { deposit, depositV5, withdraw, withdrawV4, withdrawV5 } from '@/utils/stake'
386401
import { getUnixTs } from '@/utils'
387402
import { getBigNumber } from '@/utils/layouts'
@@ -425,8 +440,8 @@ export default Vue.extend({
425440
unstaking: false,
426441
poolType: true,
427442
endedFarmsPoolId: [] as string[],
428-
endedFarmsPoolIdWhiteList: ['GBjTMHf9TsRdMnP6S3ewAgpSoCacpZqQF1tXmnchborv'] as string[],
429-
showCollapse: [] as any[]
443+
showCollapse: [] as any[],
444+
UPCOMING
430445
}
431446
},
432447
@@ -1066,6 +1081,14 @@ export default Vue.extend({
10661081
border: 1px solid #c200fb;
10671082
border-radius: 4px;
10681083
}
1084+
.new-tag {
1085+
margin-left: 8px;
1086+
padding: 0 7px;
1087+
font-size: 10px;
1088+
color: rgb(0, 209, 255);
1089+
border: 1px solid rgb(0, 209, 255);
1090+
border-radius: 4px;
1091+
}
10691092
}
10701093
10711094
.state {

src/store/farm.ts

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { PublicKey } from '@solana/web3.js'
22
import { cloneDeep } from 'lodash-es'
33
import { actionTree, getterTree, mutationTree } from 'typed-vuex'
44

5-
import { FARMS, getFarmByPoolId } from '@/utils/farms'
5+
import { FARMS, FARMS_OLD, getFarmByPoolId, UPCOMING } from '@/utils/farms'
66
import { STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_V4, STAKE_PROGRAM_ID_V5 } from '@/utils/ids'
77
import { ACCOUNT_LAYOUT, getBigNumber } from '@/utils/layouts'
88
import logger from '@/utils/logger'
@@ -23,6 +23,7 @@ import {
2323
getMultipleAccounts
2424
} from '@/utils/web3'
2525
import BigNumber from 'bignumber.js'
26+
import { LP_TOKENS, TOKENS } from '@/utils/tokens'
2627

2728
const AUTO_REFRESH_TIME = 60
2829

@@ -79,13 +80,81 @@ export const mutations = mutationTree(state, {
7980
}
8081
})
8182

83+
interface farmApiInfo {
84+
id: string
85+
lpMint: string
86+
rewardMintA: string
87+
rewardMintB: string
88+
version: number
89+
programId: string
90+
authority: string
91+
lpVault: string
92+
rewardVaultA: string
93+
rewardVaultB: string
94+
upcoming: boolean
95+
}
96+
8297
export const actions = actionTree(
8398
{ state, getters, mutations },
8499
{
85100
async requestInfos({ commit, dispatch }) {
86101
commit('setLoading', true)
87102
dispatch('getStakeAccounts')
88103

104+
const farmsNew = []
105+
const upcomings = []
106+
107+
const farmApiInfosData: { official: farmApiInfo[] } = await this.$axios.get('https://api.raydium.io/v1/main/farm')
108+
const farmApiInfos = farmApiInfosData.official
109+
for (const farmItem of farmApiInfos) {
110+
if (farmItem.upcoming) upcomings.push(farmItem.id)
111+
112+
const known = FARMS_OLD.find((item) => item.poolId === farmItem.id)
113+
114+
if (known === undefined) {
115+
const rewardA =
116+
TOKENS[farmItem.rewardMintA] ??
117+
Object.values(TOKENS).find((item) => item.mintAddress === farmItem.rewardMintA)
118+
const rewardB =
119+
TOKENS[farmItem.rewardMintB] ??
120+
Object.values(TOKENS).find((item) => item.mintAddress === farmItem.rewardMintB)
121+
const lp =
122+
LP_TOKENS[farmItem.lpMint] ?? Object.values(LP_TOKENS).find((item) => item.mintAddress === farmItem.lpMint)
123+
124+
if (!(rewardA && (farmItem.rewardMintB === null || rewardB) && lp)) continue
125+
126+
farmsNew.push({
127+
name: lp.symbol,
128+
lp: { ...lp },
129+
reward: { ...rewardA },
130+
rewardB: { ...rewardB },
131+
isStake: false,
132+
133+
fusion: farmItem.version !== 3,
134+
legacy: false,
135+
dual: false,
136+
version: farmItem.version,
137+
programId: farmItem.programId,
138+
139+
poolId: farmItem.id,
140+
poolAuthority: farmItem.authority,
141+
poolLpTokenAccount: farmItem.lpVault,
142+
poolRewardTokenAccount: farmItem.rewardVaultA,
143+
poolRewardTokenAccountB: farmItem.rewardVaultB
144+
})
145+
}
146+
}
147+
148+
const tempFarms = [...FARMS_OLD, ...farmsNew]
149+
150+
FARMS.splice(0, FARMS.length)
151+
FARMS.push(...tempFarms)
152+
153+
UPCOMING.splice(0, upcomings.length)
154+
UPCOMING.push(...upcomings)
155+
156+
console.log(farmsNew.length, tempFarms.length)
157+
89158
const conn = this.$web3
90159

91160
const farms = {} as any

0 commit comments

Comments
 (0)