Files
mamad-app/lib/api-wrapper.ts

38 lines
1008 B
TypeScript

// Utility to handle API calls in both dev and production
export async function apiCall(endpoint: string, options: RequestInit = {}) {
const baseUrl = typeof window !== "undefined" ? window.location.origin : ""
const url = `${baseUrl}${endpoint}`
const defaultOptions: RequestInit = {
headers: {
"Content-Type": "application/json",
"Cache-Control": "no-cache",
},
...options,
}
try {
const response = await fetch(url, defaultOptions)
if (!response.ok) {
throw new Error(`API call failed: ${response.status} ${response.statusText}`)
}
const text = await response.text()
if (!text) {
return null
}
try {
return JSON.parse(text)
} catch (parseError) {
console.error("JSON parse error:", parseError, "Response text:", text)
throw new Error("Invalid JSON response")
}
} catch (error) {
console.error(`API call to ${endpoint} failed:`, error)
throw error
}
}