diff --git a/explorer-nextjs/src/app/(pages)/nym-node/[id]/page.tsx b/explorer-nextjs/src/app/(pages)/nym-node/[id]/page.tsx
index d480874feb..621043d6fd 100644
--- a/explorer-nextjs/src/app/(pages)/nym-node/[id]/page.tsx
+++ b/explorer-nextjs/src/app/(pages)/nym-node/[id]/page.tsx
@@ -35,6 +35,8 @@ export default async function NymNode({
const observatoryNymNodes: IObservatoryNode[] =
await observatoryResponse.json();
+ console.log("observatoryNymNodes :>> ", observatoryNymNodes);
+
if (!observatoryNymNodes) {
return null;
}
@@ -69,20 +71,22 @@ export default async function NymNode({
-
+ {observatoryNymNode.bonding_address && (
+
+ )}
{observatoryNymNode && (
@@ -95,7 +99,7 @@ export default async function NymNode({
)}
- {observatoryNymNode && (
+ {observatoryNymNode.rewarding_details && (
)}
-
-
-
+ {observatoryNymNode.rewarding_details && (
+
+
+
+ )}
{observatoryNymNode && (
{
const { nodeInfo } = props;
+ const [gatewayProbeResult, setGatewayProbeResult] =
+ useState();
+
const nodeRoles = getNodeRoles(nodeInfo.description.declared_role);
const NodeRoles = nodeRoles.map((role) => (
@@ -39,18 +141,6 @@ export const QualityIndicatorsCard = (props: IQualityIndicatorsCardProps) => {
));
- function calculateQualityOfServiceStars(quality: number): number {
- if (quality < 0.3) {
- return 1;
- }
- if (quality < 0.5) {
- return 2;
- }
- if (quality < 0.7) {
- return 3;
- }
- return 4;
- }
const qualityOfServiceStars = nodeInfo?.uptime
? calculateQualityOfServiceStars(nodeInfo?.uptime)
: 1;
@@ -58,6 +148,33 @@ export const QualityIndicatorsCard = (props: IQualityIndicatorsCardProps) => {
const nodeIsMixNodeOnly =
NodeRoles.length === 1 && nodeRoles[0] === "Mix Node";
+ useEffect(() => {
+ // Fetch data if the node has certain roles
+ if (
+ nodeRoles.includes("Entry Node") ||
+ nodeRoles.includes("Exit IPR Node") ||
+ nodeRoles.includes("Exit NR Node")
+ ) {
+ const fetchData = async () => {
+ try {
+ const response = await fetch(
+ `https://mainnet-node-status-api.nymtech.cc/v2/gateways/${nodeInfo.identity_key}`,
+ );
+ const data: GatewayStatus = await response.json();
+ setGatewayProbeResult(data.last_probe_result);
+ } catch (error) {
+ console.error("Error fetching data:", error);
+ }
+ };
+
+ fetchData();
+ }
+ }, [nodeRoles, nodeInfo.identity_key]);
+
+ const configScoreStars = gatewayProbeResult
+ ? calculateConfigScoreStars(gatewayProbeResult)
+ : 0;
+
return (
{
}
/>
- {nodeIsMixNodeOnly && (
- }
- />
- )}
+ }
+ />
{!nodeIsMixNodeOnly && (
}
+ value={}
/>
)}
{!nodeIsMixNodeOnly && (