Skip to content

Commit b32b056

Browse files
committed
feat(roadiz): add useRoadizFetch()
1 parent 0cfbb18 commit b32b056

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

composables/use-roadiz-fetch.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import type { NitroFetchOptions, NitroFetchRequest } from 'nitropack'
2+
3+
export function useRoadizFetch<DefaultR extends NitroFetchRequest = NitroFetchRequest>(
4+
options?: NitroFetchOptions<DefaultR>,
5+
) {
6+
return $fetch.create({
7+
onRequest(context) {
8+
/*
9+
* Add preview token to every request if preview mode is enabled.
10+
*/
11+
const { token, isActive } = useRoadizPreview()
12+
13+
if (isActive.value && token.value) {
14+
context.options.query = {
15+
...context.options.query,
16+
_preview: '1',
17+
}
18+
19+
context.options.headers = {
20+
...context.options.headers,
21+
Authorization: `Bearer ${token.value}`,
22+
}
23+
}
24+
/*
25+
* Add locale to every request if it is not a web response request.
26+
*/
27+
if (context.request.toString() !== '/web_response_by_path') {
28+
const { $i18n } = useNuxtApp()
29+
30+
context.options.query = {
31+
...context.options.query,
32+
_locale: $i18n?.locale.value || $i18n?.defaultLocale?.toString(),
33+
}
34+
}
35+
},
36+
onResponseError(context) {
37+
throw createError({
38+
statusCode: context.response.status,
39+
message: context.response.statusText,
40+
})
41+
},
42+
headers: {
43+
'accept-encoding': 'gzip, deflate',
44+
accept: 'application/ld+json',
45+
},
46+
baseURL: useApiUrl(),
47+
...options,
48+
})
49+
}

0 commit comments

Comments
 (0)