diff --git a/apps/web/app/(dashboard)/tasks/page.tsx b/apps/web/app/(dashboard)/tasks/page.tsx index bd981d6..5cec718 100644 --- a/apps/web/app/(dashboard)/tasks/page.tsx +++ b/apps/web/app/(dashboard)/tasks/page.tsx @@ -1,54 +1,22 @@ "use client"; -import { useState, useEffect, useCallback } from "react"; +import { useState } from "react"; import { LayoutGrid, List, Plus } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { TasksKanbanView } from "@/components/tasks/tasks-kanban-view"; import { TasksListView } from "@/components/tasks/tasks-list-view"; -import { TaskCreateDialog } from "@/components/tasks/task-create-dialog"; +import { CreateItemDialog } from "@/components/create-item-dialog"; import { useCreateDialogStore } from "@/lib/stores/use-create-dialog-store"; +import { RealtimeProvider } from "@/components/realtime-provider"; export default function TasksPage() { const [view, setView] = useState<"kanban" | "list">("kanban"); const [refreshKey, setRefreshKey] = useState(0); - const [domainId, setDomainId] = useState(null); - const [domains, setDomains] = useState<{ id: string; name: string; color: string | null }[]>([]); - const [createOpen, setCreateOpen] = useState(false); - const [createStatus, setCreateStatus] = useState('todo'); const { open, openCreate, closeCreate } = useCreateDialogStore(); - // Fetch domains and select first one - useEffect(() => { - fetch('/api/domains?sort=sort_order') - .then((res) => res.json()) - .then((data) => { - const items = data.items || []; - setDomains(items); - if (items.length > 0 && !domainId) { - setDomainId(items[0].id); - } - }) - .catch(() => {}); - }, []); // eslint-disable-line react-hooks/exhaustive-deps - - // Listen for custom event to open create dialog with pre-filled status - useEffect(() => { - const handler = (e: Event) => { - const detail = (e as CustomEvent).detail; - if (detail?.status) setCreateStatus(detail.status); - if (detail?.domainId) setDomainId(detail.domainId); - setCreateOpen(true); - }; - document.addEventListener('open-create-task', handler); - return () => document.removeEventListener('open-create-task', handler); - }, []); - - const handleRefresh = useCallback(() => { - setRefreshKey((k) => k + 1); - }, []); - return ( +
@@ -56,20 +24,7 @@ export default function TasksPage() {

Move work forward without losing the thread.

- {/* Domain selector */} - {domains.length > 1 && ( - - )} - @@ -81,31 +36,9 @@ export default function TasksPage() {
- {domainId ? ( - view === "kanban" ? ( - - ) : ( - - ) - ) : ( -
-

No domains found. Create one in Settings first.

-
- )} - - {/* Create dialog */} - - - {/* Legacy create dialog for backward compat */} -
-
openCreate('task')} /> -
+ {view === "kanban" ? : } + (o ? openCreate("task") : closeCreate())} onCreated={() => setRefreshKey((k) => k + 1)} />
+ ); }