Update files
This commit is contained in:
parent
ed8917e8dd
commit
dfa64eccb4
|
|
@ -1,4 +1,4 @@
|
||||||
import { useState, useEffect } from 'react'
|
import { useState, useEffect, useCallback } from 'react'
|
||||||
import { createPortal } from 'react-dom'
|
import { createPortal } from 'react-dom'
|
||||||
import { X, Send } from 'lucide-react'
|
import { X, Send } from 'lucide-react'
|
||||||
import { commentPost, getPosts } from '../utils/api'
|
import { commentPost, getPosts } from '../utils/api'
|
||||||
|
|
@ -10,20 +10,17 @@ export default function CommentsModal({ post, onClose, onUpdate }) {
|
||||||
const [comment, setComment] = useState('')
|
const [comment, setComment] = useState('')
|
||||||
const [loading, setLoading] = useState(false)
|
const [loading, setLoading] = useState(false)
|
||||||
const [comments, setComments] = useState([])
|
const [comments, setComments] = useState([])
|
||||||
const [fullPost, setFullPost] = useState(post)
|
const [fullPost, setFullPost] = useState(null)
|
||||||
const [loadingPost, setLoadingPost] = useState(false)
|
const [loadingPost, setLoadingPost] = useState(false)
|
||||||
|
|
||||||
// Загрузить полные данные поста с комментариями
|
// Загрузить полные данные поста с комментариями
|
||||||
useEffect(() => {
|
const loadFullPost = useCallback(async () => {
|
||||||
if (post?._id) {
|
if (!post?._id) {
|
||||||
loadFullPost()
|
setFullPost(post || null)
|
||||||
} else {
|
|
||||||
setFullPost(post)
|
|
||||||
setComments(post?.comments || [])
|
setComments(post?.comments || [])
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}, [post?._id])
|
|
||||||
|
|
||||||
const loadFullPost = async () => {
|
|
||||||
try {
|
try {
|
||||||
setLoadingPost(true)
|
setLoadingPost(true)
|
||||||
const response = await getPosts()
|
const response = await getPosts()
|
||||||
|
|
@ -44,11 +41,18 @@ export default function CommentsModal({ post, onClose, onUpdate }) {
|
||||||
} finally {
|
} finally {
|
||||||
setLoadingPost(false)
|
setLoadingPost(false)
|
||||||
}
|
}
|
||||||
}
|
}, [post])
|
||||||
|
|
||||||
// Проверка на существование поста
|
useEffect(() => {
|
||||||
|
if (post) {
|
||||||
|
setFullPost(post)
|
||||||
|
setComments(post.comments || [])
|
||||||
|
loadFullPost()
|
||||||
|
}
|
||||||
|
}, [post, loadFullPost])
|
||||||
|
|
||||||
|
// Проверка на существование поста ПОСЛЕ хуков
|
||||||
if (!post) {
|
if (!post) {
|
||||||
console.error('[CommentsModal] Post is missing')
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,10 +99,6 @@ export default function CommentsModal({ post, onClose, onUpdate }) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!post) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
return createPortal(
|
return createPortal(
|
||||||
<div
|
<div
|
||||||
className="comments-modal-overlay"
|
className="comments-modal-overlay"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue