Skip to content

Commit 869de18

Browse files
committed
Add the edge case of no nominators for an active validator - should still process self-stake.
1 parent f45bb35 commit 869de18

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/substrate.ts

+14-10
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ async function getPayoutPagesToClaimForAddressForEra(
2525
api: ApiPromise,
2626
stashAddress: string,
2727
eraIndex: number,
28-
): Promise<Array<number>> {
28+
): Promise<Array<number> | undefined> {
2929
const overview = await api.query.staking.erasStakersOverview(eraIndex, stashAddress);
3030
if (overview.isNone) {
3131
// was not in the active set
32-
return [];
32+
return undefined;
3333
}
3434
let pageCount = overview.unwrap().pageCount.toNumber();
3535
let pages = [...Array(pageCount).keys()];
@@ -39,10 +39,14 @@ async function getPayoutPagesToClaimForAddressForEra(
3939
},
4040
);
4141
let pagesToClaim = [];
42-
for (let i = 0; i < pages.length; i++) {
43-
let pageIndex = pages[i];
44-
if (claimedPages.indexOf(pageIndex) < 0) {
45-
pagesToClaim.push(pageIndex);
42+
if (pages.length == 0 && claimedPages.length == 0) {
43+
pagesToClaim.push(0);
44+
} else {
45+
for (let i = 0; i < pages.length; i++) {
46+
let pageIndex = pages[i];
47+
if (claimedPages.indexOf(pageIndex) < 0) {
48+
pagesToClaim.push(pageIndex);
49+
}
4650
}
4751
}
4852
return pagesToClaim;
@@ -57,18 +61,18 @@ export async function claimPayout({
5761
listOnly,
5862
}: ServiceArgs): Promise<bigint | undefined> {
5963
const pagesToClaim = await getPayoutPagesToClaimForAddressForEra(api, stashAddress, eraIndex);
60-
if (pagesToClaim.length == 0) {
61-
logger.info(`No payout to claim for ${stashAddress} in era ${eraIndex}`);
64+
if (pagesToClaim == undefined) {
65+
logger.info(`${stashAddress} was not active in era ${eraIndex}.`);
6266
return undefined;
6367
}
6468
if (listOnly) {
6569
logger.info(
66-
`${stashAddress} has ${pagesToClaim.length} pages of unclaimed payouts for era ${eraIndex}.`,
70+
`${stashAddress} has ${pagesToClaim.length} page(s) of unclaimed payouts for era ${eraIndex}.`,
6771
);
6872
return undefined;
6973
}
7074
logger.info(
71-
`Will claim ${pagesToClaim.length} pages of payout for ${stashAddress} for era ${eraIndex}.`,
75+
`Will claim ${pagesToClaim.length} page(s) of payout for ${stashAddress} for era ${eraIndex}.`,
7276
);
7377
cryptoWaitReady();
7478

0 commit comments

Comments
 (0)