From b3a9f0889e803104ff511b819bd33ff5847551f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Mon, 1 Sep 2025 19:16:36 -0500 Subject: [PATCH] feat: upgrade Session --- packages/varuna/src/index.ts | 2 +- .../src/pages/[...locale]/session/_index.tsx | 89 +++++++++---------- packages/website/src/stores/session.ts | 33 +++---- 3 files changed, 57 insertions(+), 67 deletions(-) diff --git a/packages/varuna/src/index.ts b/packages/varuna/src/index.ts index 5c29a29a6..9ac5fa06d 100644 --- a/packages/varuna/src/index.ts +++ b/packages/varuna/src/index.ts @@ -23,7 +23,7 @@ export class Varuna { private initialize(initial: Type) { let data = initial; - if (this.persistence) { + if (this.persistence && typeof localStorage !== "undefined") { const dehydrated = localStorage.getItem(this.persistence); if (dehydrated) { diff --git a/packages/website/src/pages/[...locale]/session/_index.tsx b/packages/website/src/pages/[...locale]/session/_index.tsx index e3e1fa1be..8ab04b046 100644 --- a/packages/website/src/pages/[...locale]/session/_index.tsx +++ b/packages/website/src/pages/[...locale]/session/_index.tsx @@ -12,13 +12,13 @@ import { idToRegion, searchPlayersAcrossRegions, sumCompositeStats, -} from '@blitzkit/core'; -import { literals } from '@blitzkit/i18n'; +} from "@blitzkit/core"; +import { literals } from "@blitzkit/i18n"; import { ArrowDownIcon, MagnifyingGlassIcon, PlusIcon, -} from '@radix-ui/react-icons'; +} from "@radix-ui/react-icons"; import { AlertDialog, Button, @@ -30,21 +30,21 @@ import { Table, Text, TextField, -} from '@radix-ui/themes'; -import { debounce } from 'lodash-es'; -import { useEffect, useMemo, useRef, useState } from 'react'; -import { PageWrapper } from '../../../components/PageWrapper'; -import { StickyRowHeaderCell } from '../../../components/StickyRowHeaderCell'; -import { StickyTableRoot } from '../../../components/StickyTableRoot'; -import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell'; -import { awaitableAverageDefinitions } from '../../../core/awaitables/averageDefinitions'; -import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions'; +} from "@radix-ui/themes"; +import { debounce } from "lodash-es"; +import { useEffect, useMemo, useRef, useState } from "react"; +import { PageWrapper } from "../../../components/PageWrapper"; +import { StickyRowHeaderCell } from "../../../components/StickyRowHeaderCell"; +import { StickyTableRoot } from "../../../components/StickyTableRoot"; +import { TankRowHeaderCell } from "../../../components/TankRowHeaderCell"; +import { awaitableAverageDefinitions } from "../../../core/awaitables/averageDefinitions"; +import { awaitableTankDefinitions } from "../../../core/awaitables/tankDefinitions"; import { type LocaleAcceptorProps, LocaleProvider, useLocale, -} from '../../../hooks/useLocale'; -import { Session, type SessionTracking } from '../../../stores/session'; +} from "../../../hooks/useLocale"; +import { Session, type SessionTracking } from "../../../stores/session"; const [tankDefinitions, averageDefinitions] = await Promise.all([ awaitableTankDefinitions, @@ -54,9 +54,7 @@ const [tankDefinitions, averageDefinitions] = await Promise.all([ export function Page({ locale }: LocaleAcceptorProps) { return ( - - - + ); } @@ -70,9 +68,8 @@ function Content() { useState(false); const input = useRef(null); const session = Session.use(); - const mutateSession = Session.useMutation(); const [tankStatsB, setTankStatsB] = useState( - null, + null ); const [accountInfo, setAccountInfo] = useState< IndividualAccountInfo | null | undefined @@ -84,7 +81,7 @@ function Content() { if (!id) return setAccountInfo(null); setAccountInfo( - session.tracking ? await getAccountInfo(idToRegion(id), id) : null, + session.tracking ? await getAccountInfo(idToRegion(id), id) : null ); })(); }, [session.tracking && session.player.id]); @@ -98,20 +95,20 @@ function Content() { const average = averageDefinitions.averages[tank.id]; const composite = compositeStats( { ...entry.all, battle_life_time: entry.battle_life_time }, - average?.mu, + average?.mu ); return { tank, composite }; }) : undefined, - [session.tracking && session.player, tankStatsB], + [session.tracking && session.player, tankStatsB] ); const total = useMemo( () => delta ? sumCompositeStats(delta.map(({ composite }) => composite)) : undefined, - [delta], + [delta] ); const search = debounce(async () => { if (!input.current) return; @@ -131,7 +128,8 @@ function Content() { } setShowSearch(false); - mutateSession((draft) => { + + Session.mutate((draft) => { if (!input.current) return; draft.tracking = true; @@ -152,7 +150,7 @@ function Content() { const tankStats = await getTankStats( idToRegion(session.player.id), - session.player.id, + session.player.id ); setTankStatsB(tankStats); } @@ -206,8 +204,8 @@ function Content() { variant="classic" size="3" style={{ - position: 'relative', - width: '75vw', + position: "relative", + width: "75vw", maxWidth: 480, }} ref={input} @@ -272,7 +270,7 @@ function Content() { { const stats = await getTankStats( session.player.region, - session.player.id, + session.player.id ); if (stats === null) { @@ -304,7 +302,7 @@ function Content() { return; } - mutateSession((draft) => { + Session.mutate((draft) => { (draft as SessionTracking).player.stats = stats; }); }} @@ -313,7 +311,7 @@ function Content() {