@@ -14,7 +14,7 @@ import { docs } from "utils/docs"
14
14
import Box from "@mui/material/Box"
15
15
import { useQuery } from "@tanstack/react-query"
16
16
import { getAgentListeningPorts } from "api/api"
17
- import { WorkspaceAgentListeningPort } from "api/typesGenerated"
17
+ import { WorkspaceAgent , WorkspaceAgentListeningPort } from "api/typesGenerated"
18
18
import CircularProgress from "@mui/material/CircularProgress"
19
19
import { portForwardURL } from "utils/portForward"
20
20
import OpenInNewOutlined from "@mui/icons-material/OpenInNewOutlined"
@@ -23,18 +23,19 @@ export interface PortForwardButtonProps {
23
23
host : string
24
24
username : string
25
25
workspaceName : string
26
- agentName : string
27
- agentId : string
26
+ agent : WorkspaceAgent
28
27
}
29
28
30
29
export const PortForwardButton : React . FC < PortForwardButtonProps > = ( props ) => {
31
30
const anchorRef = useRef < HTMLButtonElement > ( null )
32
31
const [ isOpen , setIsOpen ] = useState ( false )
33
32
const id = isOpen ? "schedule-popover" : undefined
34
33
const styles = useStyles ( )
35
- const { data : listeningPorts } = useQuery ( {
36
- queryKey : [ "portForward" , props . agentId ] ,
37
- queryFn : ( ) => getAgentListeningPorts ( props . agentId ) ,
34
+ const portsQuery = useQuery ( {
35
+ queryKey : [ "portForward" , props . agent . id ] ,
36
+ queryFn : ( ) => getAgentListeningPorts ( props . agent . id ) ,
37
+ enabled : props . agent . status === "connected" ,
38
+ refetchInterval : 5_000 ,
38
39
} )
39
40
40
41
const onClose = ( ) => {
@@ -44,14 +45,14 @@ export const PortForwardButton: React.FC<PortForwardButtonProps> = (props) => {
44
45
return (
45
46
< >
46
47
< SecondaryAgentButton
47
- disabled = { ! listeningPorts }
48
+ disabled = { ! portsQuery . data }
48
49
ref = { anchorRef }
49
50
onClick = { ( ) => {
50
51
setIsOpen ( true )
51
52
} }
52
53
>
53
54
Ports
54
- { listeningPorts ? (
55
+ { portsQuery . data ? (
55
56
< Box
56
57
sx = { {
57
58
fontSize : 12 ,
@@ -67,7 +68,7 @@ export const PortForwardButton: React.FC<PortForwardButtonProps> = (props) => {
67
68
ml : 1 ,
68
69
} }
69
70
>
70
- { listeningPorts . ports . length }
71
+ { portsQuery . data . ports . length }
71
72
</ Box >
72
73
) : (
73
74
< CircularProgress size = { 10 } sx = { { ml : 1 } } />
@@ -88,7 +89,7 @@ export const PortForwardButton: React.FC<PortForwardButtonProps> = (props) => {
88
89
horizontal : "right" ,
89
90
} }
90
91
>
91
- < PortForwardPopoverView { ...props } ports = { listeningPorts ?. ports } />
92
+ < PortForwardPopoverView { ...props } ports = { portsQuery . data ?. ports } />
92
93
</ Popover >
93
94
</ >
94
95
)
@@ -97,7 +98,7 @@ export const PortForwardButton: React.FC<PortForwardButtonProps> = (props) => {
97
98
export const PortForwardPopoverView : React . FC <
98
99
PortForwardButtonProps & { ports ?: WorkspaceAgentListeningPort [ ] }
99
100
> = ( props ) => {
100
- const { host, workspaceName, agentName , username, ports } = props
101
+ const { host, workspaceName, agent , username, ports } = props
101
102
102
103
return (
103
104
< >
@@ -120,7 +121,7 @@ export const PortForwardPopoverView: React.FC<
120
121
const url = portForwardURL (
121
122
host ,
122
123
p . port ,
123
- agentName ,
124
+ agent . name ,
124
125
workspaceName ,
125
126
username ,
126
127
)
@@ -192,7 +193,7 @@ export const PortForwardPopoverView: React.FC<
192
193
const url = portForwardURL (
193
194
host ,
194
195
port ,
195
- agentName ,
196
+ agent . name ,
196
197
workspaceName ,
197
198
username ,
198
199
)
0 commit comments