-
-
+
+ {(form.dirty || isSavedVisible || isSavingUserPrompt) &&
+ (isSavedVisible ? (
+
+ ) : (
+ <>
+
+
+ >
+ ))}
{isSaveUserPromptError && (
diff --git a/site/src/pages/AgentsPage/components/RetentionPeriodSettings.tsx b/site/src/pages/AgentsPage/components/RetentionPeriodSettings.tsx
index 2450887701..d1e06103ab 100644
--- a/site/src/pages/AgentsPage/components/RetentionPeriodSettings.tsx
+++ b/site/src/pages/AgentsPage/components/RetentionPeriodSettings.tsx
@@ -4,8 +4,14 @@ import { useState } from "react";
import * as Yup from "yup";
import type * as TypesGen from "#/api/typesGenerated";
import { Button } from "#/components/Button/Button";
+import { Input } from "#/components/Input/Input";
+import { Spinner } from "#/components/Spinner/Spinner";
import { Switch } from "#/components/Switch/Switch";
import { AdminBadge } from "./AdminBadge";
+import {
+ TemporarySavedState,
+ useTemporarySavedState,
+} from "./TemporarySavedState";
interface MutationCallbacks {
onSuccess?: () => void;
@@ -44,6 +50,7 @@ export const RetentionPeriodSettings: FC = ({
const [retentionToggled, setRetentionToggled] = useState(
null,
);
+ const { isSavedVisible, showSavedState } = useTemporarySavedState();
const serverRetentionDays = retentionDaysData?.retention_days ?? 30;
const isRetentionEnabled = retentionToggled ?? serverRetentionDays > 0;
@@ -57,6 +64,7 @@ export const RetentionPeriodSettings: FC = ({
{ retention_days: values.retention_days },
{
onSuccess: () => {
+ showSavedState();
setRetentionToggled(null);
helpers.resetForm();
},
@@ -96,18 +104,14 @@ export const RetentionPeriodSettings: FC = ({
};
return (
-