From c56ba00a97f2301fe0b87e841424ffc534e7872c Mon Sep 17 00:00:00 2001 From: pycckuu Date: Wed, 15 Nov 2023 19:01:40 +0800 Subject: [PATCH] feat(dapp): extend Advanced Staking to V4 This commit extends the "Advanced Staking" feature by adding support for a new version - "Advanced Staking V4". This new version is expected to be used for an additional 4 months. The changes include: - Updating the staking term in the production environment file. - Adding the new staking term in the stake-terms constants. - Including the new staking term in the list of terms fetched by the getStakeTerms function. - Adjusting the rewards calculation function to include the new staking term. - Updating the StakeTypes type and StakeType enum to include the new staking term. These changes are necessary to continue providing the Advanced Staking feature to users, with updated terms and conditions. --- dapp/.env.production | 2 +- dapp/src/constants/stake-terms.ts | 2 ++ dapp/src/redux/slices/staking/stake-terms.ts | 1 + dapp/src/services/rewards.ts | 4 +++- dapp/src/types/staking.ts | 8 +++++++- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/dapp/.env.production b/dapp/.env.production index 5d7eecc3..c69ef4fc 100644 --- a/dapp/.env.production +++ b/dapp/.env.production @@ -31,7 +31,7 @@ SUBGRAPH_IDS_137=QmTi7Z7YoUpzYqwGytPuKYu2FuYPEhtPTsXti5dRxn8wHR,QmZPs5CFi5vpZW73 Z_ASSETS_REGISTRY_CONTRACT_137=0xb658B085144a0BEd098620BB829b676371B9B48c ADVANCED_STAKING_APY=15 -CURRENT_STAKING_TERM=advanced-v3 +CURRENT_STAKING_TERM=advanced-v4 APY_PRP=10 # Faucet diff --git a/dapp/src/constants/stake-terms.ts b/dapp/src/constants/stake-terms.ts index 08866cdd..d1107dc3 100644 --- a/dapp/src/constants/stake-terms.ts +++ b/dapp/src/constants/stake-terms.ts @@ -9,12 +9,14 @@ export const CLASSIC_TYPE_HEX = utils.id('classic').slice(0, 10); export const ADVANCED_TYPE_HEX = utils.id('advanced').slice(0, 10); export const ADVANCED_2_TYPE_HEX = utils.id('advanced-v2').slice(0, 10); export const ADVANCED_3_TYPE_HEX = utils.id('advanced-v3').slice(0, 10); +export const ADVANCED_4_TYPE_HEX = utils.id('advanced-v4').slice(0, 10); export const HEX_STAKE_TYPE_TO_STAKE_TYPE = new Map([ [CLASSIC_TYPE_HEX, 'classic'], [ADVANCED_TYPE_HEX, 'advanced'], [ADVANCED_2_TYPE_HEX, 'advanced-v2'], [ADVANCED_3_TYPE_HEX, 'advanced-v3'], + [ADVANCED_4_TYPE_HEX, 'advanced-v4'], ]); export const STAKE_TYPE_TO_HEX_STAKE_TYPE = invertMap( diff --git a/dapp/src/redux/slices/staking/stake-terms.ts b/dapp/src/redux/slices/staking/stake-terms.ts index 27d0bea9..14af09a2 100644 --- a/dapp/src/redux/slices/staking/stake-terms.ts +++ b/dapp/src/redux/slices/staking/stake-terms.ts @@ -40,6 +40,7 @@ export const getStakeTerms = createAsyncThunk( StakeType.Classic, StakeType.AdvancedTwo, StakeType.AdvancedThree, + StakeType.AdvancedFour, ]) { const terms = await getStakingTermsFromContract( library, diff --git a/dapp/src/services/rewards.ts b/dapp/src/services/rewards.ts index b4937503..5d80c126 100644 --- a/dapp/src/services/rewards.ts +++ b/dapp/src/services/rewards.ts @@ -7,6 +7,7 @@ import { ADVANCED_TYPE_HEX, ADVANCED_2_TYPE_HEX, ADVANCED_3_TYPE_HEX, + ADVANCED_4_TYPE_HEX, HEX_STAKE_TYPE_TO_STAKE_TYPE, } from 'constants/stake-terms'; import {oneYearInMs} from 'constants/time'; @@ -168,7 +169,8 @@ export function calculateRewardsForStake( if ( stake.stakeType === ADVANCED_TYPE_HEX || stake.stakeType === ADVANCED_2_TYPE_HEX || - stake.stakeType === ADVANCED_3_TYPE_HEX + stake.stakeType === ADVANCED_3_TYPE_HEX || + ADVANCED_4_TYPE_HEX ) { return calculateRewardsForAdvancedStake( stake, diff --git a/dapp/src/types/staking.ts b/dapp/src/types/staking.ts index b9a08234..61aac5fe 100644 --- a/dapp/src/types/staking.ts +++ b/dapp/src/types/staking.ts @@ -5,13 +5,19 @@ import {IStakingTypes} from 'contracts/Staking'; import {BigNumber} from 'ethers'; import {LoadingStatus} from 'loading'; -export type StakeTypes = 'classic' | 'advanced' | 'advanced-v2' | 'advanced-v3'; +export type StakeTypes = + | 'classic' + | 'advanced' + | 'advanced-v2' + | 'advanced-v3' + | 'advanced-v4'; export enum StakeType { Classic = 'classic', Advanced = 'advanced', AdvancedTwo = 'advanced-v2', AdvancedThree = 'advanced-v3', + AdvancedFour = 'advanced-v4', } export type StakeReward = {