Skip to content

Commit 62a3c18

Browse files
authored
feat: use internal address for node page (#16)
1 parent 0197689 commit 62a3c18

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed
Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import ErrorComponent from '@/app/server-components/shared/ErrorComponent';
66
import config from '@/config';
77
import { getNodeAvailability } from '@/lib/actions';
88
import { getNodeLicenseDetails } from '@/lib/api/blockchain';
9-
import { isZeroAddress } from '@/lib/utils';
9+
import { internalNodeAddressToEthAddress, isZeroAddress } from '@/lib/utils';
1010
import * as types from '@/typedefs/blockchain';
1111
import { RiCloseLine } from 'react-icons/ri';
1212
import { isAddress } from 'viem';
@@ -18,18 +18,40 @@ const errorMetadata = {
1818
},
1919
};
2020

21+
const resolveNodeEthAddress = (nodeAddress?: string): types.EthAddress | null => {
22+
if (!nodeAddress) {
23+
return null;
24+
}
25+
26+
if (nodeAddress.startsWith('0xai_')) {
27+
try {
28+
const ethAddress = internalNodeAddressToEthAddress(nodeAddress);
29+
return isZeroAddress(ethAddress) ? null : ethAddress;
30+
} catch (error) {
31+
return null;
32+
}
33+
}
34+
35+
if (!isAddress(nodeAddress) || isZeroAddress(nodeAddress)) {
36+
return null;
37+
}
38+
39+
return nodeAddress;
40+
};
41+
2142
export async function generateMetadata({ params }) {
22-
const { nodeEthAddr } = await params;
43+
const { nodeAddr } = await params;
44+
const resolvedNodeEthAddr = resolveNodeEthAddress(nodeAddr);
2345

24-
if (!nodeEthAddr || !isAddress(nodeEthAddr) || isZeroAddress(nodeEthAddr)) {
25-
console.log(`[Node Page] Invalid node address: ${nodeEthAddr}`);
46+
if (!resolvedNodeEthAddr) {
47+
console.log(`[Node Page] Invalid node address: ${nodeAddr}`);
2648
return errorMetadata;
2749
}
2850

2951
let nodeResponse: types.OraclesAvailabilityResult & types.OraclesDefaultResult;
3052

3153
try {
32-
({ nodeResponse } = await fetchLicenseDetailsAndNodeAvailability(nodeEthAddr, config.environment));
54+
({ nodeResponse } = await fetchLicenseDetailsAndNodeAvailability(resolvedNodeEthAddr, config.environment));
3355
} catch (error) {
3456
console.error(error);
3557
return errorMetadata;
@@ -113,9 +135,10 @@ const fetchLicenseDetailsAndNodeAvailability = async (
113135
};
114136

115137
export default async function NodePage({ params }) {
116-
const { nodeEthAddr } = await params;
138+
const { nodeAddr } = await params;
139+
const resolvedNodeEthAddr = resolveNodeEthAddress(nodeAddr);
117140

118-
if (!nodeEthAddr || !isAddress(nodeEthAddr) || isZeroAddress(nodeEthAddr)) {
141+
if (!resolvedNodeEthAddr) {
119142
return <NotFound />;
120143
}
121144

@@ -127,7 +150,7 @@ export default async function NodePage({ params }) {
127150

128151
try {
129152
({ license, licenseId, licenseType, owner, nodeResponse } = await fetchLicenseDetailsAndNodeAvailability(
130-
nodeEthAddr,
153+
resolvedNodeEthAddr,
131154
config.environment,
132155
));
133156
} catch (error: any) {

0 commit comments

Comments
 (0)