Skip to content

Commit e4a372c

Browse files
committed
dynamic beacocnha dashboard url
1 parent f144248 commit e4a372c

4 files changed

Lines changed: 27 additions & 6 deletions

File tree

packages/admin-ui/src/hooks/useNetworkStats.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const networkFeatures: Record<DashboardSupportedNetwork, NetworkFeatures> = {
3333
[Network.Lukso]: {
3434
hasValidators: true,
3535
logo: LuksoLogo,
36-
beaconExplorer: { url: "https://explorer.consensus.mainnet.lukso.network/", name: "Beacon Lukso Explorer" }
36+
beaconExplorer: { url: "https://dora.explorer.mainnet.lukso.network/", name: "Beacon Lukso Explorer" }
3737
},
3838
[Network.Hoodi]: {
3939
hasValidators: true,
@@ -105,7 +105,8 @@ export function useNetworkStats() {
105105
balance,
106106
attesting,
107107
beaconError,
108-
signerStatus
108+
signerStatus,
109+
pubKeys: validatorsActive?.validators || []
109110
}
110111
}
111112
: undefined;

packages/admin-ui/src/pages/dashboard_v2/components/NetworkCards.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,25 @@ export const ValidatorsCard = ({
262262

263263
export const RewardsCard = ({
264264
network,
265-
beaconExplorer
265+
beaconExplorer,
266+
pubKeys
266267
}: {
267268
network: string;
268269
beaconExplorer: { [key: string]: string };
270+
pubKeys?: string[];
269271
}) => {
270-
console.log(network, "RewardsCard data:", beaconExplorer);
272+
// Construct dynamic Beaconcha.in dashboard URL for networks that support it (Mainnet and Hoodi)
273+
const getDashboardUrl = () => {
274+
const baseUrl = beaconExplorer.url;
275+
276+
if (pubKeys && pubKeys.length > 0 && (network === Network.Mainnet || network === Network.Hoodi)) {
277+
return `${baseUrl}dashboard?validators=${pubKeys.join(",")}`;
278+
}
279+
280+
return baseUrl;
281+
};
282+
283+
const dashboardUrl = getDashboardUrl();
271284

272285
return (
273286
<NetworkCard title="REWARDS" icon={<RewardsIcon />}>
@@ -276,7 +289,7 @@ export const RewardsCard = ({
276289
>
277290
View your detailed validator rewards in the explorer.
278291
</div>
279-
<Button href={beaconExplorer.url} fullwidth {...newTabProps} variant="outline-dappnode">
292+
<Button href={dashboardUrl} fullwidth {...newTabProps} variant="outline-dappnode">
280293
<span>{`Visit ${beaconExplorer.name}`}</span>
281294
</Button>
282295
</NetworkCard>

packages/admin-ui/src/pages/dashboard_v2/components/NetworkStats.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,13 @@ export default function NetworkStats() {
3838
<ValidatorsCard network={network} validatorsLoading={validatorsLoading} data={data.validators} />
3939
)}
4040

41-
{data.beaconExplorer && <RewardsCard network={network} beaconExplorer={data.beaconExplorer} />}
41+
{data.beaconExplorer && (
42+
<RewardsCard
43+
network={network}
44+
beaconExplorer={data.beaconExplorer}
45+
pubKeys={data.validators?.pubKeys}
46+
/>
47+
)}
4248
</div>
4349
</div>
4450
);

packages/types/src/stakingDashboard.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export type NetworkStatus = {
2929
attesting: number;
3030
beaconError?: Error;
3131
signerStatus: SignerStatus;
32+
pubKeys?: string[]; // Validator public keys used for beaconcha.in dynamic dashboard URLs
3233
};
3334
hasValidators: boolean; // Whether this network has validators
3435
beaconExplorer?: { url: string; name: string }; // Whether this network has a beacon explorer to redirect to for validator rewards

0 commit comments

Comments
 (0)