Revert "fix: add front-end fixes for minor workspace action bugs (#8252)" (#8286)

This reverts commit c569528fb7.
This commit is contained in:
Jon Ayers
2023-06-30 20:26:38 -05:00
committed by GitHub
parent 83bee35c36
commit 681e2db9ec
10 changed files with 22 additions and 72 deletions
@@ -1,8 +1,5 @@
import { Workspace } from "api/typesGenerated"
import {
displayImpendingDeletion,
IMPENDING_DELETION_DISPLAY_THRESHOLD,
} from "./utils"
import { displayImpendingDeletion } from "./utils"
import { useDashboard } from "components/Dashboard/DashboardProvider"
import { Alert } from "components/Alert/Alert"
import { formatDistanceToNow, differenceInDays, add, format } from "date-fns"
@@ -51,9 +48,7 @@ export const ImpendingDeletionBanner = ({
new Date(),
)
const plusFourteen = add(new Date(), {
days: IMPENDING_DELETION_DISPLAY_THRESHOLD,
})
const plusFourteen = add(new Date(), { days: 14 })
return (
<Alert
@@ -2,7 +2,7 @@ import { Workspace } from "api/typesGenerated"
// This const dictates how far out we alert the user that a workspace
// has an impending deletion (due to template.InactivityTTL being set)
export const IMPENDING_DELETION_DISPLAY_THRESHOLD = 14 // 14 days
const IMPENDING_DELETION_DISPLAY_THRESHOLD = 14 // 14 days
/**
* Returns a boolean indicating if an impending deletion indicator should be
+3 -5
View File
@@ -22,14 +22,12 @@
"failureTTLHelperText_zero": "Coder will not automatically stop failed workspaces",
"failureTTLHelperText_one": "Coder will attempt to stop failed workspaces after {{count}} day.",
"failureTTLHelperText_other": "Coder will attempt to stop failed workspaces after {{count}} days.",
"inactivityTTLHelperText_zero": "Coder will not automatically lock inactive workspaces",
"inactivityTTLHelperText_one": "Coder will automatically lock inactive workspaces after {{count}} day.",
"inactivityTTLHelperText_other": "Coder will automatically lock inactive workspaces after {{count}} days.",
"inactivityTTLHelperText_zero": "Coder will not automatically delete inactive workspaces",
"inactivityTTLHelperText_one": "Coder will automatically delete inactive workspaces after {{count}} day.",
"inactivityTTLHelperText_other": "Coder will automatically delete inactive workspaces after {{count}} days.",
"lockedTTLHelperText_zero": "Coder will not automatically delete locked workspaces",
"lockedTTLHelperText_one": "Coder will automatically delete locked workspaces after {{count}} day.",
"lockedTTLHelperText_other": "Coder will automatically delete locked workspaces after {{count}} days.",
"inactivityDialogDescription_one": "There is {{count}} workspace that already matches this filter and will be deleted upon form submission. Are you sure you want to proceed?",
"inactivityDialogDescription_other": "There are {{count}} workspaces that already match this filter and will be deleted upon form submission. Are you sure you want to proceed?",
"allowUserCancelWorkspaceJobsLabel": "Allow users to cancel in-progress workspace jobs.",
"allowUserCancelWorkspaceJobsNotice": "Depending on your template, canceling builds may leave workspaces in an unhealthy state. This option isn't recommended for most use cases.",
"allowUsersCancelHelperText": "If checked, users may be able to corrupt their workspace.",
@@ -14,6 +14,6 @@ export const OpenDialog: Story = {
submitValues: () => null,
isInactivityDialogOpen: true,
setIsInactivityDialogOpen: () => null,
numberWorkspacesToBeDeletedToday: 2,
workspacesToBeDeletedToday: 2,
},
}
@@ -1,19 +1,16 @@
import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog"
import { useTranslation } from "react-i18next"
export const InactivityDialog = ({
submitValues,
isInactivityDialogOpen,
setIsInactivityDialogOpen,
numberWorkspacesToBeDeletedToday,
workspacesToBeDeletedToday,
}: {
submitValues: () => void
isInactivityDialogOpen: boolean
setIsInactivityDialogOpen: (arg0: boolean) => void
numberWorkspacesToBeDeletedToday: number
workspacesToBeDeletedToday: number
}) => {
const { t } = useTranslation("templateSettingsPage")
return (
<ConfirmDialog
type="delete"
@@ -25,9 +22,9 @@ export const InactivityDialog = ({
onClose={() => setIsInactivityDialogOpen(false)}
title="Delete inactive workspaces"
confirmText="Delete Workspaces"
description={t("inactivityDialogDescription", {
count: numberWorkspacesToBeDeletedToday,
})}
description={`There are ${
workspacesToBeDeletedToday ? workspacesToBeDeletedToday : ""
} workspaces that already match this filter and will be deleted upon form submission. Are you sure you want to proceed?`}
/>
)
}
@@ -82,7 +82,7 @@ export const TemplateScheduleForm: FC<TemplateScheduleForm> = ({
validationSchema,
onSubmit: () => {
if (
form.values.locked_cleanup_enabled &&
form.values.inactivity_cleanup_enabled &&
workspacesToBeDeletedToday &&
workspacesToBeDeletedToday.length > 0
) {
@@ -100,10 +100,7 @@ export const TemplateScheduleForm: FC<TemplateScheduleForm> = ({
const { t } = useTranslation("templateSettingsPage")
const styles = useStyles()
const workspacesToBeDeletedToday = useWorkspacesToBeDeleted(
form.values,
template.name,
)
const workspacesToBeDeletedToday = useWorkspacesToBeDeleted(form.values)
const [isInactivityDialogOpen, setIsInactivityDialogOpen] =
useState<boolean>(false)
@@ -308,7 +305,6 @@ export const TemplateScheduleForm: FC<TemplateScheduleForm> = ({
onChange={handleToggleFailureCleanup}
/>
}
disabled={isSubmitting}
label="Enable Failure Cleanup"
/>
<TextField
@@ -341,7 +337,6 @@ export const TemplateScheduleForm: FC<TemplateScheduleForm> = ({
onChange={handleToggleInactivityCleanup}
/>
}
disabled={isSubmitting}
label="Enable Inactivity Cleanup"
/>
<TextField
@@ -376,9 +371,6 @@ export const TemplateScheduleForm: FC<TemplateScheduleForm> = ({
onChange={handleToggleLockedCleanup}
/>
}
disabled={
isSubmitting || !form.values.inactivity_cleanup_enabled
}
label="Enable Locked Cleanup"
/>
<TextField
@@ -404,9 +396,7 @@ export const TemplateScheduleForm: FC<TemplateScheduleForm> = ({
submitValues={submitValues}
isInactivityDialogOpen={isInactivityDialogOpen}
setIsInactivityDialogOpen={setIsInactivityDialogOpen}
numberWorkspacesToBeDeletedToday={
workspacesToBeDeletedToday?.length ?? 0
}
workspacesToBeDeletedToday={workspacesToBeDeletedToday?.length ?? 0}
/>
<FormFooter
onCancel={onCancel}
@@ -13,12 +13,11 @@ const inactiveStatuses: WorkspaceStatus[] = [
export const useWorkspacesToBeDeleted = (
formValues: TemplateScheduleFormValues,
templateName: string,
) => {
const { data: workspacesData } = useQuery({
queryKey: ["workspaces"],
queryFn: () => getWorkspaces({ q: `template:${templateName}` }),
enabled: formValues.locked_cleanup_enabled,
queryFn: () => getWorkspaces({}),
enabled: formValues.inactivity_cleanup_enabled,
})
return workspacesData?.workspaces?.filter((workspace: Workspace) => {
const isInactive = inactiveStatuses.includes(workspace.latest_build.status)
@@ -2,11 +2,7 @@ import { usePagination } from "hooks/usePagination"
import { FC } from "react"
import { Helmet } from "react-helmet-async"
import { pageTitle } from "utils/page"
import {
useWorkspacesData,
useWorkspaceUpdate,
useWorkspacesWithImpendingDeletions,
} from "./data"
import { useWorkspacesData, useWorkspaceUpdate } from "./data"
import { WorkspacesPageView } from "./WorkspacesPageView"
import { useOrganizationId, usePermissions } from "hooks"
import { useTemplateFilterMenu, useStatusFilterMenu } from "./filter/menus"
@@ -33,9 +29,6 @@ const WorkspacesPage: FC = () => {
query: filter.query,
})
const updateWorkspace = useWorkspaceUpdate(queryKey)
const { data: workspacesWithImpendingDeletions } =
useWorkspacesWithImpendingDeletions()
const permissions = usePermissions()
const canFilterByUser = permissions.viewDeploymentValues
const userMenu = useUserFilterMenu({
@@ -64,7 +57,6 @@ const WorkspacesPage: FC = () => {
<WorkspacesPageView
workspaces={data?.workspaces}
workspacesWithDeletions={workspacesWithImpendingDeletions?.workspaces}
error={error}
count={data?.count}
page={pagination.page}
@@ -33,7 +33,6 @@ export const Language = {
export interface WorkspacesPageViewProps {
error: unknown
workspaces?: Workspace[]
workspacesWithDeletions?: Workspace[]
count?: number
filterProps: ComponentProps<typeof WorkspacesFilter>
page: number
@@ -46,7 +45,6 @@ export const WorkspacesPageView: FC<
React.PropsWithChildren<WorkspacesPageViewProps>
> = ({
workspaces,
workspacesWithDeletions,
error,
limit,
count,
@@ -57,9 +55,9 @@ export const WorkspacesPageView: FC<
}) => {
const { saveLocal, getLocal } = useLocalStorage()
const workspaceIdsWithImpendingDeletions = workspacesWithDeletions?.map(
(workspace) => workspace.id,
)
const workspaceIdsWithImpendingDeletions = workspaces
?.filter((workspace) => workspace.deleting_at)
.map((workspace) => workspace.id)
/**
* Returns a boolean indicating if there are workspaces that have been
@@ -107,9 +105,7 @@ export const WorkspacesPageView: FC<
</Maybe>
{/* <ImpendingDeletionBanner/> determines its own visibility */}
<ImpendingDeletionBanner
workspace={workspacesWithDeletions?.find(
(workspace) => workspace.deleting_at,
)}
workspace={workspaces?.find((workspace) => workspace.deleting_at)}
shouldRedisplayBanner={isNewWorkspacesImpendingDeletion()}
onDismiss={() =>
saveLocal(
-17
View File
@@ -14,8 +14,6 @@ import {
import { displayError } from "components/GlobalSnackbar/utils"
import { useState } from "react"
import { useTranslation } from "react-i18next"
import { add, format } from "date-fns"
import { IMPENDING_DELETION_DISPLAY_THRESHOLD } from "components/WorkspaceDeletion/utils"
type UseWorkspacesDataParams = {
page: number
@@ -81,21 +79,6 @@ export const useWorkspaceUpdate = (queryKey: QueryKey) => {
})
}
// Returns workspace that will be deleted within 14 days.
// This query is used for the ImpendingDeletionBanner
export const useWorkspacesWithImpendingDeletions = () => {
return useQuery({
queryKey: ["workspacesWithImpendingDeletions"],
queryFn: () =>
getWorkspaces({
q: `deleting_by:"${format(
add(new Date(), { days: IMPENDING_DELETION_DISPLAY_THRESHOLD }),
"yyyy-MM-dd",
)}"`,
}),
})
}
const assignLatestBuild = (
oldResponse: WorkspacesResponse,
build: WorkspaceBuild,