mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: removed swr caching
This commit is contained in:
1 parent
9e6343a111
commit
c742c0725d
3 files changed
+31
-24
No files matched your search
@@ -13,10 +13,9 @@ import {
|
||||
import { produce } from 'immer';
|
||||
import { debounce, range } from 'lodash';
|
||||
import { ChangeEvent, useEffect, useRef, useState } from 'react';
|
||||
import useSWR from 'swr';
|
||||
import { create } from 'zustand';
|
||||
import { BlitzkriegRatingsLeaderboardEntry } from '../../../../scripts/buildRatingsLeaderboard';
|
||||
import { RatingsPlayer } from '../../../commands/ratings';
|
||||
import { RatingsInfo, RatingsPlayer } from '../../../commands/ratings';
|
||||
import * as Leaderboard from '../../../components/Leaderboard';
|
||||
import PageWrapper from '../../../components/PageWrapper';
|
||||
import { LEAGUES } from '../../../constants/leagues';
|
||||
@@ -50,6 +49,7 @@ type PlayersCache = Record<
|
||||
Region,
|
||||
Record<number, Record<number, BlitzkriegRatingsLeaderboardEntry>>
|
||||
>;
|
||||
type InfoCache = Record<Region, Record<number, RatingsInfo | undefined>>;
|
||||
|
||||
const useNameCache = create<NameCache>(() => ({
|
||||
asia: {},
|
||||
@@ -61,6 +61,11 @@ const usePlayersCache = create<PlayersCache>(() => ({
|
||||
com: {},
|
||||
eu: {},
|
||||
}));
|
||||
const useInfoCache = create<InfoCache>(() => ({
|
||||
asia: {},
|
||||
com: {},
|
||||
eu: {},
|
||||
}));
|
||||
|
||||
export default function Page() {
|
||||
const [region, setRegion] = useState<Region>('com');
|
||||
@@ -80,17 +85,10 @@ export default function Page() {
|
||||
{ type: 'id'; id: number } | { type: 'position'; position: number } | null
|
||||
>(null);
|
||||
|
||||
const { data: ratingsInfo } = useSWR(
|
||||
`ratings-info-${region}-${season}`,
|
||||
() =>
|
||||
season === 0
|
||||
? getRatingsInfo(region)
|
||||
: getArchivedRatingsInfo(region, season),
|
||||
);
|
||||
const { data: latestArchivedSeasonNumber } = useSWR<number>(
|
||||
getArchivedLatestSeasonNumber.name,
|
||||
getArchivedLatestSeasonNumber,
|
||||
);
|
||||
const ratingsInfo = useInfoCache()[region][season];
|
||||
const [latestArchivedSeasonNumber, setLatestArchivedSeasonNumber] = useState<
|
||||
number | null
|
||||
>(null);
|
||||
|
||||
const names = useNameCache();
|
||||
const players = usePlayersCache();
|
||||
@@ -107,6 +105,18 @@ export default function Page() {
|
||||
// page reset on season or region change
|
||||
useEffect(() => {
|
||||
setPage(0);
|
||||
|
||||
(async () => {
|
||||
const newInfo =
|
||||
season === 0
|
||||
? await getRatingsInfo(region)
|
||||
: await getArchivedRatingsInfo(region, season);
|
||||
useInfoCache.setState(
|
||||
produce((draft: InfoCache) => {
|
||||
draft[region][season] = newInfo;
|
||||
}),
|
||||
);
|
||||
})();
|
||||
}, [season, region]);
|
||||
// initial leagues caching for current season
|
||||
useEffect(() => {
|
||||
@@ -235,6 +245,12 @@ export default function Page() {
|
||||
ratingsInfo?.detail,
|
||||
players[region][season] !== undefined && 0 in players[region][season],
|
||||
]);
|
||||
// latest archived season number caching
|
||||
useEffect(() => {}, [
|
||||
getArchivedLatestSeasonNumber().then((result) => {
|
||||
setLatestArchivedSeasonNumber(result);
|
||||
}),
|
||||
]);
|
||||
|
||||
async function cacheNeighbors(
|
||||
id: number,
|
||||
|
||||
Reference in new issue
Block a user