1- import { useRef } from "react" ;
1+ import { useRef , useState } from "react" ;
22import { useNavigate , useParams } from "react-router" ;
33import styled from "styled-components" ;
44import Modal from "../../../components/modal/modal.jsx" ;
55import { useIntersectionObserver } from "../../../hooks/use-intersection-observer.jsx" ;
6+ import { useModal } from "../../../hooks/use-modal.jsx" ;
67import { media } from "../../../utils/media.js" ;
78import MessageCardAdd from "./message-card-add.jsx" ;
89import MessageCardDetail from "./message-card-detail.jsx" ;
@@ -28,6 +29,10 @@ function MessagesGrid({ isEditing, messages, onDelete, onInfiniteScroll }) {
2829 const navigate = useNavigate ( ) ;
2930 const { id } = useParams ( ) ;
3031 const infiniteScrollTargetRef = useRef ( ) ;
32+ const { showsModal, setShowsModal } = useModal ( {
33+ key : "message-modal" ,
34+ } ) ;
35+ const [ modalMessage , setModalMessage ] = useState ( null ) ;
3136
3237 const observerCallback = ( entry ) => {
3338 if ( ! entry . isIntersecting ) return ;
@@ -39,33 +44,42 @@ function MessagesGrid({ isEditing, messages, onDelete, onInfiniteScroll }) {
3944 navigate ( `/post/${ id } /message` ) ;
4045 } ;
4146
42- const handleDeleteClick = ( messageId ) => {
43- onDelete ( messageId ) ;
47+ const handleMessageClick = ( message ) => {
48+ setShowsModal ( true ) ;
49+ setModalMessage ( message ) ;
4450 } ;
4551
46- const messageCard = ( message ) => (
47- < MessageCard
48- key = { message . id }
49- isEditing = { isEditing }
50- message = { message }
51- onDelete = { ( ) => handleDeleteClick ( message . id ) }
52- />
53- ) ;
52+ const handleDeleteClick = ( message ) => {
53+ onDelete ( message ) ;
54+ } ;
55+
56+ const handleModalConfirm = ( ) => {
57+ setShowsModal ( false ) ;
58+ setModalMessage ( null ) ;
59+ } ;
5460
5561 return (
56- < StyledRollingPaperMessagesGrid >
57- < MessageCardAdd onClick = { handleAddClick } />
58- { messages . map ( ( message ) =>
59- isEditing ? (
60- messageCard ( message )
61- ) : (
62- < Modal key = { message . id } id = { message . id } action = { messageCard ( message ) } >
63- < MessageCardDetail message = { message } />
64- </ Modal >
65- )
66- ) }
67- < div ref = { infiniteScrollTargetRef } > </ div >
68- </ StyledRollingPaperMessagesGrid >
62+ < >
63+ < StyledRollingPaperMessagesGrid >
64+ < MessageCardAdd onClick = { handleAddClick } />
65+ { messages . map ( ( message ) => (
66+ < MessageCard
67+ key = { message . id }
68+ isEditing = { isEditing }
69+ message = { message }
70+ onClick = { handleMessageClick }
71+ onDelete = { handleDeleteClick }
72+ />
73+ ) ) }
74+ < div ref = { infiniteScrollTargetRef } > </ div >
75+ </ StyledRollingPaperMessagesGrid >
76+ < Modal shows = { showsModal && modalMessage != null } >
77+ < MessageCardDetail
78+ message = { modalMessage }
79+ onConfirm = { handleModalConfirm }
80+ />
81+ </ Modal >
82+ </ >
6983 ) ;
7084}
7185
0 commit comments