Files
sarlink-portal/utils/tryCatch.ts
i701 d2b281281f
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 11m49s
feat: implement add device functionality with validation and error handling; refactor related components for improved state management
2025-06-25 20:10:32 +05:00

40 lines
930 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) {
console.log('response data', responseData)
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;
}