import { useState, useEffect } from "react"; import { Link, useNavigate } from "react-router-dom"; import { useSettingsStore } from "@/store/useSettingsStore"; import { useSyncChannelId } from "@/hooks/useSyncChannelId"; import { DynamicTable } from "@/components/DynamicTable"; import { getFeedbacks, getFeedbackFields, type Feedback, type FeedbackField, } from "@/services/feedback"; import { ErrorDisplay } from "@/components/ErrorDisplay"; import { Button } from "@/components/ui/button"; import { PageLayout } from "@/components/PageLayout"; import type { Row } from "@tanstack/react-table"; export function FeedbackListPage() { useSyncChannelId(); const { projectId, channelId } = useSettingsStore(); const navigate = useNavigate(); const [schema, setSchema] = useState(null); const [feedbacks, setFeedbacks] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { if (!projectId || !channelId) return; const fetchSchemaAndFeedbacks = async () => { try { setLoading(true); setError(null); const schemaData = await getFeedbackFields(projectId, channelId); setSchema(schemaData); const feedbacksData = await getFeedbacks(projectId, channelId); setFeedbacks(feedbacksData); } catch (err) { setError( err instanceof Error ? err.message : "데이터 로딩에 실패했습니다.", ); } finally { setLoading(false); } }; fetchSchemaAndFeedbacks(); }, [projectId, channelId]); const handleRowClick = (row: Feedback) => { navigate( `/projects/${projectId}/channels/${channelId}/feedbacks/${row.id}`, ); }; const renderExpandedRow = (row: Row) => (

{row.original.title}

{row.original.contents}

); if (loading) { return
로딩 중...
; } return ( 새 피드백 작성 } > {error && } {schema && ( )} ); }