mirror of
https://github.com/Vikeo/LifeTrinket.git
synced 2025-11-17 16:27:59 +00:00
parse settings before setting
This commit is contained in:
@@ -7,8 +7,10 @@ import {
|
||||
import { useAnalytics } from '../Hooks/useAnalytics';
|
||||
import {
|
||||
InitialGameSettings,
|
||||
InitialGameSettingsSchema,
|
||||
initialGameSettingsSchema,
|
||||
PreStartMode,
|
||||
Settings,
|
||||
settingsSchema,
|
||||
} from '../Types/Settings';
|
||||
|
||||
export const GlobalSettingsProvider = ({
|
||||
@@ -51,15 +53,18 @@ export const GlobalSettingsProvider = ({
|
||||
savedGameSettings ? JSON.parse(savedGameSettings) : null
|
||||
);
|
||||
|
||||
const parsedSettings = settingsSchema.safeParse(
|
||||
JSON.parse(savedSettings ?? '')
|
||||
);
|
||||
const [settings, setSettings] = useState<Settings>(
|
||||
savedSettings
|
||||
? JSON.parse(savedSettings)
|
||||
parsedSettings.success
|
||||
? parsedSettings.data
|
||||
: {
|
||||
goFullscreenOnStart: true,
|
||||
keepAwake: true,
|
||||
showStartingPlayer: true,
|
||||
showPlayerMenuCog: true,
|
||||
useRandomStartingPlayerInterval: false,
|
||||
preStartMode: PreStartMode.None,
|
||||
}
|
||||
);
|
||||
|
||||
@@ -89,7 +94,7 @@ export const GlobalSettingsProvider = ({
|
||||
|
||||
//parse existing game settings with zod schema
|
||||
const parsedInitialGameSettings =
|
||||
InitialGameSettingsSchema.safeParse(initialGameSettings);
|
||||
initialGameSettingsSchema.safeParse(initialGameSettings);
|
||||
|
||||
if (!parsedInitialGameSettings.success) {
|
||||
removeLocalStorage();
|
||||
|
||||
@@ -34,10 +34,18 @@ export type InitialGameSettings = {
|
||||
orientation: Orientation;
|
||||
};
|
||||
|
||||
export const InitialGameSettingsSchema = z.object({
|
||||
export const initialGameSettingsSchema = z.object({
|
||||
startingLifeTotal: z.number().min(1).max(200).default(20),
|
||||
useCommanderDamage: z.boolean().default(false),
|
||||
gameFormat: z.nativeEnum(GameFormat).optional(),
|
||||
numberOfPlayers: z.number().min(1).max(6).default(2),
|
||||
orientation: z.nativeEnum(Orientation).default(Orientation.Landscape),
|
||||
});
|
||||
|
||||
export const settingsSchema = z.object({
|
||||
keepAwake: z.boolean().default(true),
|
||||
showStartingPlayer: z.boolean().default(true),
|
||||
showPlayerMenuCog: z.boolean().default(true),
|
||||
goFullscreenOnStart: z.boolean().default(true),
|
||||
preStartMode: z.nativeEnum(PreStartMode).default(PreStartMode.None),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user