mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 11:39:50 +02:00
aliases
This commit is contained in:
1 parent
13cda7aec0
commit
b26c5137f3
53 files changed
+236
-932
No files matched your search
@@ -1,10 +1,11 @@
|
||||
import { alias } from "@blitzkit/core";
|
||||
import { useLoader } from "@react-three/fiber";
|
||||
import { Mesh, MeshStandardMaterial } from "three";
|
||||
import { GLTFLoader } from "three-stdlib";
|
||||
import { useDispose } from "./useDispose";
|
||||
|
||||
export function useModel(id: number) {
|
||||
const path = `/api/tanks/${id}/model.glb`;
|
||||
const path = alias("api", `/tanks/${id}/model.glb`);
|
||||
const gltf = useLoader(GLTFLoader, path);
|
||||
|
||||
useDispose(gltf, path);
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
import {
|
||||
unwrapBlitzkitResponse,
|
||||
type BlitzkitResponse,
|
||||
type TankVotes,
|
||||
} from '@blitzkit/core';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { App } from '../stores/app';
|
||||
|
||||
const cache: Record<string, Promise<TankVotes> | TankVotes> = {};
|
||||
|
||||
export function useTankVotes(id: number) {
|
||||
const [votes, setVotes] = useState<TankVotes | null>(null);
|
||||
const wargaming = App.use((state) => state.logins.wargaming);
|
||||
|
||||
useEffect(() => {
|
||||
if (!wargaming) return;
|
||||
|
||||
if (id in cache) {
|
||||
Promise.all([cache[id]]).then(([votes]) => setVotes(votes));
|
||||
} else {
|
||||
const cacheable = fetch(
|
||||
`/api/tank-voting/${id}/average${
|
||||
wargaming ? `?player=${wargaming.id}&token=${wargaming.token}` : ''
|
||||
}`,
|
||||
)
|
||||
.then(
|
||||
(response) => response.json() as Promise<BlitzkitResponse<TankVotes>>,
|
||||
)
|
||||
.then(unwrapBlitzkitResponse);
|
||||
cacheable.then(setVotes);
|
||||
cache[id] = cacheable;
|
||||
}
|
||||
}, [id, wargaming]);
|
||||
|
||||
return votes;
|
||||
}
|
||||
Reference in new issue
Block a user