@@ -2,7 +2,7 @@ import { PublicKey } from '@solana/web3.js'
22import { cloneDeep } from 'lodash-es'
33import { actionTree , getterTree , mutationTree } from 'typed-vuex'
44
5- import { FARMS , getFarmByPoolId } from '@/utils/farms'
5+ import { FARMS , FARMS_OLD , getFarmByPoolId , UPCOMING } from '@/utils/farms'
66import { STAKE_PROGRAM_ID , STAKE_PROGRAM_ID_V4 , STAKE_PROGRAM_ID_V5 } from '@/utils/ids'
77import { ACCOUNT_LAYOUT , getBigNumber } from '@/utils/layouts'
88import logger from '@/utils/logger'
@@ -23,6 +23,7 @@ import {
2323 getMultipleAccounts
2424} from '@/utils/web3'
2525import BigNumber from 'bignumber.js'
26+ import { LP_TOKENS , TOKENS } from '@/utils/tokens'
2627
2728const 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+
8297export 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 && rewardB && lp ) ) continue
125+
126+ farmsNew . push ( {
127+ name : 'PRGC-USDC' ,
128+ lp : { ...lp } ,
129+ reward : { ...rewardA } ,
130+ rewardB : { ...rewardB } ,
131+ isStake : false ,
132+
133+ fusion : true ,
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