|
1 | | -import Container from '@/components/container/container'; |
2 | 1 | import BenchmarkJobs from '@/components/node-details/benchmark-jobs'; |
3 | 2 | import Environments from '@/components/node-details/environments'; |
4 | 3 | import JobsRevenueStats from '@/components/node-details/jobs-revenue-stats'; |
| 4 | +import NodeDetailsPageLayout from '@/components/node-details/node-details-page-layout'; |
5 | 5 | import NodeInfo from '@/components/node-details/node-info'; |
6 | 6 | import UnbanRequests from '@/components/node-details/unban-requests'; |
7 | | -import SectionTitle from '@/components/section-title/section-title'; |
8 | 7 | import { useNodesContext } from '@/context/nodes-context'; |
9 | 8 | import { useUnbanRequestsContext } from '@/context/unban-requests-context'; |
10 | 9 | import { useP2P } from '@/contexts/P2PContext'; |
11 | 10 | import { directNodeCommand } from '@/lib/direct-node-command'; |
| 11 | +import { useOceanAccount } from '@/lib/use-ocean-account'; |
12 | 12 | import { ComputeEnvironment } from '@/types/environments'; |
13 | | -import { CircularProgress } from '@mui/material'; |
14 | 13 | import { useParams } from 'next/navigation'; |
15 | 14 | import { useEffect, useMemo, useState } from 'react'; |
16 | 15 |
|
17 | | -const NodeDetailsPage = () => { |
| 16 | +const NodeDetailsPage: React.FC = () => { |
18 | 17 | const params = useParams<{ nodeId: string }>(); |
19 | 18 |
|
| 19 | + const { account } = useOceanAccount(); |
| 20 | + |
20 | 21 | const { getEnvs: getEnvsP2P, isReady: isP2PReady, sendCommand } = useP2P(); |
21 | 22 |
|
22 | 23 | const { selectedNode, fetchNode, loadingFetchNode } = useNodesContext(); |
@@ -79,52 +80,31 @@ const NodeDetailsPage = () => { |
79 | 80 | } |
80 | 81 | }, [fetchUnbanRequests, node]); |
81 | 82 |
|
82 | | - if (loadingFetchNode) { |
83 | | - return ( |
84 | | - <Container className="pageRoot"> |
85 | | - <SectionTitle |
86 | | - moreReadable |
87 | | - title="Node details" |
88 | | - subTitle={ |
89 | | - <div className="flexRow alignItemsCenter gapMd"> |
90 | | - <CircularProgress size={24} /> |
91 | | - <span>Retrieving node details...</span> |
92 | | - </div> |
93 | | - } |
94 | | - /> |
95 | | - </Container> |
96 | | - ); |
97 | | - } |
98 | | - |
99 | | - if (!node) { |
100 | | - return ( |
101 | | - <Container className="pageRoot"> |
102 | | - <SectionTitle moreReadable title="Node details" subTitle="Node not found" /> |
103 | | - </Container> |
104 | | - ); |
105 | | - } |
106 | | - |
107 | 83 | return ( |
108 | | - <Container className="pageRoot"> |
109 | | - <SectionTitle |
110 | | - moreReadable |
111 | | - title="Node details" |
112 | | - subTitle="Check node status, performance, and available resources before running a job" |
113 | | - /> |
114 | | - <div className="pageContentWrapper"> |
115 | | - <NodeInfo envs={nodeEnvs} node={node} nodeOnline={connectedP2P || connectedDirectNodeCommand} /> |
116 | | - <JobsRevenueStats envs={nodeEnvs} /> |
117 | | - <BenchmarkJobs /> |
118 | | - <Environments |
119 | | - envs={nodeEnvs} |
120 | | - nodeInfo={{ |
121 | | - friendlyName: node.friendlyName, |
122 | | - id: node.id ?? node.nodeId, |
123 | | - }} |
124 | | - /> |
125 | | - {node.banned === false && unbanRequests?.length === 0 ? null : <UnbanRequests node={node} />} |
126 | | - </div> |
127 | | - </Container> |
| 84 | + <NodeDetailsPageLayout |
| 85 | + activeTab="info" |
| 86 | + isWalletConnected={account.isConnected} |
| 87 | + loading={loadingFetchNode} |
| 88 | + nodeId={node?.id ?? node?.nodeId} |
| 89 | + notFound={!node} |
| 90 | + subtitle="Check node status, performance, and available resources before running a job" |
| 91 | + > |
| 92 | + {node ? ( |
| 93 | + <> |
| 94 | + <NodeInfo envs={nodeEnvs} node={node} nodeOnline={connectedP2P || connectedDirectNodeCommand} /> |
| 95 | + <JobsRevenueStats envs={nodeEnvs} /> |
| 96 | + <BenchmarkJobs /> |
| 97 | + <Environments |
| 98 | + envs={nodeEnvs} |
| 99 | + nodeInfo={{ |
| 100 | + friendlyName: node.friendlyName, |
| 101 | + id: node.id ?? node.nodeId, |
| 102 | + }} |
| 103 | + /> |
| 104 | + {node.banned === false && unbanRequests?.length === 0 ? null : <UnbanRequests node={node} />} |
| 105 | + </> |
| 106 | + ) : null} |
| 107 | + </NodeDetailsPageLayout> |
128 | 108 | ); |
129 | 109 | }; |
130 | 110 |
|
|
0 commit comments