@@ -6,7 +6,7 @@ import ErrorComponent from '@/app/server-components/shared/ErrorComponent';
66import config from '@/config' ;
77import { getNodeAvailability } from '@/lib/actions' ;
88import { getNodeLicenseDetails } from '@/lib/api/blockchain' ;
9- import { isZeroAddress } from '@/lib/utils' ;
9+ import { internalNodeAddressToEthAddress , isZeroAddress } from '@/lib/utils' ;
1010import * as types from '@/typedefs/blockchain' ;
1111import { RiCloseLine } from 'react-icons/ri' ;
1212import { 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+
2142export 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
115137export 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