diff --git a/gui/rpk-gui/src/providers/data-provider.tsx b/gui/rpk-gui/src/providers/data-provider.tsx index 0a4c459..e875cc1 100644 --- a/gui/rpk-gui/src/providers/data-provider.tsx +++ b/gui/rpk-gui/src/providers/data-provider.tsx @@ -2,6 +2,18 @@ import type { DataProvider, HttpError } from "@refinedev/core"; const API_URL = "/api/v1"; +function handleErrors(response: { status: number, statusText: string }) { + let message = response.statusText + if (response.status == 405) { + message = "Resource is not ready"; + } + const error: HttpError = { + message: message, + statusCode: response.status, + }; + return Promise.reject(error); +} + const dataProvider: DataProvider = { getOne: async ({ resource, id, meta }) => { if (id === "") { @@ -9,14 +21,7 @@ const dataProvider: DataProvider = { } const response = await fetch(`${API_URL}/${resource}/${id}`); if (response.status < 200 || response.status > 299) { - if (response.status == 405) { - const error: HttpError = { - message: "Resource is not ready", - statusCode: 405, - }; - return Promise.reject(error); - } - throw response; + return handleErrors(response); } const data = await response.json(); @@ -35,17 +40,10 @@ const dataProvider: DataProvider = { }); if (response.status < 200 || response.status > 299) { - if (response.status == 405) { - const error: HttpError = { - message: "Resource is not ready", - statusCode: 405, - }; - return Promise.reject(error); - } - throw response; + return handleErrors(response); } - const data = await response.json(); + const data = await response.json(); return { data }; }, getList: async ({ resource, pagination, filters, sorters, meta }) => { @@ -72,14 +70,7 @@ const dataProvider: DataProvider = { const response = await fetch(`${API_URL}/${resource}/?${params.toString()}`); if (response.status < 200 || response.status > 299) { - if (response.status == 405) { - const error: HttpError = { - message: "Resource is not ready", - statusCode: 405, - }; - return Promise.reject(error); - } - throw response; + return handleErrors(response); } const data = await response.json(); @@ -105,18 +96,10 @@ const dataProvider: DataProvider = { }); if (response.status < 200 || response.status > 299) { - if (response.status == 405) { - const error: HttpError = { - message: "Resource is not ready", - statusCode: 405, - }; - return Promise.reject(error); - } - throw response; + return handleErrors(response); } const data = await response.json(); - return { data }; }, deleteOne: async ({ resource, id, variables, meta }) => { @@ -125,21 +108,11 @@ const dataProvider: DataProvider = { }); if (response.status < 200 || response.status > 299) { - if (response.status == 405) { - const error: HttpError = { - message: "Resource is not ready", - statusCode: 405, - }; - return Promise.reject(error); - } - throw response; + return handleErrors(response); } const data = await response.json(); - - return { - data - }; + return { data }; }, getApiUrl: () => API_URL, // Optional methods: