@nuxtjs/sanity
Version:
Sanity integration for Nuxt
35 lines (34 loc) • 853 B
JavaScript
import { watch } from "vue";
export const useSanityQueryFetcher = ({
onSnapshot,
params,
query,
queryStore
}) => {
let unsubscribe = () => {
};
if (import.meta.client && queryStore) {
const setupFetcher = (cb) => {
const fetcher = queryStore.createFetcherStore(
query,
params ? JSON.parse(JSON.stringify(params)) : void 0,
void 0
);
const unsubscribe2 = fetcher.subscribe((newSnapshot) => {
if (newSnapshot.data) {
onSnapshot(newSnapshot.data, newSnapshot.sourceMap);
cb?.(newSnapshot);
}
});
return unsubscribe2;
};
unsubscribe = setupFetcher();
if (params) {
watch(params, (_a, _b, onCleanup) => {
onCleanup(() => unsubscribe());
unsubscribe = setupFetcher();
});
}
}
return { unsubscribe };
};