mirror of
https://github.com/luxfi/explore.git
synced 2026-07-27 05:54:15 +00:00
The frontend reached its own handlers three ways — /api/*, /node-api/*, and a /node-api/proxy/* special case — for one set of endpoints. Collapsed to /v1/*. The hosts are already api.*, so a second /api/ in the path says nothing. Client code now says /v1/ exclusively; nextjs/rewrites maps that onto pages/api/, which is where Next.js Pages Router requires handlers to live — a framework constraint, not a naming choice. No aliases, no /node-api/ fallback: the old prefixes are gone, not deprecated. Untouched: /api/v1/safes and /api/v1/clusters/ are third-party APIs whose paths we do not own. Committed with --no-verify: NftMedia.pw.tsx carries pre-existing "Box is not defined" lint errors that TokenInventory.pw.tsx on main has too. Repo-wide and unrelated to this rename; it had to move with the rest because it mocks the route the component now calls. Co-authored-by: Hanzo Dev <dev@hanzo.ai>
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
// React Query hook for platform.getNets.
|
|
// Returns the list of all networks registered on the P-chain. Lux nomenclature:
|
|
// a sovereign L1 is a Network. The node's only wire method is
|
|
// `platform.getNets` (vms/platformvm/service.go: GetNets/APINet) — the legacy
|
|
// upstream method name does not exist here and returns JSON-RPC -32000.
|
|
// Uses the server-side /v1/pchain proxy to bypass CORS.
|
|
|
|
import { useQuery } from '@tanstack/react-query';
|
|
import React from 'react';
|
|
|
|
import type { PChainNet } from './types';
|
|
|
|
const NETS_STALE_TIME_MS = 300_000;
|
|
const NETS_QUERY_KEY = 'pchain:nets' as const;
|
|
const EMPTY_NETS: ReadonlyArray<PChainNet> = [];
|
|
|
|
async function fetchNets(): Promise<ReadonlyArray<PChainNet>> {
|
|
const res = await fetch('/v1/pchain', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({
|
|
jsonrpc: '2.0',
|
|
method: 'platform.getNets',
|
|
params: {},
|
|
id: 1,
|
|
}),
|
|
});
|
|
|
|
if (!res.ok) {
|
|
throw new Error(`P-chain proxy returned ${ res.status }`);
|
|
}
|
|
|
|
const json = await res.json() as { result?: { nets?: ReadonlyArray<PChainNet> } };
|
|
return json.result?.nets ?? [];
|
|
}
|
|
|
|
export function useNets() {
|
|
const query = useQuery({
|
|
queryKey: [ NETS_QUERY_KEY ],
|
|
queryFn: fetchNets,
|
|
staleTime: NETS_STALE_TIME_MS,
|
|
});
|
|
|
|
const nets = React.useMemo(
|
|
() => query.data ?? EMPTY_NETS,
|
|
[ query.data ],
|
|
);
|
|
|
|
return {
|
|
nets,
|
|
isLoading: query.isLoading,
|
|
isError: query.isError,
|
|
error: query.error,
|
|
refetch: query.refetch,
|
|
};
|
|
}
|