22import { useEffect , useState , useRef } from "react" ;
33import Image from "next/image" ;
44import { CardType } from "@/types/task" ;
5- import TodoModal from "@/components/modalInput/ToDoModal " ;
5+ import TaskModal from "@/components/modalInput/TaskModal " ;
66import { TodoButton , ShortTodoButton } from "@/components/button/TodoButton" ;
77import ColumnManageModal from "@/components/columnCard/ColumnManageModal" ;
88import ColumnDeleteModal from "@/components/columnCard/ColumnDeleteModal" ;
@@ -14,12 +14,14 @@ import { CardList } from "./CardList";
1414import CardDetailModal from "@/components/modalDashboard/CardDetailModal" ;
1515import { CardDetailType } from "@/types/cards" ;
1616import { toast } from "react-toastify" ;
17+ import { useDashboardPermission } from "@/hooks/useDashboardPermission" ;
1718
1819type ColumnProps = {
1920 columnId : number ;
2021 title ?: string ;
2122 tasks ?: CardType [ ] ;
2223 dashboardId : number ;
24+ createdByMe : boolean ;
2325 columnDelete : ( columnId : number ) => void ;
2426 fetchColumnsAndCards : ( ) => void ;
2527} ;
@@ -29,13 +31,16 @@ export default function Column({
2931 title = "new Task" ,
3032 tasks = [ ] ,
3133 dashboardId,
34+ createdByMe,
3235 columnDelete,
3336 fetchColumnsAndCards,
3437} : ColumnProps ) {
38+ const { canEditColumns } = useDashboardPermission ( dashboardId , createdByMe ) ;
39+
3540 const [ columnTitle , setColumnTitle ] = useState ( title ) ;
3641 const [ isColumnModalOpen , setIsColumnModalOpen ] = useState ( false ) ;
3742 const [ isDeleteModalOpen , setIsDeleteModalOpen ] = useState ( false ) ;
38- const [ isTodoModalOpen , setIsTodoModalOpen ] = useState ( false ) ;
43+ const [ isTaskModalOpen , setIsTaskModalOpen ] = useState ( false ) ;
3944 const [ isCardDetailModalOpen , setIsCardDetailModalOpen ] = useState ( false ) ;
4045 const [ selectedCard , setSelectedCard ] = useState < CardDetailType | null > ( null ) ;
4146 const [ members , setMembers ] = useState <
@@ -71,6 +76,7 @@ export default function Column({
7176 toast . error ( "칼럼 제목을 입력해 주세요." ) ;
7277 return ;
7378 }
79+ setIsColumnModalOpen ( false ) ;
7480
7581 try {
7682 const updated = await updateColumn ( { columnId, title : newTitle } ) ;
@@ -132,7 +138,13 @@ export default function Column({
132138 { /* 오른쪽: 생성 버튼 + 설정 버튼 */ }
133139 < div className = "flex items-center gap-2" >
134140 < div
135- onClick = { ( ) => setIsTodoModalOpen ( true ) }
141+ onClick = { ( ) => {
142+ if ( ! canEditColumns ) {
143+ toast . error ( "읽기 전용 대시보드입니다." ) ;
144+ return ;
145+ }
146+ setIsTaskModalOpen ( true ) ;
147+ } }
136148 className = "block lg:hidden"
137149 >
138150 < ShortTodoButton />
@@ -144,14 +156,26 @@ export default function Column({
144156 fill
145157 priority
146158 className = "object-contain cursor-pointer"
147- onClick = { ( ) => setIsColumnModalOpen ( true ) }
159+ onClick = { ( ) => {
160+ if ( ! canEditColumns ) {
161+ toast . error ( "읽기 전용 대시보드입니다." ) ;
162+ return ;
163+ }
164+ setIsColumnModalOpen ( true ) ;
165+ } }
148166 />
149167 </ div >
150168 </ div >
151169 </ div >
152170 < div className = "flex items-center justify-center" >
153171 < div
154- onClick = { ( ) => setIsTodoModalOpen ( true ) }
172+ onClick = { ( ) => {
173+ if ( ! canEditColumns ) {
174+ toast . error ( "읽기 전용 대시보드입니다." ) ;
175+ return ;
176+ }
177+ setIsTaskModalOpen ( true ) ;
178+ } }
155179 className = "mb-2 hidden lg:block"
156180 >
157181 < TodoButton />
@@ -177,16 +201,19 @@ export default function Column({
177201 </ div >
178202 </ div >
179203
180- { /* Todo 모달 */ }
181- { isTodoModalOpen && (
182- < TodoModal
183- isOpen = { isTodoModalOpen }
184- onClose = { ( ) => setIsTodoModalOpen ( false ) }
185- teamId = { TEAM_ID }
204+ { /* 카드 생성 모달 */ }
205+ { isTaskModalOpen && (
206+ < TaskModal
207+ mode = "create"
208+ isOpen = { isTaskModalOpen }
209+ onClose = { ( ) => setIsTaskModalOpen ( false ) }
186210 dashboardId = { dashboardId }
187211 columnId = { columnId }
188212 members = { members }
189- onChangeCard = { fetchColumnsAndCards }
213+ initialData = { {
214+ status : columnTitle ,
215+ } }
216+ onSubmit = { fetchColumnsAndCards }
190217 />
191218 ) }
192219
@@ -220,6 +247,7 @@ export default function Column({
220247 setSelectedCard ( null ) ;
221248 } }
222249 onChangeCard = { fetchColumnsAndCards }
250+ createdByMe = { createdByMe }
223251 />
224252 ) }
225253 </ div >
0 commit comments