Sanitize eras for _stakerRewards (#5912)
* Sanitize eras for _stakerRewards * Small nits
This commit is contained in:
@@ -168,11 +168,15 @@ export function _stakerRewardsEras (instanceId: string, api: DeriveApi): (eras:
|
||||
}
|
||||
|
||||
export function _stakerRewards (instanceId: string, api: DeriveApi): (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive?: boolean) => Observable<DeriveStakerReward[][]> {
|
||||
return memo(instanceId, (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive = false): Observable<DeriveStakerReward[][]> =>
|
||||
combineLatest([
|
||||
return memo(instanceId, (accountIds: (Uint8Array | string)[], eras: EraIndex[], withActive = false): Observable<DeriveStakerReward[][]> => {
|
||||
// Ensures that when number or string types are passed in they are sanitized
|
||||
// Ref: https://github.com/polkadot-js/api/issues/5910
|
||||
const sanitizedEras: EraIndex[] = eras.map((e) => typeof e === 'number' || typeof e === 'string' ? api.registry.createType('u32', e) : e);
|
||||
|
||||
return combineLatest([
|
||||
api.derive.staking.queryMulti(accountIds, { withClaimedRewardsEras: true, withLedger: true }),
|
||||
api.derive.staking._stakerExposures(accountIds, eras, withActive),
|
||||
api.derive.staking._stakerRewardsEras(eras, withActive)
|
||||
api.derive.staking._stakerExposures(accountIds, sanitizedEras, withActive),
|
||||
api.derive.staking._stakerRewardsEras(sanitizedEras, withActive)
|
||||
]).pipe(
|
||||
switchMap(([queries, exposures, erasResult]): Observable<DeriveStakerReward[][]> => {
|
||||
const allRewards = queries.map(({ claimedRewardsEras, stakingLedger, stashId }, index): DeriveStakerReward[] =>
|
||||
@@ -208,7 +212,8 @@ export function _stakerRewards (instanceId: string, api: DeriveApi): (accountIds
|
||||
)
|
||||
);
|
||||
})
|
||||
)
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user