Files
FrenoCorp/node_modules/@tanstack/solid-query/src/QueryClientProvider.tsx
Michael Freno 7c684a42cc FRE-600: Fix code review blockers
- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-25 00:08:01 -04:00

48 lines
1.0 KiB
TypeScript

import {
createContext,
createRenderEffect,
onCleanup,
useContext,
} from 'solid-js'
import type { QueryClient } from './QueryClient'
import type { JSX } from 'solid-js'
export const QueryClientContext = createContext<
(() => QueryClient) | undefined
>(undefined)
export const useQueryClient = (queryClient?: QueryClient) => {
if (queryClient) {
return queryClient
}
const client = useContext(QueryClientContext)
if (!client) {
throw new Error('No QueryClient set, use QueryClientProvider to set one')
}
return client()
}
export type QueryClientProviderProps = {
client: QueryClient
children?: JSX.Element
}
export const QueryClientProvider = (
props: QueryClientProviderProps,
): JSX.Element => {
createRenderEffect<() => void>((unmount) => {
unmount?.()
props.client.mount()
return props.client.unmount.bind(props.client)
})
onCleanup(() => props.client.unmount())
return (
<QueryClientContext.Provider value={() => props.client}>
{props.children}
</QueryClientContext.Provider>
)
}