feat: cc account tracking

This commit is contained in:
TrèsAbhi committed 2024-04-28 18:43:12 -05:00
1 parent 6ae86a7a70
commit d2b18360ed
5 files changed
+260 -282

No files matched your search

+12
View File
@@ -1,11 +1,19 @@
import { produce } from 'immer';
import { merge } from 'lodash';
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
interface Login {
id: number;
token: string;
expiresAt: number;
}
export interface App {
devBuildAgreementTime: number;
developerMode: boolean;
darkMode: boolean;
login?: Login;
}
export const useApp = create<App>()(
@@ -18,3 +26,7 @@ export const useApp = create<App>()(
{ name: 'app', merge: (a, b) => merge(b, a) },
),
);
export function mutateApp(recipe: (draft: App) => void) {
useApp.setState(produce(recipe));
}
+16 -42
View File
@@ -2,56 +2,30 @@ import { produce } from 'immer';
import { merge } from 'lodash';
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import { CustomColumnDisplay } from '../app/tools/session/components/CustomColumn';
import { AccentColor, GrayColor } from '../constants/radixColors';
import { Region } from '../constants/regions';
import { NormalizedTankStats } from '../types/tanksStats';
type Session = (
| {
isTracking: false;
}
| {
isTracking: true;
interface SessionBase {}
region: Region;
id: number;
nickname: string;
tankStats: NormalizedTankStats;
time: number;
}
) & {
title: string;
resetPrompt: boolean;
embedPrompt: boolean;
customColumns: {
display: CustomColumnDisplay;
showDelta: boolean;
}[] & { length: 4 };
showTotal: boolean;
showCareer: boolean;
color: AccentColor | GrayColor;
};
export interface SessionTracking extends SessionBase {
tracking: true;
player: {
id: number;
region: Region;
};
}
interface SessionNotTracking extends SessionBase {
tracking: false;
}
type Session = SessionTracking | SessionNotTracking;
export const useSession = create<Session>()(
persist(
(set) => ({
title: 'Untitled session',
isTracking: false,
resetPrompt: true,
showTotal: true,
showCareer: true,
embedPrompt: true,
customColumns: [
{ display: 'battles', showDelta: false },
{ display: 'winrate', showDelta: true },
{ display: 'wn8', showDelta: false },
{ display: 'damage', showDelta: true },
],
color: 'slate',
tracking: false,
}),
{ name: 'session', merge: (a, b) => merge(b, a) },
{ name: 'session-2', merge: (a, b) => merge(b, a) },
),
);