-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
/
dataProvider.tsx
36 lines (33 loc) · 1.28 KB
/
dataProvider.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import fakeRestProvider from 'ra-data-fakerest';
import { cacheDataProviderProxy } from 'react-admin';
import data from './data';
import addUploadFeature from './addUploadFeature';
const dataProvider = fakeRestProvider(data, true);
const uploadCapableDataProvider = addUploadFeature(dataProvider);
const sometimesFailsDataProvider = new Proxy(uploadCapableDataProvider, {
get: (target, name) => (resource, params) => {
// add rejection by type or resource here for tests, e.g.
// if (name === 'delete' && resource === 'posts') {
// return Promise.reject(new Error('deletion error'));
// }
if (
resource === 'posts' &&
params.data &&
params.data.title === 'f00bar'
) {
return Promise.reject(new Error('this title cannot be used'));
}
return uploadCapableDataProvider[name](resource, params);
},
});
const delayedDataProvider = new Proxy(sometimesFailsDataProvider, {
get: (target, name) => (resource, params) =>
new Promise(resolve =>
setTimeout(
() =>
resolve(sometimesFailsDataProvider[name](resource, params)),
300
)
),
});
export default cacheDataProviderProxy(delayedDataProvider);