From 8d462588fc41f70caa060143a35fabe99491e146 Mon Sep 17 00:00:00 2001 From: 0x464e <36742501+0x464e@users.noreply.github.com> Date: Sun, 5 Apr 2026 15:05:21 +0300 Subject: [PATCH] Fix back navigation when coming from direct shared timestamp links --- web/src/pages/Events.tsx | 1 + web/src/types/record.ts | 1 + web/src/views/recording/RecordingView.tsx | 12 +++++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index 75eb2bc7c..2bb37fa98 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -280,6 +280,7 @@ export default function Events() { // this pattern is also used LiveCameraView to enter recording view severity: "alert", timelineType: notificationTab, + navigationSource: "shared-link", }, true, ); diff --git a/web/src/types/record.ts b/web/src/types/record.ts index 107a8d86e..d8fd163bf 100644 --- a/web/src/types/record.ts +++ b/web/src/types/record.ts @@ -40,6 +40,7 @@ export type RecordingStartingPoint = { startTime: number; severity: ReviewSeverity; timelineType?: TimelineType; + navigationSource?: "shared-link"; }; export type RecordingPlayerError = "stalled" | "startup"; diff --git a/web/src/views/recording/RecordingView.tsx b/web/src/views/recording/RecordingView.tsx index d1e20e2ef..30caac95f 100644 --- a/web/src/views/recording/RecordingView.tsx +++ b/web/src/views/recording/RecordingView.tsx @@ -349,6 +349,16 @@ export function RecordingView({ [location.pathname, mainCamera, t], ); + const handleBack = useCallback(() => { + // if we came from a direct share link, there is no history to go back to, so navigate to the homepage instead + if (recording?.navigationSource === "shared-link") { + navigate("/"); + return; + } + + navigate(-1); + }, [navigate, recording?.navigationSource]); + useEffect(() => { if (!scrubbing) { if (Math.abs(currentTime - playerTime) > 10) { @@ -599,7 +609,7 @@ export function RecordingView({ className="flex items-center gap-2.5 rounded-lg" aria-label={t("label.back", { ns: "common" })} size="sm" - onClick={() => navigate(-1)} + onClick={handleBack} > {isDesktop && (