schema generator error type doc

This commit is contained in:
Igor Loskutov
2025-09-03 09:04:40 -04:00
parent 1b22eabb3f
commit 611e258d96
4 changed files with 20 additions and 12 deletions

View File

@@ -92,7 +92,12 @@ export default function RoomsList() {
);
const [isEditing, setIsEditing] = useState(false);
const [editRoomId, setEditRoomId] = useState<string | null>(null);
const { loading, response, refetch } = useRoomList(PaginationPage(1));
const {
loading,
response,
refetch,
error: roomListError,
} = useRoomList(PaginationPage(1));
const [nameError, setNameError] = useState("");
const [linkCopied, setLinkCopied] = useState("");
const [selectedStreamId, setSelectedStreamId] = useState<number | null>(null);
@@ -114,6 +119,8 @@ export default function RoomsList() {
error: detailedEditedRoomError,
} = useRoomGet(editRoomId);
const error = roomListError || detailedEditedRoomError;
// room being edited, as fetched from the server
const editedRoom: typeof roomInitialState | null = useMemo(
() =>
@@ -359,6 +366,9 @@ export default function RoomsList() {
</Flex>
);
if (roomListError)
return <div>{`${roomListError.name}: ${roomListError.message}`}</div>;
return (
<Flex
flexDir="column"

View File

@@ -11,23 +11,14 @@ type RoomList = {
refetch: () => void;
};
type ValidationError = components["schemas"]["ValidationError"];
const formatValidationErrors = (errors: ValidationError[]) => {
return errors.map((error) => error.msg).join(", ");
};
// Wrapper to maintain backward compatibility
const useRoomList = (page: PaginationPage): RoomList => {
const { data, isLoading, error, refetch } = useRoomsList(page);
return {
response: data || null,
loading: isLoading,
error: error
? new Error(
error.detail ? formatValidationErrors(error.detail) : undefined,
)
? new Error(error.detail ? JSON.stringify(error.detail) : undefined)
: null,
refetch,
};

View File

@@ -29,6 +29,7 @@ const AuthContext = createContext<AuthContextType | undefined>(undefined);
export function AuthProvider({ children }: { children: React.ReactNode }) {
const { data: session, status, update } = useNextAuthSession();
const customSession = session ? assertExtendedTokenAndUserId(session) : null;
console.log("customSessioncustomSession", customSession);
const contextValue: AuthContextType = {
...(status === "loading" && !customSession

View File

@@ -3,9 +3,15 @@
import { $api } from "./apiClient";
import { useError } from "../(errors)/errorContext";
import { useQueryClient } from "@tanstack/react-query";
import type { components, paths } from "../reflector-api";
import type { components } from "../reflector-api";
import { useAuth } from "./AuthProvider";
/*
* XXX error types returned from the hooks are not always correct; declared types are ValidationError but real type could be string or any other
* this is either a limitation or incorrect usage of Python json schema generator
* or, limitation or incorrect usage of .d type generator from json schema
* */
const useAuthReady = () => {
const auth = useAuth();