mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-22 11:17:05 +02:00
43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
'use client';
|
|
|
|
import { merge } from 'lodash';
|
|
import { create } from 'zustand';
|
|
import { persist } from 'zustand/middleware';
|
|
import { Region } from '../constants/regions';
|
|
import { Stat } from '../core/blitz/generateStats';
|
|
import { createNextSafeStore } from '../core/zustand/createNextSafeStore';
|
|
import { IndividualTankStats } from '../types/tanksStats';
|
|
|
|
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 { Provider, use, useMutation, useStore } = createNextSafeStore(
|
|
() =>
|
|
create<Session>()(
|
|
persist(
|
|
(set) => ({
|
|
columns: ['battles', 'winrate', 'wn8', 'averageDamage'],
|
|
tracking: false,
|
|
}),
|
|
{ name: 'session-2', merge: (a, b) => merge(b, a) },
|
|
),
|
|
),
|
|
);
|