feat: validate api response against zod schema

This commit is contained in:
Stavros
2025-05-20 17:12:39 +03:00
parent 02f83baa4d
commit e8190456c3
3 changed files with 29 additions and 5 deletions

View File

@@ -1,4 +1,7 @@
import { AppContextSchema } from "@/schemas/app-context-schema";
import {
appContextSchema,
AppContextSchema,
} from "@/schemas/app-context-schema";
import { createContext, useContext } from "react";
import { useSuspenseQuery } from "@tanstack/react-query";
import axios from "axios";
@@ -19,7 +22,15 @@ export const AppContextProvider = ({
throw error;
}
return <AppContext.Provider value={data}>{children}</AppContext.Provider>;
const validated = appContextSchema.safeParse(data);
if (validated.success === false) {
throw validated.error;
}
return (
<AppContext.Provider value={validated.data}>{children}</AppContext.Provider>
);
};
export const useAppContext = () => {

View File

@@ -1,4 +1,7 @@
import { UserContextSchema } from "@/schemas/user-context-schema";
import {
userContextSchema,
UserContextSchema,
} from "@/schemas/user-context-schema";
import { createContext, useContext } from "react";
import { useSuspenseQuery } from "@tanstack/react-query";
import axios from "axios";
@@ -19,7 +22,17 @@ export const UserContextProvider = ({
throw error;
}
return <UserContext.Provider value={data}>{children}</UserContext.Provider>;
const validated = userContextSchema.safeParse(data);
if (validated.success === false) {
throw validated.error;
}
return (
<UserContext.Provider value={validated.data}>
{children}
</UserContext.Provider>
);
};
export const useUserContext = () => {

View File

@@ -34,7 +34,7 @@ type Config struct {
LoginTimeout int `mapstructure:"login-timeout"`
LoginMaxRetries int `mapstructure:"login-max-retries"`
FogotPasswordMessage string `mapstructure:"forgot-password-message" validate:"required"`
BackgroundImage string `mapstructure:"background-image" validate:"required"`
BackgroundImage string `mapstructure:"background-image" validate:"required,url"`
}
// Server configuration