1
1
import { type SanityClient } from '@sanity/client'
2
- import { useCallback , useEffect , useMemo , useState } from 'react'
2
+ import { useCallback , useContext , useEffect , useMemo , useState } from 'react'
3
3
import { AddonDatasetContext } from 'sanity/_singletons'
4
4
5
5
import { useClient } from '../../hooks'
@@ -13,13 +13,7 @@ interface AddonDatasetSetupProviderProps {
13
13
children : React . ReactNode
14
14
}
15
15
16
- /**
17
- * This provider sets the addon dataset client, currently called `comments` dataset.
18
- * It also exposes a `createAddonDataset` function that can be used to create the addon dataset if it does not exist.
19
- * @beta
20
- * @hidden
21
- */
22
- export function AddonDatasetProvider ( props : AddonDatasetSetupProviderProps ) {
16
+ function AddonDatasetProviderInner ( props : AddonDatasetSetupProviderProps ) {
23
17
const { children} = props
24
18
const { dataset, projectId} = useWorkspace ( )
25
19
const originalClient = useClient ( DEFAULT_STUDIO_CLIENT_OPTIONS )
@@ -134,3 +128,16 @@ export function AddonDatasetProvider(props: AddonDatasetSetupProviderProps) {
134
128
135
129
return < AddonDatasetContext . Provider value = { ctxValue } > { children } </ AddonDatasetContext . Provider >
136
130
}
131
+
132
+ /**
133
+ * This provider sets the addon dataset client, currently called `comments` dataset.
134
+ * It also exposes a `createAddonDataset` function that can be used to create the addon dataset if it does not exist.
135
+ * @beta
136
+ * @hidden
137
+ */
138
+ export function AddonDatasetProvider ( props : AddonDatasetSetupProviderProps ) {
139
+ const context = useContext ( AddonDatasetContext )
140
+ // Avoid mounting the provider if it's already provided by a parent
141
+ if ( context ) return props . children
142
+ return < AddonDatasetProviderInner { ...props } />
143
+ }
0 commit comments