diff options
Diffstat (limited to 'src/app/(main)/links/LinkProvider.tsx')
| -rw-r--r-- | src/app/(main)/links/LinkProvider.tsx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/app/(main)/links/LinkProvider.tsx b/src/app/(main)/links/LinkProvider.tsx new file mode 100644 index 0000000..c29e13c --- /dev/null +++ b/src/app/(main)/links/LinkProvider.tsx @@ -0,0 +1,21 @@ +'use client'; +import { Loading } from '@umami/react-zen'; +import { createContext, type ReactNode } from 'react'; +import { useLinkQuery } from '@/components/hooks/queries/useLinkQuery'; +import type { Link } from '@/generated/prisma/client'; + +export const LinkContext = createContext<Link>(null); + +export function LinkProvider({ linkId, children }: { linkId?: string; children: ReactNode }) { + const { data: link, isLoading, isFetching } = useLinkQuery(linkId); + + if (isFetching && isLoading) { + return <Loading placement="absolute" />; + } + + if (!link) { + return null; + } + + return <LinkContext.Provider value={link}>{children}</LinkContext.Provider>; +} |