import Link from "next/link" import { usePathname } from "next/navigation" import { cn } from "@/lib/utils" import { ListOfTasks } from "@/lib/schema/tasks" import { LaIcon } from "../../la-icon" import { useEffect, useState } from "react" import { useAuth, useUser } from "@clerk/nextjs" import { getFeatureFlag } from "@/app/actions" export const TaskSection: React.FC<{ pathname: string }> = ({ pathname }) => { const me = { root: { tasks: [{ id: "1", title: "Test Task" }] } } const taskCount = me?.root.tasks?.length || 0 const isActive = pathname === "/tasks" const [isFetching, setIsFetching] = useState(false) const [isFeatureActive, setIsFeatureActive] = useState(false) const { isLoaded, isSignedIn } = useAuth() const { user } = useUser() useEffect(() => { async function checkFeatureFlag() { setIsFetching(true) if (isLoaded && isSignedIn) { const [data, err] = await getFeatureFlag({ name: "TASK" }) if (err) { console.error(err) setIsFetching(false) return } if (user?.emailAddresses.some(email => data.flag?.emails.includes(email.emailAddress))) { setIsFeatureActive(true) } setIsFetching(false) } } checkFeatureFlag() }, [isLoaded, isSignedIn, user]) if (!isLoaded || !isSignedIn) { return
Loading...
} if (!me) return null if (!isFeatureActive) { return null } return (
{isFetching ? (
Fetching tasks...
) : ( )}
) } interface TaskSectionHeaderProps { taskCount: number isActive: boolean } const TaskSectionHeader: React.FC = ({ taskCount, isActive }) => (

Tasks {taskCount > 0 && {taskCount}}

//
// //
) interface ListProps { tasks: ListOfTasks } const List: React.FC = ({ tasks }) => { const pathname = usePathname() return (
) } interface ListItemProps { label: string href: string count: number isActive: boolean } const ListItem: React.FC = ({ label, href, count, isActive }) => (

{label}

{count > 0 && ( {count} )}
)