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 { useAnalytics } from '../Hooks/useAnalytics';
|
||||||
import {
|
import {
|
||||||
InitialGameSettings,
|
InitialGameSettings,
|
||||||
InitialGameSettingsSchema,
|
initialGameSettingsSchema,
|
||||||
|
PreStartMode,
|
||||||
Settings,
|
Settings,
|
||||||
|
settingsSchema,
|
||||||
} from '../Types/Settings';
|
} from '../Types/Settings';
|
||||||
|
|
||||||
export const GlobalSettingsProvider = ({
|
export const GlobalSettingsProvider = ({
|
||||||
@@ -51,15 +53,18 @@ export const GlobalSettingsProvider = ({
|
|||||||
savedGameSettings ? JSON.parse(savedGameSettings) : null
|
savedGameSettings ? JSON.parse(savedGameSettings) : null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const parsedSettings = settingsSchema.safeParse(
|
||||||
|
JSON.parse(savedSettings ?? '')
|
||||||
|
);
|
||||||
const [settings, setSettings] = useState<Settings>(
|
const [settings, setSettings] = useState<Settings>(
|
||||||
savedSettings
|
parsedSettings.success
|
||||||
? JSON.parse(savedSettings)
|
? parsedSettings.data
|
||||||
: {
|
: {
|
||||||
goFullscreenOnStart: true,
|
goFullscreenOnStart: true,
|
||||||
keepAwake: true,
|
keepAwake: true,
|
||||||
showStartingPlayer: true,
|
showStartingPlayer: true,
|
||||||
showPlayerMenuCog: true,
|
showPlayerMenuCog: true,
|
||||||
useRandomStartingPlayerInterval: false,
|
preStartMode: PreStartMode.None,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -89,7 +94,7 @@ export const GlobalSettingsProvider = ({
|
|||||||
|
|
||||||
//parse existing game settings with zod schema
|
//parse existing game settings with zod schema
|
||||||
const parsedInitialGameSettings =
|
const parsedInitialGameSettings =
|
||||||
InitialGameSettingsSchema.safeParse(initialGameSettings);
|
initialGameSettingsSchema.safeParse(initialGameSettings);
|
||||||
|
|
||||||
if (!parsedInitialGameSettings.success) {
|
if (!parsedInitialGameSettings.success) {
|
||||||
removeLocalStorage();
|
removeLocalStorage();
|
||||||
|
|||||||
@@ -34,10 +34,18 @@ export type InitialGameSettings = {
|
|||||||
orientation: Orientation;
|
orientation: Orientation;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const InitialGameSettingsSchema = z.object({
|
export const initialGameSettingsSchema = z.object({
|
||||||
startingLifeTotal: z.number().min(1).max(200).default(20),
|
startingLifeTotal: z.number().min(1).max(200).default(20),
|
||||||
useCommanderDamage: z.boolean().default(false),
|
useCommanderDamage: z.boolean().default(false),
|
||||||
gameFormat: z.nativeEnum(GameFormat).optional(),
|
gameFormat: z.nativeEnum(GameFormat).optional(),
|
||||||
numberOfPlayers: z.number().min(1).max(6).default(2),
|
numberOfPlayers: z.number().min(1).max(6).default(2),
|
||||||
orientation: z.nativeEnum(Orientation).default(Orientation.Landscape),
|
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