Skip to content

Commit

Permalink
[Issue-3000] refactor: get maxNominations for relaychain
Browse files Browse the repository at this point in the history
  • Loading branch information
bluezdot committed May 6, 2024
1 parent 34bdb55 commit d834f71
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
9 changes: 9 additions & 0 deletions packages/extension-base/src/koni/api/staking/bonding/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { _ChainInfo } from '@subwallet/chain-list/types';
import { NominationInfo, NominatorMetadata, StakingType, UnstakingInfo } from '@subwallet/extension-base/background/KoniTypes';
import { getAstarWithdrawable } from '@subwallet/extension-base/koni/api/staking/bonding/astar';
import { _KNOWN_CHAIN_INFLATION_PARAMS, _SUBSTRATE_DEFAULT_INFLATION_PARAMS, _SubstrateInflationParams } from '@subwallet/extension-base/services/chain-service/constants';
import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
import { _getChainNativeTokenBasicInfo } from '@subwallet/extension-base/services/chain-service/utils';
import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
import { EarningStatus, PalletStakingEraRewardPoints, PalletStakingValidatorPrefs, UnstakingStatus, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
Expand Down Expand Up @@ -651,6 +652,14 @@ export function getRelayEraRewardMap (eraRewardPointArray: Codec[], startEraForP
return eraRewardMap;
}

export async function getRelayMaxNominations (substrateApi: _SubstrateApi) {
const maxNominations = substrateApi.api.consts.staking?.maxNominations?.toString() || '16';
const _maxNominationsByNominationQuota = await substrateApi.api.call.stakingApi?.nominationsQuota(0); // todo: review param. Currently return constant for all param.
const maxNominationsByNominationQuota = _maxNominationsByNominationQuota?.toString();

return maxNominationsByNominationQuota || maxNominations;
}

export const getMinStakeErrorMessage = (chainInfo: _ChainInfo, bnMinStake: BN): string => {
const tokenInfo = _getChainNativeTokenBasicInfo(chainInfo);
const number = formatNumber(bnMinStake.toString(), tokenInfo.decimals || 0, balanceFormatter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import { _ChainInfo } from '@subwallet/chain-list/types';
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
import { BasicTxErrorType, ExtrinsicType, NominationInfo, StakingTxErrorType, UnstakingInfo } from '@subwallet/extension-base/background/KoniTypes';
import { calculateAlephZeroValidatorReturn, calculateChainStakedReturnV2, calculateInflation, calculateTernoaValidatorReturn, calculateValidatorStakedReturn, getAvgValidatorEraReward, getCommission, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getRelayBlockedValidatorList, getRelayEraRewardMap, getRelayTopValidatorByPoints, getRelayValidatorPointsMap, getSupportedDaysByHistoryDepth } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
import { calculateAlephZeroValidatorReturn, calculateChainStakedReturnV2, calculateInflation, calculateTernoaValidatorReturn, calculateValidatorStakedReturn, getAvgValidatorEraReward, getCommission, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getRelayBlockedValidatorList, getRelayEraRewardMap, getRelayMaxNominations, getRelayTopValidatorByPoints, getRelayValidatorPointsMap, getSupportedDaysByHistoryDepth } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
import { _getChainSubstrateAddressPrefix } from '@subwallet/extension-base/services/chain-service/utils';
Expand Down Expand Up @@ -66,14 +66,9 @@ export default class RelayNativeStakingPoolHandler extends BaseNativeStakingPool
return;
}

let maxNominations = substrateApi.api.consts.staking?.maxNominations?.toString() || '16';
const unlimitedNominatorRewarded = substrateApi.api.consts.staking.maxExposurePageSize !== undefined;
const maxNominatorRewarded = substrateApi.api.consts.staking.maxNominatorRewardedPerValidator?.toString();
const _maxNominationsByNominationQuota = await substrateApi.api.call.stakingApi?.nominationsQuota(0); // todo: review param. Currently return constant for all param.
const maxNominationsByNominationQuota = _maxNominationsByNominationQuota?.toString();

maxNominations = maxNominationsByNominationQuota ?? maxNominations;

const maxNominations = await getRelayMaxNominations(substrateApi);
const currentEra = _currentEra.toString();
const maxUnlockingChunks = substrateApi.api.consts.staking.maxUnlockingChunks.toString();
const unlockingEras = substrateApi.api.consts.staking.bondingDuration.toString();
Expand Down

0 comments on commit d834f71

Please sign in to comment.