Skip to content

Commit de65b80

Browse files
committed
feat: active nominators
1 parent 76af539 commit de65b80

1 file changed

Lines changed: 22 additions & 10 deletions

File tree

src/routes/_layout/_no-custom/staking/_layout/validators.tsx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
QueryOptionsProvider,
44
useLazyLoadQuery,
55
useNativeTokenAmountFromPlanck,
6-
Await,
76
} from "@reactive-dot/react";
87
import { createFileRoute } from "@tanstack/react-router";
98
import { Suspense } from "react";
@@ -40,16 +39,9 @@ function ValidatorsPage() {
4039
<SuspendableTotalValidators />
4140
</Suspense>
4241
</InfoHeader.Item>
43-
<InfoHeader.Item title="Nominators">
42+
<InfoHeader.Item title="Active nominators">
4443
<Suspense fallback={<CircularProgressIndicator size="text" />}>
45-
<Await
46-
promise={useLazyLoadQuery(
47-
(query) => query.storage("Staking", "CounterForNominators"),
48-
{ chainId: useStakingChainId(), use: false },
49-
)}
50-
>
51-
{(count) => count.toLocaleString()}
52-
</Await>
44+
<SuspendableActiveNominators />
5345
</Suspense>
5446
</InfoHeader.Item>
5547
</InfoHeader>
@@ -90,6 +82,26 @@ function SuspendableTotalValidators() {
9082
return `${validatorCount.toLocaleString()} / ${maxValidatorCount?.toLocaleString()}`;
9183
}
9284

85+
function SuspendableActiveNominators() {
86+
const [activeEra, totalNominators] = useLazyLoadQuery(
87+
(query) =>
88+
query
89+
.storage("Staking", "ActiveEra", [])
90+
.storage("Staking", "CounterForNominators"),
91+
{ chainId: useStakingChainId() },
92+
);
93+
94+
const stakers = useLazyLoadQuery(
95+
(query) =>
96+
query.storageEntries("Staking", "ErasStakersOverview", [
97+
activeEra?.index ?? 0,
98+
]),
99+
{ chainId: useStakingChainId() },
100+
);
101+
102+
return `${stakers.reduce((prev, [__, curr]) => prev + curr.nominator_count, 0).toLocaleString()} / ${totalNominators.toLocaleString()}`;
103+
}
104+
93105
function SuspendableTotalStaked() {
94106
const activeEra = useLazyLoadQuery(
95107
(builder) => builder.storage("Staking", "ActiveEra"),

0 commit comments

Comments
 (0)