@@ -19,7 +19,7 @@ import { useDashboard } from "components/Dashboard/DashboardProvider";
19
19
import { Region } from "api/typesGenerated" ;
20
20
import { getLatencyColor } from "utils/latency" ;
21
21
import { ProxyStatusLatency } from "components/ProxyStatusLatency/ProxyStatusLatency" ;
22
- import { portForwardURL } from "utils/portForward" ;
22
+ import { openMaybePortForwardedURL } from "utils/portForward" ;
23
23
import { terminalWebsocketUrl } from "utils/terminal" ;
24
24
import { getMatchingAgentOrFirst } from "utils/workspace" ;
25
25
import {
@@ -89,49 +89,13 @@ const TerminalPage: FC = () => {
89
89
// handleWebLink handles opening of URLs in the terminal!
90
90
const handleWebLink = useCallback (
91
91
( uri : string ) => {
92
- if (
93
- ! workspaceAgent ||
94
- ! workspace . data ||
95
- ! username ||
96
- ! proxy . preferredWildcardHostname
97
- ) {
98
- return ;
99
- }
100
-
101
- const open = ( uri : string ) => {
102
- // Copied from: https://github.com/xtermjs/xterm.js/blob/master/addons/xterm-addon-web-links/src/WebLinksAddon.ts#L23
103
- const newWindow = window . open ( ) ;
104
- if ( newWindow ) {
105
- try {
106
- newWindow . opener = null ;
107
- } catch {
108
- // no-op, Electron can throw
109
- }
110
- newWindow . location . href = uri ;
111
- } else {
112
- console . warn ( "Opening link blocked as opener could not be cleared" ) ;
113
- }
114
- } ;
115
-
116
- try {
117
- const url = new URL ( uri ) ;
118
- const localHosts = [ "0.0.0.0" , "127.0.0.1" , "localhost" ] ;
119
- if ( ! localHosts . includes ( url . hostname ) ) {
120
- open ( uri ) ;
121
- return ;
122
- }
123
- open (
124
- portForwardURL (
125
- proxy . preferredWildcardHostname ,
126
- parseInt ( url . port ) ,
127
- workspaceAgent . name ,
128
- workspace . data . name ,
129
- username ,
130
- ) + url . pathname ,
131
- ) ;
132
- } catch ( ex ) {
133
- open ( uri ) ;
134
- }
92
+ openMaybePortForwardedURL (
93
+ uri ,
94
+ proxy . preferredWildcardHostname ,
95
+ workspaceAgent ?. name ,
96
+ workspace . data ?. name ,
97
+ username ,
98
+ ) ;
135
99
} ,
136
100
[ workspaceAgent , workspace . data , username , proxy . preferredWildcardHostname ] ,
137
101
) ;
0 commit comments