From 06aabf7f8c5f3f4b6ebea6e016a60ec9f4c1dd40 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sat, 7 Feb 2026 21:50:27 +0100 Subject: [PATCH] Live run updates --- src/app/run/page.tsx | 4 ++-- src/hook/use-action.ts | 26 ++++++++++++++++++++++++++ src/modules/live-run/actions.ts | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/app/run/page.tsx b/src/app/run/page.tsx index e56ed70..8daf170 100644 --- a/src/app/run/page.tsx +++ b/src/app/run/page.tsx @@ -6,13 +6,13 @@ import RunChat, { ChatMessage } from "./components/RunChat"; import { FileTree } from "./components/FileTree"; import { File } from "lucide-react"; import Editor from "./components/Editor"; -import useAction from "@/hook/use-action"; +import useAction, { useActionInterval } from "@/hook/use-action"; import { getLiveRun } from "@/modules/live-run/actions"; import ProblemCard from "../problems/components/ProblemCard"; import ProfileCard from "./components/ProfileCard"; export default function Run() { - const [runInfo] = useAction(getLiveRun); + const [runInfo] = useActionInterval(getLiveRun, 1000); const chatMessages: ChatMessage[] = [ { user: "Alice", message: "Nice split!", time: "1:53" }, diff --git a/src/hook/use-action.ts b/src/hook/use-action.ts index 0f7468a..4df2ca0 100644 --- a/src/hook/use-action.ts +++ b/src/hook/use-action.ts @@ -17,3 +17,29 @@ export default function useAction( return [value, loaded, error]; } + +export function useActionInterval( + action: () => Promise, + interval: number, + dependencies = [], +): [T | null, boolean, Error | null] { + const [value, setValue] = useState(null); + const [loaded, setLoaded] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + const f = () => + action() + .then(setValue) + .catch(setError) + .finally(() => setLoaded(true)); + + f(); + + const inv = setInterval(f, interval); + + return () => clearInterval(inv); + }, dependencies); + + return [value, loaded, error]; +} diff --git a/src/modules/live-run/actions.ts b/src/modules/live-run/actions.ts index 7530f2b..c25967c 100644 --- a/src/modules/live-run/actions.ts +++ b/src/modules/live-run/actions.ts @@ -54,7 +54,7 @@ export async function getLiveRun(): Promise { return { id: "0", username: "selimaj", - start: new Date().getTime(), + start: 1770497350654, views: 230, problem: "solve", category: "any%",