From 6143a91406a90dda63d211851f3801af148297c8 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Mon, 23 Mar 2026 18:09:59 +0200 Subject: [PATCH] feat: add ZeroProvider and wire into app layout - Create components/providers/ZeroProvider.tsx with schema, queries, userID, context, and cacheURL configuration - Wire ZeroProvider into app/layout.tsx wrapping GlobalLoadingProvider inside ReactQueryClientProvider (same position ElectricProvider had) --- surfsense_web/app/layout.tsx | 5 ++++- .../components/providers/ZeroProvider.tsx | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 surfsense_web/components/providers/ZeroProvider.tsx diff --git a/surfsense_web/app/layout.tsx b/surfsense_web/app/layout.tsx index f679bd968..9ba06c04d 100644 --- a/surfsense_web/app/layout.tsx +++ b/surfsense_web/app/layout.tsx @@ -4,6 +4,7 @@ import { RootProvider } from "fumadocs-ui/provider/next"; import { Roboto } from "next/font/google"; import { AnnouncementToastProvider } from "@/components/announcements/AnnouncementToastProvider"; import { GlobalLoadingProvider } from "@/components/providers/GlobalLoadingProvider"; +import { ZeroProvider } from "@/components/providers/ZeroProvider"; import { I18nProvider } from "@/components/providers/I18nProvider"; import { PostHogProvider } from "@/components/providers/PostHogProvider"; import { ThemeProvider } from "@/components/theme/theme-provider"; @@ -140,7 +141,9 @@ export default function RootLayout({ > - {children} + + {children} + diff --git a/surfsense_web/components/providers/ZeroProvider.tsx b/surfsense_web/components/providers/ZeroProvider.tsx new file mode 100644 index 000000000..5e20e9cda --- /dev/null +++ b/surfsense_web/components/providers/ZeroProvider.tsx @@ -0,0 +1,21 @@ +"use client"; + +import { currentUserAtom } from "@/atoms/user/user-query.atoms"; +import { queries } from "@/zero/queries"; +import { schema } from "@/zero/schema"; +import { ZeroProvider as ZeroReactProvider } from "@rocicorp/zero/react"; +import { useAtomValue } from "jotai"; + +const cacheURL = process.env.NEXT_PUBLIC_ZERO_CACHE_URL || "http://localhost:4848"; + +export function ZeroProvider({ children }: { children: React.ReactNode }) { + const { data: user } = useAtomValue(currentUserAtom); + const userID = user?.id ? String(user.id) : ""; + const context = user?.id ? { userId: String(user.id) } : undefined; + + return ( + + {children} + + ); +}