Skip to content

Commit bd7d02d

Browse files
authored
feat: allow factory function for customClient (#219)
* feat: allow factory function for customClient * docs: wording * chore: use runWithContext
1 parent e244648 commit bd7d02d

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

docs/content/2.guides/2.advanced/1.custom-client.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@ description: ''
55

66
# Custom Client
77

8-
You can make the module use your own [`@prismicio/client`](https://prismic.io/docs/technical-reference/prismicio-client?utm_campaign=devexp&utm_source=nuxt3doc&utm_medium=doc) instance. To do so, export it from `~/prismic/client` (`~/app/prismic/client` on Nuxt 3):
8+
You can make the module use your own [`@prismicio/client`](https://prismic.io/docs/technical-reference/prismicio-client?utm_campaign=devexp&utm_source=nuxt3doc&utm_medium=doc) instance. To do so, export it from `~/prismic/client` (`~/app/prismic/client` on Nuxt 3), it can be either a factory function or the custom client:
99

1010
```javascript [~/prismic/client.[jt]s]
1111
import { createClient } from '@prismicio/client'
1212

13+
export default () => {
14+
// this will be run inside by a nuxt plugin. So you will have access to the nuxt instance inside of it.
15+
return createClient('my-repository')
16+
}
17+
1318
export default createClient('my-repository')
1419
```
1520

src/runtime/plugin.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ import NuxtLink from '#app/components/nuxt-link'
66
import { defineNuxtPlugin, useCookie, useRequestEvent, onNuxtReady, refreshNuxtData, useHead, useRuntimeConfig, useRouter } from '#imports'
77

88
// @ts-expect-error vfs cannot be resolved here
9-
import client from '#build/prismic/proxy/client'
9+
import _client from '#build/prismic/proxy/client'
1010
// @ts-expect-error vfs cannot be resolved here
1111
import linkResolver from '#build/prismic/proxy/linkResolver'
1212
// @ts-expect-error vfs cannot be resolved here
1313
import richTextSerializer from '#build/prismic/proxy/richTextSerializer'
1414

15-
export default defineNuxtPlugin((nuxtApp) => {
15+
export default defineNuxtPlugin(async (nuxtApp) => {
1616
const options: PrismicModuleOptions = useRuntimeConfig().public.prismic
17+
const client = typeof _client === 'function' ? await nuxtApp.runWithContext(() => _client()) : _client
18+
1719
const endpoint = options.environment || options.endpoint || (client as Client | undefined)?.endpoint || ''
1820

1921
const prismicPlugin = createPrismic({

0 commit comments

Comments
 (0)