From 99fa5e1deebdc3a91a4b9015f5a46a36545bf349 Mon Sep 17 00:00:00 2001 From: 0x464e <36742501+0x464e@users.noreply.github.com> Date: Fri, 20 Mar 2026 18:57:24 +0200 Subject: [PATCH] Bugfix: guard against showing toasts twice Because this effect ends up running multiple times --- web/src/pages/Events.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index e2c2a1db1..d9769e86b 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -29,7 +29,7 @@ import EventView from "@/views/events/EventView"; import MotionSearchView from "@/views/motion-search/MotionSearchView"; import { RecordingView } from "@/views/recording/RecordingView"; import axios from "axios"; -import { useCallback, useEffect, useMemo, useState } from "react"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { toast } from "sonner"; import useSWR from "swr"; @@ -243,11 +243,19 @@ export default function Events() { [recording, setRecording, setReviewFilter], ); + const handledReviewLinkRef = useRef(undefined); + useSearchEffect(RECORDING_REVIEW_LINK_PARAM, (reviewLinkValue: string) => { if (!config) { return false; } + if (handledReviewLinkRef.current === reviewLinkValue) { + return false; + } + + handledReviewLinkRef.current = reviewLinkValue; + const reviewLink = parseRecordingReviewLink(reviewLinkValue); if (!reviewLink) {