mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: cc account tracking
This commit is contained in:
1 parent
6ae86a7a70
commit
d2b18360ed
5 files changed
+260
-282
No files matched your search
@@ -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
@@ -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) },
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
Reference in new issue
Block a user