Skip to content

Commit 9da634e

Browse files
authored
chore(core): single addon dataset context (#7432)
1 parent 58863af commit 9da634e

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

packages/sanity/src/core/studio/addonDataset/AddonDatasetProvider.tsx

+15-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {type SanityClient} from '@sanity/client'
2-
import {useCallback, useEffect, useMemo, useState} from 'react'
2+
import {useCallback, useContext, useEffect, useMemo, useState} from 'react'
33
import {AddonDatasetContext} from 'sanity/_singletons'
44

55
import {useClient} from '../../hooks'
@@ -13,13 +13,7 @@ interface AddonDatasetSetupProviderProps {
1313
children: React.ReactNode
1414
}
1515

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) {
2317
const {children} = props
2418
const {dataset, projectId} = useWorkspace()
2519
const originalClient = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)
@@ -134,3 +128,16 @@ export function AddonDatasetProvider(props: AddonDatasetSetupProviderProps) {
134128

135129
return <AddonDatasetContext.Provider value={ctxValue}>{children}</AddonDatasetContext.Provider>
136130
}
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

Comments
 (0)