Live location tracking and playback for the game "manhunt"

Fix top-level await

bwc9876.dev 134abbba 30a75b56

verified
+11 -4
+11 -4
frontend/src/components/App.tsx
··· 1 1 import React from "react"; 2 + import useSWR from "swr"; 2 3 import { AppScreen, commands } from "@/bindings"; 3 4 import { useTauriEvent } from "@/lib/hooks"; 4 5 import { unwrapResult } from "@/lib/result"; ··· 22 23 } 23 24 } 24 25 25 - const startingScreen = unwrapResult(await commands.getCurrentScreen()); 26 - 27 26 export default function App() { 28 - const [screen, setScreen] = React.useState<AppScreen>(startingScreen); 27 + const { data: screen, mutate } = useSWR( 28 + "fetch-screen", 29 + async () => { 30 + return unwrapResult(await commands.getCurrentScreen()); 31 + }, 32 + { suspense: true, dedupingInterval: 100 } 33 + ); 29 34 30 - useTauriEvent("changeScreen", setScreen); 35 + useTauriEvent("changeScreen", (newScreen) => { 36 + mutate(newScreen); 37 + }); 31 38 32 39 return ( 33 40 <>