diff --git a/web/public/locales/en/views/settings.json b/web/public/locales/en/views/settings.json
index 1946a1c62..9f211a442 100644
--- a/web/public/locales/en/views/settings.json
+++ b/web/public/locales/en/views/settings.json
@@ -386,11 +386,11 @@
"title": "Camera Review Settings",
"object_descriptions": {
"title": "Generative AI Object Descriptions",
- "desc": "Temporarily enable/disable Generative AI object descriptions for this camera. When disabled, AI generated descriptions will not be requested for tracked objects on this camera."
+ "desc": "Temporarily enable/disable Generative AI object descriptions for this camera until Frigate restarts. When disabled, AI generated descriptions will not be requested for tracked objects on this camera."
},
"review_descriptions": {
"title": "Generative AI Review Descriptions",
- "desc": "Temporarily enable/disable Generative AI review descriptions for this camera. When disabled, AI generated descriptions will not be requested for review items on this camera."
+ "desc": "Temporarily enable/disable Generative AI review descriptions for this camera until Frigate restarts. When disabled, AI generated descriptions will not be requested for review items on this camera."
},
"review": {
"title": "Review",
diff --git a/web/src/views/settings/CameraReviewSettingsView.tsx b/web/src/views/settings/CameraReviewSettingsView.tsx
index 7a7b92e4e..974ed1ed6 100644
--- a/web/src/views/settings/CameraReviewSettingsView.tsx
+++ b/web/src/views/settings/CameraReviewSettingsView.tsx
@@ -1,6 +1,7 @@
import Heading from "@/components/ui/heading";
import { useCallback, useContext, useEffect, useMemo, useState } from "react";
-import { Toaster, toast } from "sonner";
+import { toast } from "sonner";
+import { Toaster } from "@/components/ui/sonner";
import {
Form,
FormControl,
@@ -158,11 +159,12 @@ export default function CameraReviewSettingsView({
});
}
setChangedValue(true);
+ setUnsavedChanges(true);
setSelectDetections(isChecked as boolean);
},
// we know that these deps are correct
// eslint-disable-next-line react-hooks/exhaustive-deps
- [watchedAlertsZones],
+ [watchedAlertsZones, setUnsavedChanges],
);
const saveToConfig = useCallback(
@@ -197,6 +199,8 @@ export default function CameraReviewSettingsView({
position: "top-center",
},
);
+ setChangedValue(false);
+ setUnsavedChanges(false);
updateConfig();
} else {
toast.error(
@@ -229,7 +233,14 @@ export default function CameraReviewSettingsView({
setIsLoading(false);
});
},
- [updateConfig, setIsLoading, selectedCamera, cameraConfig, t],
+ [
+ updateConfig,
+ setIsLoading,
+ selectedCamera,
+ cameraConfig,
+ t,
+ setUnsavedChanges,
+ ],
);
const onCancel = useCallback(() => {
@@ -495,6 +506,7 @@ export default function CameraReviewSettingsView({
)}
onCheckedChange={(checked) => {
setChangedValue(true);
+ setUnsavedChanges(true);
return checked
? field.onChange([
...field.value,
@@ -600,6 +612,8 @@ export default function CameraReviewSettingsView({
zone.name,
)}
onCheckedChange={(checked) => {
+ setChangedValue(true);
+ setUnsavedChanges(true);
return checked
? field.onChange([
...field.value,
@@ -699,7 +713,6 @@ export default function CameraReviewSettingsView({
)}
/>
-