Files
blitzkit/packages/website/src/stores/session.ts
T
2024-10-07 17:39:20 -05:00

38 lines
900 B
TypeScript

import type { IndividualTankStats, Region, Stat } from '@blitzkit/core';
import { merge } from 'lodash-es';
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import { createContextualStore } from '../core/zustand/createContextualStore';
interface SessionBase {
columns: Stat[];
}
export interface SessionTracking extends SessionBase {
tracking: true;
player: {
id: number;
region: Region;
since: number;
stats: IndividualTankStats[];
};
}
interface SessionNotTracking extends SessionBase {
tracking: false;
}
type Session = SessionTracking | SessionNotTracking;
export const Session = createContextualStore(() =>
create<Session>()(
persist(
(set) => ({
columns: ['battles', 'winrate', 'wn8', 'averageDamage'],
tracking: false,
}),
{ name: 'session-2', merge: (a, b) => merge(b, a) },
),
),
);