Centralizing data provider error management
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user