Files
nguyencongpc_nextjs/src/components/common/MSWProvider.tsx

33 lines
978 B
TypeScript
Raw Normal View History

2026-03-13 13:54:45 +07:00
'use client';
import { useEffect, useState } from 'react';
2026-03-13 17:23:37 +07:00
import { MSWContext } from '@/contexts/MSWContext';
2026-03-13 13:54:45 +07:00
/**
* Khởi đng MSW browser worker trong development.
2026-03-13 17:23:37 +07:00
* Cung cấp trạng thái ready qua MSWContext đ các hook fetch
* (useApiData) tự chờ MSW sẵn sàng trước khi gọi API.
2026-03-13 13:54:45 +07:00
*/
const MSWProvider = ({ children }: { children: React.ReactNode }) => {
const [ready, setReady] = useState(process.env.NODE_ENV !== 'development');
useEffect(() => {
if (process.env.NODE_ENV !== 'development') return;
import('@/mocks/browser')
.then(({ worker }) =>
worker.start({
onUnhandledRequest: 'bypass',
quiet: true,
}),
)
.then(() => setReady(true))
.catch((err) => {
console.error('[MSW] Failed to start worker:', err);
2026-03-13 17:23:37 +07:00
setReady(true);
2026-03-13 13:54:45 +07:00
});
}, []);
2026-03-13 17:23:37 +07:00
return <MSWContext.Provider value={ready}>{children}</MSWContext.Provider>;
2026-03-13 13:54:45 +07:00
};
export default MSWProvider;