Skip to content

Commit 3aab6dc

Browse files
committed
Fix demo
1 parent 6bd73ed commit 3aab6dc

File tree

4 files changed

+29
-17
lines changed

4 files changed

+29
-17
lines changed

examples/demo/src/dataProvider/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { DataProvider } from 'react-admin';
2-
import fakeServerFactory from '../fakeServer';
32

43
export default (type: string) => {
54
// The fake servers require to generate data, which can take some time.
@@ -29,7 +28,6 @@ export default (type: string) => {
2928
};
3029

3130
const getDataProvider = async (type: string): Promise<DataProvider> => {
32-
await fakeServerFactory(process.env.REACT_APP_DATA_PROVIDER || '');
3331
/**
3432
* This demo can work with either a fake REST server, or a fake GraphQL server.
3533
*
Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1-
import { http } from 'msw';
2-
import { setupWorker } from 'msw/browser';
31
import JsonGraphqlServer from 'json-graphql-server';
42
import generateData from 'data-generator-retail';
3+
import { HttpResponse, HttpResponseResolver } from 'msw';
54

6-
const data = generateData();
7-
const restServer = JsonGraphqlServer({ data });
8-
const handler = restServer.getHandler();
5+
export default (): HttpResponseResolver => {
6+
const data = generateData();
7+
const server = JsonGraphqlServer({ data });
8+
const graphqlHandler = server.getHandler();
99

10-
export const worker = setupWorker(http.all(/http:\/\/localhost:4000/, handler));
10+
// Temporary workaround for MSW's graphql handler because json-graphql-server is not yet compatible with MSW
11+
const handler: HttpResponseResolver = async ({ request }) => {
12+
const body = await request.text();
13+
const result = await graphqlHandler({
14+
requestBody: body,
15+
});
1116

12-
export default () => worker;
17+
return HttpResponse.json(JSON.parse(result.body));
18+
};
19+
20+
return handler;
21+
};
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
// only install the mocks once
22
// this is necessary with react@18 in StrictMode
33
let fakeServer: any;
4+
import { http } from 'msw';
5+
import { setupWorker } from 'msw/browser';
46

5-
export default (type: string) => {
7+
export default async (type: string) => {
68
if (!fakeServer) {
79
switch (type) {
810
case 'graphql':
9-
fakeServer = import('./graphql').then(factory =>
11+
fakeServer = await import('./graphql').then(factory =>
1012
factory.default()
1113
);
1214
break;
1315
default:
14-
fakeServer = import('./rest').then(factory =>
16+
fakeServer = await import('./rest').then(factory =>
1517
factory.default()
1618
);
1719
}
1820
}
19-
return fakeServer;
21+
const worker = setupWorker(http.all(/http:\/\/localhost:4000/, fakeServer));
22+
return worker;
2023
};

examples/demo/src/index.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import { createRoot } from 'react-dom/client';
22

33
import App from './App';
4-
import { worker } from './fakeServer/graphql';
4+
import fakeServerWorker from './fakeServer';
55

66
const container = document.getElementById('root');
77
if (!container) {
88
throw new Error('No container found');
99
}
1010
const root = createRoot(container);
1111

12-
worker.start({ onUnhandledRequest: 'bypass' }).then(() => {
13-
root.render(<App />);
14-
});
12+
fakeServerWorker(process.env.REACT_APP_DATA_PROVIDER ?? '')
13+
.then(worker => worker.start({ onUnhandledRequest: 'bypass' }))
14+
.then(() => {
15+
root.render(<App />);
16+
});

0 commit comments

Comments
 (0)