Harden gameplay timing and map loading
This commit is contained in:
@@ -11,12 +11,22 @@ export function Results({ id }: { id: string }) {
|
||||
[error, setError] = useState("");
|
||||
const router = useRouter();
|
||||
useEffect(() => {
|
||||
let disposed = false;
|
||||
setSession(null);
|
||||
setSelected(0);
|
||||
setError("");
|
||||
api<SessionView>("sessions/" + id)
|
||||
.then((s) => {
|
||||
if (disposed) return;
|
||||
if (s.round < 5) router.replace("/play/" + id);
|
||||
else setSession(s);
|
||||
})
|
||||
.catch((e) => setError(e.message));
|
||||
.catch((e) => {
|
||||
if (!disposed) setError(e.message);
|
||||
});
|
||||
return () => {
|
||||
disposed = true;
|
||||
};
|
||||
}, [id, router]);
|
||||
if (error) return <p role="alert">{error}</p>;
|
||||
if (!session) return <p className="muted">Unpacking your expedition…</p>;
|
||||
@@ -52,6 +62,7 @@ export function Results({ id }: { id: string }) {
|
||||
<button
|
||||
key={i}
|
||||
className={i === selected ? "active" : ""}
|
||||
aria-pressed={i === selected}
|
||||
onClick={() => setSelected(i)}
|
||||
>
|
||||
Round {i + 1}
|
||||
@@ -85,7 +96,7 @@ export function Results({ id }: { id: string }) {
|
||||
Another adventure →
|
||||
</Link>
|
||||
<Link className="button" href="/dashboard">
|
||||
My expeditions
|
||||
My maps
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user