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

fix(site): exclude workspace schedule settings for prebuilt workspaces#18826

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from1 commit
Commits
Show all changes
11 commits
Select commitHold shift + click to select a range
95ca5f7
fix(site): exclude workspace schedule settings for prebuilt workspaces
ssncferreiraJul 10, 2025
207c80f
feat: add is_prebuild flag to workspace API response
ssncferreiraJul 10, 2025
450b3e1
fix: fmt
ssncferreiraJul 10, 2025
0bde254
chore: add comment to IsPrebuild parameter on codersdk.Workspaces
ssncferreiraJul 14, 2025
73f5476
chore: add story to WorkspaceSchedulePage
ssncferreiraJul 14, 2025
f306854
Merge remote-tracking branch 'origin/main' into ssncferreira/exclude-…
ssncferreiraJul 14, 2025
d5e45bb
fix: run make gen
ssncferreiraJul 14, 2025
0120c5b
chore: use workspace.IsPrebuild() on convertWorkspace
ssncferreiraJul 14, 2025
ad475cf
simplify story
BrunoQuaresmaJul 14, 2025
02c0ff5
fix: run make fmt
ssncferreiraJul 15, 2025
1260e49
Merge remote-tracking branch 'origin/main' into ssncferreira/exclude-…
ssncferreiraJul 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
NextNext commit
fix(site): exclude workspace schedule settings for prebuilt workspaces
  • Loading branch information
@ssncferreira
ssncferreira committedJul 10, 2025
commit95ca5f70a34ec15d93ffbb0db00255a99bbb4d88
7 changes: 7 additions & 0 deletionssite/src/modules/workspaces/prebuilds.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
importtype{Workspace}from"api/typesGenerated";

// Returns true if the workspace is a prebuilt workspace (owned by the prebuilds system user),
// otherwise returns false.
exportconstisPrebuiltWorkspace=(workspace:Workspace):boolean=>{
returnworkspace.owner_id==="c42fdf75-3097-471c-8c33-fb52454d81c0";
};
View file
Open in desktop
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I'd suggest adding a story here to showcase the new behaviour.

BrunoQuaresma reacted with thumbs up emoji
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Good catch!

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Addressed in73f5476

Original file line numberDiff line numberDiff line change
Expand Up@@ -7,9 +7,11 @@ import { Alert } from "components/Alert/Alert";
import { ErrorAlert } from "components/Alert/ErrorAlert";
import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog";
import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
import { Link } from "components/Link/Link";
import { Loader } from "components/Loader/Loader";
import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader";
import dayjs from "dayjs";
import { isPrebuiltWorkspace } from "modules/workspaces/prebuilds";
import {
scheduleChanged,
scheduleToAutostart,
Expand All@@ -20,6 +22,7 @@ import { type FC, useState } from "react";
import { Helmet } from "react-helmet-async";
import { useMutation, useQuery, useQueryClient } from "react-query";
import { useNavigate, useParams } from "react-router-dom";
import { docs } from "utils/docs";
import { pageTitle } from "utils/page";
import { WorkspaceScheduleForm } from "./WorkspaceScheduleForm";
import {
Expand DownExpand Up@@ -94,42 +97,65 @@ const WorkspaceSchedulePage: FC = () => {
</Alert>
)}

{template && (
<WorkspaceScheduleForm
template={template}
error={submitScheduleMutation.error}
initialValues={{
...getAutostart(workspace),
...getAutostop(workspace),
}}
isLoading={submitScheduleMutation.isPending}
defaultTTL={dayjs.duration(template.default_ttl_ms, "ms").asHours()}
onCancel={() => {
navigate(`/@${username}/${workspaceName}`);
}}
onSubmit={async (values) => {
const data = {
workspace,
autostart: formValuesToAutostartRequest(values),
ttl: formValuesToTTLRequest(values),
autostartChanged: scheduleChanged(
getAutostart(workspace),
values,
),
autostopChanged: scheduleChanged(getAutostop(workspace), values),
};

await submitScheduleMutation.mutateAsync(data);

if (
data.autostopChanged &&
getAutostop(workspace).autostopEnabled
) {
setIsConfirmingApply(true);
}
}}
/>
)}
{template &&
// Prebuilt workspaces have their own scheduling system,
// so we avoid showing the workspace-level schedule settings form.
// Instead, show an informational message with a link to the relevant docs.
(isPrebuiltWorkspace(workspace) ? (
<Alert severity="info">
Prebuilt workspaces do not support workspace-level scheduling. For
prebuilt workspace specific scheduling refer to the{" "}
<Link
title="Prebuilt Workspaces Scheduling"
href={docs(
"/admin/templates/extending-templates/prebuilt-workspaces#scheduling",
)}
target="_blank"
rel="noreferrer"
>
Prebuilt Workspaces Scheduling
</Link>
documentation page.
</Alert>
) : (
<WorkspaceScheduleForm
template={template}
error={submitScheduleMutation.error}
initialValues={{
...getAutostart(workspace),
...getAutostop(workspace),
}}
isLoading={submitScheduleMutation.isPending}
defaultTTL={dayjs.duration(template.default_ttl_ms, "ms").asHours()}
onCancel={() => {
navigate(`/@${username}/${workspaceName}`);
}}
onSubmit={async (values) => {
const data = {
workspace,
autostart: formValuesToAutostartRequest(values),
ttl: formValuesToTTLRequest(values),
autostartChanged: scheduleChanged(
getAutostart(workspace),
values,
),
autostopChanged: scheduleChanged(
getAutostop(workspace),
values,
),
};

await submitScheduleMutation.mutateAsync(data);

if (
data.autostopChanged &&
getAutostop(workspace).autostopEnabled
) {
setIsConfirmingApply(true);
}
}}
/>
))}

<ConfirmDialog
open={isConfirmingApply}
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp