sarlink-portal/utils/tryCatch.ts
i701 6365a701ba
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 1m39s
feat: enhance error handling and improve API response management across components
2025-04-14 01:05:07 +05:00

39 lines
886 B
TypeScript

export async function tryCatch<T, E = Error>(promise: T | Promise<T>) {
try {
const data = await promise;
return [null, data] as const;
} catch (error) {
return [error as E, null] as const;
}
}
export async function handleApiResponse<T>(
response: Response,
fnName?: string,
) {
const responseData = await response.json();
if (response.status === 401) {
throw new Error("UNAUTHORIZED");
}
if (response.status === 403) {
throw new Error(
responseData.message ||
"Forbidden; you do not have permission to access this resource.",
);
}
if (response.status === 429) {
throw new Error(
responseData.message || "Too many requests; please try again later.",
);
}
if (!response.ok) {
console.log(`API Error Response from ${fnName}:`, responseData);
throw new Error(responseData.message || "Something went wrong.");
}
return responseData as T;
}