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";
|
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 = {
|
const dataProvider: DataProvider = {
|
||||||
getOne: async ({ resource, id, meta }) => {
|
getOne: async ({ resource, id, meta }) => {
|
||||||
if (id === "") {
|
if (id === "") {
|
||||||
@@ -9,14 +21,7 @@ const dataProvider: DataProvider = {
|
|||||||
}
|
}
|
||||||
const response = await fetch(`${API_URL}/${resource}/${id}`);
|
const response = await fetch(`${API_URL}/${resource}/${id}`);
|
||||||
if (response.status < 200 || response.status > 299) {
|
if (response.status < 200 || response.status > 299) {
|
||||||
if (response.status == 405) {
|
return handleErrors(response);
|
||||||
const error: HttpError = {
|
|
||||||
message: "Resource is not ready",
|
|
||||||
statusCode: 405,
|
|
||||||
};
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
throw response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
@@ -35,17 +40,10 @@ const dataProvider: DataProvider = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (response.status < 200 || response.status > 299) {
|
if (response.status < 200 || response.status > 299) {
|
||||||
if (response.status == 405) {
|
return handleErrors(response);
|
||||||
const error: HttpError = {
|
|
||||||
message: "Resource is not ready",
|
|
||||||
statusCode: 405,
|
|
||||||
};
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
throw response;
|
|
||||||
}
|
}
|
||||||
const data = await response.json();
|
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
return { data };
|
return { data };
|
||||||
},
|
},
|
||||||
getList: async ({ resource, pagination, filters, sorters, meta }) => {
|
getList: async ({ resource, pagination, filters, sorters, meta }) => {
|
||||||
@@ -72,14 +70,7 @@ const dataProvider: DataProvider = {
|
|||||||
const response = await fetch(`${API_URL}/${resource}/?${params.toString()}`);
|
const response = await fetch(`${API_URL}/${resource}/?${params.toString()}`);
|
||||||
|
|
||||||
if (response.status < 200 || response.status > 299) {
|
if (response.status < 200 || response.status > 299) {
|
||||||
if (response.status == 405) {
|
return handleErrors(response);
|
||||||
const error: HttpError = {
|
|
||||||
message: "Resource is not ready",
|
|
||||||
statusCode: 405,
|
|
||||||
};
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
throw response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
@@ -105,18 +96,10 @@ const dataProvider: DataProvider = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (response.status < 200 || response.status > 299) {
|
if (response.status < 200 || response.status > 299) {
|
||||||
if (response.status == 405) {
|
return handleErrors(response);
|
||||||
const error: HttpError = {
|
|
||||||
message: "Resource is not ready",
|
|
||||||
statusCode: 405,
|
|
||||||
};
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
throw response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|
||||||
return { data };
|
return { data };
|
||||||
},
|
},
|
||||||
deleteOne: async ({ resource, id, variables, meta }) => {
|
deleteOne: async ({ resource, id, variables, meta }) => {
|
||||||
@@ -125,21 +108,11 @@ const dataProvider: DataProvider = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (response.status < 200 || response.status > 299) {
|
if (response.status < 200 || response.status > 299) {
|
||||||
if (response.status == 405) {
|
return handleErrors(response);
|
||||||
const error: HttpError = {
|
|
||||||
message: "Resource is not ready",
|
|
||||||
statusCode: 405,
|
|
||||||
};
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
throw response;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
return { data };
|
||||||
return {
|
|
||||||
data
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
getApiUrl: () => API_URL,
|
getApiUrl: () => API_URL,
|
||||||
// Optional methods:
|
// Optional methods:
|
||||||
|
|||||||
Reference in New Issue
Block a user