Use ApiError type for proper error handling

This commit is contained in:
counterweight 2025-12-23 15:58:55 +01:00
parent 51a67a8140
commit f946fbf7b8
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C

View file

@ -3,7 +3,7 @@
import { useEffect, useState, useCallback, useMemo, ChangeEvent, CSSProperties } from "react"; import { useEffect, useState, useCallback, useMemo, ChangeEvent, CSSProperties } from "react";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import { Permission } from "../auth-context"; import { Permission } from "../auth-context";
import { api } from "../api"; import { api, ApiError } from "../api";
import { Header } from "../components/Header"; import { Header } from "../components/Header";
import { SatsDisplay } from "../components/SatsDisplay"; import { SatsDisplay } from "../components/SatsDisplay";
import { useRequireAuth } from "../hooks/useRequireAuth"; import { useRequireAuth } from "../hooks/useRequireAuth";
@ -269,14 +269,16 @@ export default function ExchangePage() {
router.push("/trades"); router.push("/trades");
} catch (err) { } catch (err) {
let errorMessage = "Failed to book trade"; let errorMessage = "Failed to book trade";
if (err instanceof Error) { if (err instanceof ApiError) {
// Check if it's an ApiError with detail in data // Extract detail from API error response
if ("data" in err && err.data && typeof err.data === "object") { if (err.data && typeof err.data === "object") {
const data = err.data as { detail?: string }; const data = err.data as { detail?: string };
errorMessage = data.detail || err.message; errorMessage = data.detail || err.message;
} else { } else {
errorMessage = err.message; errorMessage = err.message;
} }
} else if (err instanceof Error) {
errorMessage = err.message;
} }
setError(errorMessage); setError(errorMessage);