mirror of
https://github.com/lux-tel/websites.git
synced 2026-10-30 20:31:36 +00:00
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import ActionModule from '@/components/ActionModule';
|
|
import {
|
|
ArbitrumBlockExplorerLink,
|
|
ArbitrumBlockExplorerLinkText,
|
|
} from '@/components/ArbitrumBlockExplorerLink';
|
|
import { getContributionContracts } from '@/lib/queries/getContributionContracts';
|
|
import { stakingBackendPrefetchQuery } from '@/lib/staking-api-server';
|
|
import { MODULE_GRID_ALIGNMENT } from '@session/ui/components/ModuleGrid';
|
|
import { LoadingText } from '@session/ui/components/loading-text';
|
|
import { HydrationBoundary, dehydrate } from '@tanstack/react-query';
|
|
import { Suspense, use } from 'react';
|
|
import Staking, { NodeStakingFormSkeleton, StakingActionModuleTitle } from './Staking';
|
|
|
|
interface NodePageParams {
|
|
params: Promise<{
|
|
address: string;
|
|
}>;
|
|
}
|
|
|
|
export default function NodePage(props: NodePageParams) {
|
|
const params = use(props.params);
|
|
const { address } = params;
|
|
|
|
const { queryClient } = stakingBackendPrefetchQuery(getContributionContracts);
|
|
|
|
return (
|
|
<ActionModule
|
|
background={3}
|
|
title={
|
|
<HydrationBoundary state={dehydrate(queryClient)}>
|
|
<Suspense fallback={<LoadingText />}>
|
|
<StakingActionModuleTitle address={address} />
|
|
</Suspense>
|
|
</HydrationBoundary>
|
|
}
|
|
contentAlignment={MODULE_GRID_ALIGNMENT.TOP}
|
|
headerAction={
|
|
<HydrationBoundary state={dehydrate(queryClient)}>
|
|
<Suspense fallback={<ArbitrumBlockExplorerLinkText />}>
|
|
<ArbitrumBlockExplorerLink address={address} />
|
|
</Suspense>
|
|
</HydrationBoundary>
|
|
}
|
|
className="h-screen-without-header md:h-full"
|
|
>
|
|
<HydrationBoundary state={dehydrate(queryClient)}>
|
|
<Suspense fallback={<NodeStakingFormSkeleton />}>
|
|
<Staking address={address} />
|
|
</Suspense>
|
|
</HydrationBoundary>
|
|
</ActionModule>
|
|
);
|
|
}
|