diff --git a/src/app/[handle]/[rkey]/edit/page.tsx b/src/app/[handle]/[rkey]/edit/page.tsx index 98a04d9..cdd53b2 100644 --- a/src/app/[handle]/[rkey]/edit/page.tsx +++ b/src/app/[handle]/[rkey]/edit/page.tsx @@ -10,8 +10,13 @@ import { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' -import type { CreateTopicInput, PublicSettings, Topic } from '@/lib/api/types' -import { getTopicByAuthorAndRkey, updateTopic, getPublicSettings } from '@/lib/api/client' +import type { CreateTopicInput, CategoryTreeNode, PublicSettings, Topic } from '@/lib/api/types' +import { + getCategories, + getTopicByAuthorAndRkey, + updateTopic, + getPublicSettings, +} from '@/lib/api/client' import { getTopicUrl } from '@/lib/format' import { useAuth } from '@/hooks/use-auth' import { ForumLayout } from '@/components/layout/forum-layout' @@ -32,11 +37,15 @@ export default function EditTopicPage({ params }: EditTopicPageProps) { const [submitting, setSubmitting] = useState(false) const [error, setError] = useState(null) const [publicSettings, setPublicSettings] = useState(null) + const [categories, setCategories] = useState([]) useEffect(() => { getPublicSettings() .then((settings) => setPublicSettings(settings)) .catch(() => {}) + getCategories() + .then((res) => setCategories(res.categories)) + .catch(() => {}) }, []) // Resolve params (handles both Promise and plain object) @@ -170,6 +179,7 @@ export default function EditTopicPage({ params }: EditTopicPageProps) { onSubmit={handleSubmit} submitting={submitting} mode="edit" + categories={categories.length > 0 ? categories : undefined} initialValues={{ title: topic.title, content: topic.content, diff --git a/src/app/new/page.tsx b/src/app/new/page.tsx index 26a1f55..2c1f736 100644 --- a/src/app/new/page.tsx +++ b/src/app/new/page.tsx @@ -9,8 +9,8 @@ import { useState, useEffect } from 'react' import { useRouter, useSearchParams } from 'next/navigation' -import type { CreateTopicInput, PublicSettings } from '@/lib/api/types' -import { ApiError, createTopic, getPublicSettings } from '@/lib/api/client' +import type { CreateTopicInput, CategoryTreeNode, PublicSettings } from '@/lib/api/types' +import { ApiError, createTopic, getCategories, getPublicSettings } from '@/lib/api/client' import { getTopicUrl } from '@/lib/format' import { ForumLayout } from '@/components/layout/forum-layout' import { Breadcrumbs } from '@/components/breadcrumbs' @@ -28,11 +28,15 @@ export default function NewTopicPage() { const [error, setError] = useState(null) const [heldMessage, setHeldMessage] = useState(null) const [publicSettings, setPublicSettings] = useState(null) + const [categories, setCategories] = useState([]) useEffect(() => { getPublicSettings() .then((settings) => setPublicSettings(settings)) .catch(() => {}) + getCategories() + .then((res) => setCategories(res.categories)) + .catch(() => {}) }, []) const handleSubmit = async (values: CreateTopicInput) => { @@ -93,6 +97,7 @@ export default function NewTopicPage() { 0 ? categories : undefined} initialValues={{ category: initialCategory }} />