fix tunnel modal bug
Kim committed
Mar 13, 2026 at 13:43 UTC
06705b8db50f05b014094ba75205f3b649608703
1 file changed
+19
-7
frontend/src/components/TunnelCommandModal.tsx
+19
-7
@@ -27,6 +27,7 @@ export function TunnelCommandModal({ trigger }: TunnelCommandModalProps) {
27
return "https://localhost:4017";
28
}, []);
29
30
+ const [open, setOpen] = useState(false);
31
const [target, setTarget] = useState(defaultHost);
32
const [name, setName] = useState("");
33
const [relayUrls, setRelayUrls] = useState<string[]>([currentOrigin]);
@@ -95,17 +96,13 @@ export function TunnelCommandModal({ trigger }: TunnelCommandModalProps) {
96
currentOrigin
97
).toString();
98
const localhostRelay = isLocalRelayOrigin(currentOrigin);
98
- const installerDefaultsMatch =
99
- defaultRelays &&
100
- relayUrls.length === 1 &&
101
- relayUrls[0] === currentOrigin;
99
100
const exposeArgs: string[] = [];
101
102
if (nameVal !== "") {
103
exposeArgs.push(`--name ${formatToken(nameVal, os)}`);
104
}
108
- if (!installerDefaultsMatch) {
105
+ if (relayUrls.length > 0) {
106
exposeArgs.push(`--relays ${formatToken(relayUrlVal, os)}`);
107
}
108
if (!defaultRelays) {
@@ -148,8 +145,23 @@ export function TunnelCommandModal({ trigger }: TunnelCommandModalProps) {
145
}
146
};
147
148
+ const handleOpenChange = (nextOpen: boolean) => {
149
+ setOpen(nextOpen);
150
+ if (!nextOpen) {
151
+ return;
152
+ }
153
+ setTarget(defaultHost);
154
+ setName("");
155
+ setRelayUrls([currentOrigin]);
156
+ setDefaultRelays(true);
157
+ setUrlInput("");
158
+ setCopied(false);
159
+ setOs("unix");
160
+ setThumbnailURL("");
161
+ };
162
+
163
return (
152
- <Dialog>
164
+ <Dialog open={open} onOpenChange={handleOpenChange}>
165
<DialogTrigger asChild>
166
{trigger || (
167
<Button className="cursor-pointer">
@@ -157,7 +169,7 @@ export function TunnelCommandModal({ trigger }: TunnelCommandModalProps) {
169
</Button>
170
)}
171
</DialogTrigger>
160
- <DialogContent className="sm:max-w-[510px] rounded-sm max-h-[85vh] overflow-y-auto">
172
+ <DialogContent className="sm:max-w-[520px] rounded-sm max-h-[85vh] overflow-y-auto">
173
<DialogHeader>
174
<DialogTitle className="flex items-center gap-2">
175
<Terminal className="w-5 h-5" />