From 34115d0a604ad6e577b6275181ce30eef999d113 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Thu, 22 Feb 2024 14:11:55 -0700 Subject: [PATCH] fix overwriting existing data --- web/src/pages/Events.tsx | 32 +++++++++++++---------- web/src/views/events/DesktopEventView.tsx | 28 +++++++++----------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index ef84eff17..10ac0265c 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -4,7 +4,7 @@ import DesktopEventView from "@/views/events/DesktopEventView"; import DesktopRecordingView from "@/views/events/DesktopRecordingView"; import MobileEventView from "@/views/events/MobileEventView"; import axios from "axios"; -import { useCallback, useEffect, useMemo, useState } from "react"; +import { useCallback, useMemo } from "react"; import { isMobile } from "react-device-detect"; import useSWR from "swr"; import useSWRInfinite from "swr/infinite"; @@ -17,13 +17,9 @@ export default function Events() { // review paging - const [after, setAfter] = useState(getHoursAgo(24)); - useEffect(() => { - const intervalId: NodeJS.Timeout = setInterval(() => { - setAfter(getHoursAgo(24)); - }, 300000); - return () => clearInterval(intervalId); - }, [300000]); + const timeRange = useMemo(() => { + return { before: Date.now() / 1000, after: getHoursAgo(24) }; + }, []); const reviewSegmentFetcher = useCallback((key: any) => { const [path, params] = Array.isArray(key) ? key : [key, undefined]; @@ -36,19 +32,24 @@ export default function Events() { if (index > 0) { const lastDate = prevData[prevData.length - 1].start_time; const pagedParams = reviewSearchParams - ? { before: lastDate, after: after, limit: API_LIMIT } + ? { before: lastDate, after: timeRange.after, limit: API_LIMIT } : { ...reviewSearchParams, before: lastDate, - after: after, + after: timeRange.after, limit: API_LIMIT, }; return ["review", pagedParams]; } const params = reviewSearchParams - ? { limit: API_LIMIT, after: after } - : { ...reviewSearchParams, limit: API_LIMIT, after: after }; + ? { limit: API_LIMIT, before: timeRange.before, after: timeRange.after } + : { + ...reviewSearchParams, + limit: API_LIMIT, + before: timeRange.before, + after: timeRange.after, + }; return ["review", params]; }, [reviewSearchParams] @@ -60,7 +61,10 @@ export default function Events() { size, setSize, isValidating, - } = useSWRInfinite(getKey, reviewSegmentFetcher); + } = useSWRInfinite(getKey, reviewSegmentFetcher, { + revalidateOnFocus: false, + persistSize: true, + }); const isDone = useMemo( () => (reviewPages?.at(-1)?.length ?? 0) < API_LIMIT, @@ -186,7 +190,7 @@ export default function Events() { setSize(size + 1)} diff --git a/web/src/views/events/DesktopEventView.tsx b/web/src/views/events/DesktopEventView.tsx index fd6142131..906cc8986 100644 --- a/web/src/views/events/DesktopEventView.tsx +++ b/web/src/views/events/DesktopEventView.tsx @@ -20,7 +20,7 @@ import useSWR from "swr"; type DesktopEventViewProps = { reviewPages?: ReviewSegment[][]; relevantPreviews?: Preview[]; - timeRange: [number, number]; + timeRange: { before: number; after: number }; reachedEnd: boolean; isValidating: boolean; loadNextPage: () => void; @@ -262,20 +262,18 @@ export default function DesktopEventView({ )}
- {timeRange[1] != 0 && ( - - )} +
);