import { useEffect } from "react" import { createFileRoute, redirect, useNavigate } from "@tanstack/react-router" import { useLiveQuery } from "@tanstack/react-db" import { authClient } from "@/lib/auth-client" import { usersCollection } from "@/lib/collections" export const Route = createFileRoute("/users")({ ssr: false, beforeLoad: async () => { const res = await authClient.getSession() if (!res.data?.session) { throw redirect({ to: "/login" }) } }, loader: async () => { await usersCollection.preload() return null }, component: UsersPage, }) function UsersPage() { const navigate = useNavigate() const { data: session } = authClient.useSession() const { data: users } = useLiveQuery((q) => q.from({ usersCollection })) useEffect(() => { if (!session?.session) { navigate({ to: "/login" }) } }, [navigate, session]) if (!session?.session) { return null } return (

Signed in as

{session.user.email ?? session.user.id}

Users (Electric)

Live-synced via Electric shape
{users?.map((user) => (

{user.name || user.email}

{user.email}

{user.id}
))} {!users?.length ? (
No users yet. Create an account from the login screen to seed data.
) : null}
) }