Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0601cc8

Browse files
authored
feat(site): display warnings in tasks page when wildcard is not configured (#19780)
Closes#19739 This PR adds warnings to Task page to alert users when wildcard is notconfigured.Admin:<img width="1871" height="1209" alt="image"src="https://github.com/user-attachments/assets/01beb885-5493-41ed-a266-58609bee5b8b"/>Member:<img width="1713" height="1204" alt="image"src="https://github.com/user-attachments/assets/53c2bae5-5e0f-458c-b761-633399bdf2f0"/>
1 parenteb74d90 commit0601cc8

File tree

3 files changed

+82
-11
lines changed

3 files changed

+82
-11
lines changed

‎site/src/pages/TaskPage/TaskApps.tsx‎

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import{ExternalImage}from"components/ExternalImage/ExternalImage";
1010
import{InfoTooltip}from"components/InfoTooltip/InfoTooltip";
1111
import{Link}from"components/Link/Link";
12+
import{useProxy}from"contexts/ProxyContext";
1213
import{ChevronDownIcon,LayoutGridIcon}from"lucide-react";
1314
import{useAppLink}from"modules/apps/useAppLink";
1415
importtype{Task}from"modules/tasks/tasks";
@@ -18,6 +19,7 @@ import { Link as RouterLink } from "react-router";
1819
import{cn}from"utils/cn";
1920
import{docs}from"utils/docs";
2021
import{TaskAppIFrame}from"./TaskAppIframe";
22+
import{TaskWildcardWarning}from"./TaskWildcardWarning";
2123

2224
typeTaskAppsProps={
2325
task:Task;
@@ -29,6 +31,8 @@ type AppWithAgent = {
2931
};
3032

3133
exportconstTaskApps:FC<TaskAppsProps>=({ task})=>{
34+
const{ proxy}=useProxy();
35+
3236
constagents=task.workspace.latest_build.resources
3337
.flatMap((r)=>r.agents)
3438
.filter((a)=>!!a);
@@ -54,6 +58,10 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
5458
embeddedApps[0]?.app.id,
5559
);
5660

61+
constactiveApp=embeddedApps.find(({ app})=>app.id===activeAppId)?.app;
62+
constshouldDisplayWildcardWarning=
63+
activeApp?.subdomain&&!proxy.proxy?.wildcard_hostname;
64+
5765
return(
5866
<mainclassName="flex flex-col">
5967
<divclassName="w-full flex items-center border-0 border-b border-border border-solid">
@@ -83,18 +91,22 @@ export const TaskApps: FC<TaskAppsProps> = ({ task }) => {
8391
</div>
8492

8593
{embeddedApps.length>0 ?(
86-
<divclassName="flex-1">
87-
{embeddedApps.map(({ app})=>{
88-
return(
94+
shouldDisplayWildcardWarning ?(
95+
<divclassName="flex-1 flex flex-col items-center justify-center pb-4">
96+
<TaskWildcardWarningclassName="max-w-xl"/>
97+
</div>
98+
) :(
99+
<divclassName="flex-1">
100+
{embeddedApps.map(({ app})=>(
89101
<TaskAppIFrame
90102
key={app.id}
91103
active={activeAppId===app.id}
92104
app={app}
93105
task={task}
94106
/>
95-
);
96-
})}
97-
</div>
107+
))}
108+
</div>
109+
)
98110
) :(
99111
<divclassName="mx-auto my-auto flex flex-col items-center">
100112
<h3className="font-medium text-content-primary text-base">

‎site/src/pages/TaskPage/TaskSidebar.tsx‎

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
importtype{WorkspaceApp}from"api/typesGenerated";
22
import{Spinner}from"components/Spinner/Spinner";
3+
import{useProxy}from"contexts/ProxyContext";
34
importtype{Task}from"modules/tasks/tasks";
45
importtype{FC}from"react";
56
import{TaskAppIFrame}from"./TaskAppIframe";
7+
import{TaskWildcardWarning}from"./TaskWildcardWarning";
68

79
typeTaskSidebarProps={
810
task:Task;
@@ -64,21 +66,29 @@ const getSidebarApp = (task: Task): [WorkspaceApp | null, SidebarAppStatus] => {
6466
};
6567

6668
exportconstTaskSidebar:FC<TaskSidebarProps>=({ task})=>{
69+
constproxy=useProxy();
70+
6771
const[sidebarApp,sidebarAppStatus]=getSidebarApp(task);
72+
constshouldDisplayWildcardWarning=
73+
sidebarApp?.subdomain&&proxy.proxy?.preferredWildcardHostname==="";
6874

6975
return(
7076
<asideclassName="flex flex-col h-full shrink-0 w-full">
71-
{sidebarAppStatus==="healthy"&&sidebarApp ?(
77+
{sidebarAppStatus==="loading" ?(
78+
<divclassName="flex-1 flex flex-col items-center justify-center pb-4">
79+
<Spinnerloading/>
80+
</div>
81+
) :shouldDisplayWildcardWarning ?(
82+
<divclassName="flex-1 flex flex-col items-center justify-center pb-4">
83+
<TaskWildcardWarningclassName="max-w-xl"/>
84+
</div>
85+
) :sidebarAppStatus==="healthy"&&sidebarApp ?(
7286
<TaskAppIFrame
7387
active
7488
key={sidebarApp.id}
7589
app={sidebarApp}
7690
task={task}
7791
/>
78-
) :sidebarAppStatus==="loading" ?(
79-
<divclassName="flex-1 flex flex-col items-center justify-center">
80-
<SpinnerloadingclassName="mb-4"/>
81-
</div>
8292
) :(
8393
<divclassName="flex-1 flex flex-col items-center justify-center">
8494
<h3className="m-0 font-medium text-content-primary text-base">
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import{Button}from"components/Button/Button";
2+
import{useAuthenticated}from"hooks/useAuthenticated";
3+
import{SquareArrowOutUpRightIcon}from"lucide-react";
4+
import{LinkasRouterLink}from"react-router";
5+
import{cn}from"utils/cn";
6+
import{docs}from"utils/docs";
7+
8+
typeTaskWildcardWarningProps={
9+
className?:string;
10+
};
11+
12+
exportconstTaskWildcardWarning=({
13+
className,
14+
}:TaskWildcardWarningProps)=>{
15+
const{ permissions}=useAuthenticated();
16+
constcanEditDeploymentConfig=Boolean(permissions.editDeploymentConfig);
17+
18+
return(
19+
<divclassName={cn("text-center",className)}>
20+
<h3className="font-medium text-content-primary text-base mb-3">Error</h3>
21+
<divclassName="text-content-secondary text-sm flex flex-col gap-3 items-center">
22+
<divclassName="px-4">
23+
This application has{" "}
24+
<codeclassName="py-px px-1 bg-surface-tertiary rounded-sm text-content-primary">
25+
subdomain = true
26+
</code>
27+
{canEditDeploymentConfig ?(
28+
<>
29+
, but subdomain applications are not configured. This application
30+
won't be accessible until you configure the{" "}
31+
<codeclassName="py-px px-1 bg-surface-tertiary rounded-sm text-content-primary whitespace-nowrap">
32+
--wildcard-access-url
33+
</code>{" "}
34+
flag when starting the Coder server.
35+
</>
36+
) :(
37+
", which requires a Coder deployment with a Wildcard Access URL configured. Please contact your administrator."
38+
)}
39+
</div>
40+
<Buttonsize="sm"variant="outline"asChild>
41+
<RouterLinkto={docs("/admin/networking/wildcard-access-url")}>
42+
<SquareArrowOutUpRightIcon/>
43+
Learn more about wildcard access URL
44+
</RouterLink>
45+
</Button>
46+
</div>
47+
</div>
48+
);
49+
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp