|
1 | 1 | import {type DatasetsResponse} from '@sanity/client' |
2 | | -import { |
3 | | - getDatasetsState, |
4 | | - type ProjectHandle, |
5 | | - resolveDatasets, |
6 | | - type SanityInstance, |
7 | | - type StateSource, |
8 | | -} from '@sanity/sdk' |
9 | | -import {identity} from 'rxjs' |
| 2 | +import {getDatasetsState} from '@sanity/sdk' |
| 3 | +import {useMemo} from 'react' |
10 | 4 |
|
11 | | -import {createStateSourceHook} from '../helpers/createStateSourceHook' |
| 5 | +import {useSanityInstance} from '../context/useSanityInstance' |
| 6 | +import {useStoreState} from '../helpers/useStoreState' |
12 | 7 |
|
13 | 8 | type UseDatasets = { |
14 | 9 | /** |
@@ -39,14 +34,10 @@ type UseDatasets = { |
39 | 34 | * @public |
40 | 35 | * @function |
41 | 36 | */ |
42 | | -export const useDatasets: UseDatasets = createStateSourceHook({ |
43 | | - getState: getDatasetsState as ( |
44 | | - instance: SanityInstance, |
45 | | - projectHandle?: ProjectHandle, |
46 | | - ) => StateSource<DatasetsResponse>, |
47 | | - shouldSuspend: (instance, projectHandle?: ProjectHandle) => |
48 | | - // remove `undefined` since we're suspending when that is the case |
49 | | - getDatasetsState(instance, projectHandle).getCurrent() === undefined, |
50 | | - suspender: resolveDatasets, |
51 | | - getConfig: identity as (projectHandle?: ProjectHandle) => ProjectHandle, |
52 | | -}) |
| 37 | +export const useDatasets: UseDatasets = () => { |
| 38 | + const instance = useSanityInstance() |
| 39 | + const {projectId} = instance.config |
| 40 | + if (!projectId) throw new Error('useDatasets must be configured with projectId') |
| 41 | + const state = useMemo(() => getDatasetsState(instance, {projectId}), [instance, projectId]) |
| 42 | + return useStoreState(state) |
| 43 | +} |
0 commit comments