diff --git a/web/src/views/search/SearchView.tsx b/web/src/views/search/SearchView.tsx
index d72d3dbf4..6ca2a0f6d 100644
--- a/web/src/views/search/SearchView.tsx
+++ b/web/src/views/search/SearchView.tsx
@@ -32,6 +32,7 @@ import Chip from "@/components/indicators/Chip";
import { TooltipPortal } from "@radix-ui/react-tooltip";
import SearchActionGroup from "@/components/filter/SearchActionGroup";
import { Trans, useTranslation } from "react-i18next";
+import { useNavigate } from "react-router-dom";
type SearchViewProps = {
search: string;
@@ -76,6 +77,7 @@ export default function SearchView({
const { data: config } = useSWR("config", {
revalidateOnFocus: false,
});
+ const navigate = useNavigate();
// grid
@@ -648,6 +650,16 @@ export default function SearchView({
showSnapshot={() =>
onSelectSearch(value, false, "snapshot")
}
+ addTrigger={() => {
+ if (
+ config?.semantic_search.enabled &&
+ value.data.type == "object"
+ ) {
+ navigate(
+ `/settings?page=triggers&camera=${value.camera}&event_id=${value.id}`,
+ );
+ }
+ }}
/>
diff --git a/web/src/views/settings/TriggerView.tsx b/web/src/views/settings/TriggerView.tsx
index 6feca924d..ba13fc6fe 100644
--- a/web/src/views/settings/TriggerView.tsx
+++ b/web/src/views/settings/TriggerView.tsx
@@ -26,6 +26,7 @@ import CreateTriggerDialog from "@/components/overlay/CreateTriggerDialog";
import DeleteTriggerDialog from "@/components/overlay/DeleteTriggerDialog";
import { FrigateConfig } from "@/types/frigateConfig";
import { Trigger, TriggerAction, TriggerType } from "@/types/trigger";
+import { useSearchEffect } from "@/hooks/use-overlay-state";
type ConfigSetBody = {
requires_restart: number;
@@ -296,6 +297,24 @@ export default function TriggerView({
}
}, [selectedCamera, setUnsavedChanges]);
+ // for adding a trigger with event id via explore context menu
+
+ useSearchEffect("event_id", (eventId: string) => {
+ if (!config || isLoading) {
+ return false;
+ }
+ setShowCreate(true);
+ setSelectedTrigger({
+ enabled: true,
+ name: "",
+ type: "thumbnail",
+ data: eventId,
+ threshold: 0.5,
+ actions: [],
+ });
+ return true;
+ });
+
if (!config || !selectedCamera) {
return (