import { proxy } from "valtio"; import { JobSkillObject } from "~types"; const emptyJob: Job = { id: "-1", row: "", ml: false, order: 0, name: { en: "", ja: "", }, proficiency: { proficiency1: 0, proficiency2: 0, }, }; interface AppState { [key: string]: any; party: { id: string | undefined; editable: boolean; detailsVisible: boolean; name: string | undefined; description: string | undefined; job: Job; jobSkills: JobSkillObject; raid: Raid | undefined; element: number; extra: boolean; user: User | undefined; favorited: boolean; created_at: string; updated_at: string; }; grid: { weapons: { mainWeapon: GridWeapon | undefined; allWeapons: GridArray; }; summons: { mainSummon: GridSummon | undefined; friendSummon: GridSummon | undefined; allSummons: GridArray; }; characters: GridArray; }; search: { recents: { characters: Character[]; weapons: Weapon[]; summons: Summon[]; }; }; raids: Raid[]; jobs: Job[]; jobSkills: JobSkill[]; } export const initialAppState: AppState = { party: { id: undefined, editable: false, detailsVisible: false, name: undefined, description: undefined, job: emptyJob, jobSkills: { 0: undefined, 1: undefined, 2: undefined, 3: undefined, }, raid: undefined, element: 0, extra: false, user: undefined, favorited: false, created_at: new Date().toISOString(), updated_at: new Date().toISOString(), }, grid: { weapons: { mainWeapon: undefined, allWeapons: {}, }, summons: { mainSummon: undefined, friendSummon: undefined, allSummons: {}, }, characters: {}, }, search: { recents: { characters: [], weapons: [], summons: [], }, }, raids: [], jobs: [], jobSkills: [], }; export const appState = proxy(initialAppState);