@@ -48,7 +48,11 @@ import { type ClassName, useClassName } from "hooks/useClassName";
48
48
import { useDashboard } from "modules/dashboard/useDashboard" ;
49
49
import { docs } from "utils/docs" ;
50
50
import { getFormHelpers } from "utils/formUtils" ;
51
- import { getWorkspaceListeningPortsProtocol , portForwardURL , saveWorkspaceListeningPortsProtocol } from "utils/portForward" ;
51
+ import {
52
+ getWorkspaceListeningPortsProtocol ,
53
+ portForwardURL ,
54
+ saveWorkspaceListeningPortsProtocol ,
55
+ } from "utils/portForward" ;
52
56
53
57
export interface PortForwardButtonProps {
54
58
host : string ;
@@ -135,7 +139,9 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
135
139
portSharingControlsEnabled,
136
140
} ) => {
137
141
const theme = useTheme ( ) ;
138
- const [ listeningPortProtocol , setListeningPortProtocol ] = useState ( getWorkspaceListeningPortsProtocol ( workspaceID ) ) ;
142
+ const [ listeningPortProtocol , setListeningPortProtocol ] = useState (
143
+ getWorkspaceListeningPortsProtocol ( workspaceID ) ,
144
+ ) ;
139
145
140
146
const sharedPortsQuery = useQuery ( {
141
147
...workspacePortShares ( workspaceID ) ,
@@ -190,15 +196,17 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
190
196
( port ) => port . agent_name === agent . name ,
191
197
) ;
192
198
// we don't want to show listening ports if it's a shared port
193
- const filteredListeningPorts = ( listeningPorts ? listeningPorts : [ ] ) . filter ( ( port ) => {
194
- for ( let i = 0 ; i < filteredSharedPorts . length ; i ++ ) {
195
- if ( filteredSharedPorts [ i ] . port === port . port ) {
196
- return false ;
199
+ const filteredListeningPorts = ( listeningPorts ? listeningPorts : [ ] ) . filter (
200
+ ( port ) => {
201
+ for ( let i = 0 ; i < filteredSharedPorts . length ; i ++ ) {
202
+ if ( filteredSharedPorts [ i ] . port === port . port ) {
203
+ return false ;
204
+ }
197
205
}
198
- }
199
206
200
- return true ;
201
- } ) ;
207
+ return true ;
208
+ } ,
209
+ ) ;
202
210
// only disable the form if shared port controls are entitled and the template doesn't allow sharing ports
203
211
const canSharePorts =
204
212
portSharingExperimentEnabled &&
@@ -225,7 +233,8 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
225
233
overflowY : "auto" ,
226
234
} }
227
235
>
228
- < Stack direction = "column"
236
+ < Stack
237
+ direction = "column"
229
238
css = { {
230
239
padding : 20 ,
231
240
} }
@@ -258,9 +267,14 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
258
267
css = { styles . listeningPortProtocol }
259
268
value = { listeningPortProtocol }
260
269
onChange = { async ( event ) => {
261
- const selectedProtocol = event . target . value as "http" | "https" ;
270
+ const selectedProtocol = event . target . value as
271
+ | "http"
272
+ | "https" ;
262
273
setListeningPortProtocol ( selectedProtocol ) ;
263
- saveWorkspaceListeningPortsProtocol ( workspaceID , selectedProtocol ) ;
274
+ saveWorkspaceListeningPortsProtocol (
275
+ workspaceID ,
276
+ selectedProtocol ,
277
+ ) ;
264
278
} }
265
279
>
266
280
< MenuItem value = "http" > HTTP</ MenuItem >
@@ -318,28 +332,28 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
318
332
</ Stack >
319
333
{ filteredListeningPorts . length === 0 && (
320
334
< HelpTooltipText css = { styles . noPortText } >
321
- { "No open ports were detected." }
335
+ { "No open ports were detected." }
322
336
</ HelpTooltipText >
323
337
) }
324
- { filteredListeningPorts . map ( ( port ) => {
325
- const url = portForwardURL (
326
- host ,
327
- port . port ,
328
- agent . name ,
329
- workspaceName ,
330
- username ,
331
- listeningPortProtocol ,
332
- ) ;
333
- const label =
334
- port . process_name !== "" ? port . process_name : port . port ;
335
- return (
336
- < Stack
337
- key = { port . port }
338
- direction = "row"
339
- alignItems = "center"
340
- justifyContent = "space-between"
341
- >
342
- < Stack direction = "row" gap = { 3 } >
338
+ { filteredListeningPorts . map ( ( port ) => {
339
+ const url = portForwardURL (
340
+ host ,
341
+ port . port ,
342
+ agent . name ,
343
+ workspaceName ,
344
+ username ,
345
+ listeningPortProtocol ,
346
+ ) ;
347
+ const label =
348
+ port . process_name !== "" ? port . process_name : port . port ;
349
+ return (
350
+ < Stack
351
+ key = { port . port }
352
+ direction = "row"
353
+ alignItems = "center"
354
+ justifyContent = "space-between"
355
+ >
356
+ < Stack direction = "row" gap = { 3 } >
343
357
< Link
344
358
underline = "none"
345
359
css = { styles . portLink }
@@ -351,43 +365,42 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
351
365
{ port . port }
352
366
</ Link >
353
367
< Link
354
- underline = "none"
355
- css = { styles . portLink }
356
- href = { url }
357
- target = "_blank"
358
- rel = "noreferrer"
359
- >
360
- { label }
361
- </ Link >
362
- </ Stack >
363
- < Stack
364
- direction = "row"
365
- gap = { 2 }
366
- justifyContent = "flex-end"
367
- alignItems = "center"
368
+ underline = "none"
369
+ css = { styles . portLink }
370
+ href = { url }
371
+ target = "_blank"
372
+ rel = "noreferrer"
368
373
>
369
-
370
- { canSharePorts && (
371
- < Button
372
- size = "small"
373
- variant = "text"
374
- onClick = { async ( ) => {
375
- await upsertSharedPortMutation . mutateAsync ( {
376
- agent_name : agent . name ,
377
- port : port . port ,
378
- protocol : listeningPortProtocol ,
379
- share_level : "authenticated" ,
380
- } ) ;
381
- await sharedPortsQuery . refetch ( ) ;
382
- } }
383
- >
384
- Share
385
- </ Button >
386
- ) }
387
- </ Stack >
374
+ { label }
375
+ </ Link >
376
+ </ Stack >
377
+ < Stack
378
+ direction = "row"
379
+ gap = { 2 }
380
+ justifyContent = "flex-end"
381
+ alignItems = "center"
382
+ >
383
+ { canSharePorts && (
384
+ < Button
385
+ size = "small"
386
+ variant = "text"
387
+ onClick = { async ( ) => {
388
+ await upsertSharedPortMutation . mutateAsync ( {
389
+ agent_name : agent . name ,
390
+ port : port . port ,
391
+ protocol : listeningPortProtocol ,
392
+ share_level : "authenticated" ,
393
+ } ) ;
394
+ await sharedPortsQuery . refetch ( ) ;
395
+ } }
396
+ >
397
+ Share
398
+ </ Button >
399
+ ) }
388
400
</ Stack >
389
- ) ;
390
- } ) }
401
+ </ Stack >
402
+ ) ;
403
+ } ) }
391
404
</ Stack >
392
405
</ div >
393
406
{ portSharingExperimentEnabled && (
0 commit comments