Update files
This commit is contained in:
parent
fea68d4514
commit
5d9892d744
|
|
@ -50,7 +50,12 @@ export default function CommentsModal({ post, onClose, onUpdate }) {
|
|||
}
|
||||
|
||||
return (
|
||||
<div className="comments-modal-overlay" onClick={handleOverlayClick}>
|
||||
<div
|
||||
className="comments-modal-overlay"
|
||||
onMouseDown={(e) => e.stopPropagation()}
|
||||
onTouchStart={(e) => e.stopPropagation()}
|
||||
onClick={handleOverlayClick}
|
||||
>
|
||||
<div className="comments-modal" onClick={(e) => e.stopPropagation()}>
|
||||
{/* Хедер */}
|
||||
<div className="modal-header">
|
||||
|
|
|
|||
|
|
@ -57,7 +57,12 @@ export default function FollowListModal({ users, title, onClose, currentUser })
|
|||
}
|
||||
|
||||
return (
|
||||
<div className="follow-list-modal-overlay" onClick={handleOverlayClick}>
|
||||
<div
|
||||
className="follow-list-modal-overlay"
|
||||
onMouseDown={(e) => e.stopPropagation()}
|
||||
onTouchStart={(e) => e.stopPropagation()}
|
||||
onClick={handleOverlayClick}
|
||||
>
|
||||
<div className="follow-list-modal" onClick={(e) => e.stopPropagation()}>
|
||||
{/* Хедер */}
|
||||
<div className="follow-list-header">
|
||||
|
|
|
|||
|
|
@ -269,6 +269,8 @@
|
|||
flex-direction: column;
|
||||
animation: fadeIn 0.2s ease-out;
|
||||
overflow: hidden;
|
||||
pointer-events: auto;
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
.fullview-header {
|
||||
|
|
@ -286,6 +288,7 @@
|
|||
will-change: transform;
|
||||
transform: translateZ(0);
|
||||
flex-shrink: 0;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.fullview-counter {
|
||||
|
|
@ -328,6 +331,7 @@
|
|||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.fullview-content img {
|
||||
|
|
@ -338,6 +342,7 @@
|
|||
object-fit: contain;
|
||||
user-select: none;
|
||||
display: block;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.fullview-nav-btn {
|
||||
|
|
@ -355,6 +360,7 @@
|
|||
backdrop-filter: blur(10px);
|
||||
transition: background 0.2s, opacity 0.2s;
|
||||
z-index: 10;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.fullview-nav-btn.prev {
|
||||
|
|
@ -383,6 +389,7 @@
|
|||
backdrop-filter: blur(10px);
|
||||
z-index: 10001;
|
||||
flex-shrink: 0;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.fullview-dot {
|
||||
|
|
@ -392,6 +399,7 @@
|
|||
background: rgba(255, 255, 255, 0.4);
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.fullview-dot.active {
|
||||
|
|
|
|||
|
|
@ -263,8 +263,17 @@ export default function PostCard({ post, currentUser, onUpdate }) {
|
|||
|
||||
{/* Fullview модал */}
|
||||
{showFullView && (
|
||||
<div className="image-fullview" onClick={() => setShowFullView(false)}>
|
||||
<div className="fullview-header">
|
||||
<div
|
||||
className="image-fullview"
|
||||
onMouseDown={(e) => e.stopPropagation()}
|
||||
onTouchStart={(e) => e.stopPropagation()}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
setShowFullView(false)
|
||||
}}
|
||||
>
|
||||
<div className="fullview-header" onClick={(e) => e.stopPropagation()}>
|
||||
<button className="fullview-btn" onClick={(e) => { e.stopPropagation(); setShowFullView(false); }}>
|
||||
<X size={24} />
|
||||
</button>
|
||||
|
|
@ -285,6 +294,7 @@ export default function PostCard({ post, currentUser, onUpdate }) {
|
|||
src={images[currentImageIndex]}
|
||||
alt={`Full view ${currentImageIndex + 1}`}
|
||||
draggable={false}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
/>
|
||||
|
||||
{images.length > 1 && (
|
||||
|
|
@ -305,7 +315,7 @@ export default function PostCard({ post, currentUser, onUpdate }) {
|
|||
</div>
|
||||
|
||||
{images.length > 1 && (
|
||||
<div className="fullview-dots">
|
||||
<div className="fullview-dots" onClick={(e) => e.stopPropagation()}>
|
||||
{images.map((_, index) => (
|
||||
<span
|
||||
key={index}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,12 @@ export default function PostMenu({ post, currentUser, onClose, onDelete }) {
|
|||
}
|
||||
|
||||
return (
|
||||
<div className="post-menu-overlay" onClick={handleOverlayClick}>
|
||||
<div
|
||||
className="post-menu-overlay"
|
||||
onMouseDown={(e) => e.stopPropagation()}
|
||||
onTouchStart={(e) => e.stopPropagation()}
|
||||
onClick={handleOverlayClick}
|
||||
>
|
||||
<div className="menu-header" onClick={(e) => e.stopPropagation()}>
|
||||
<button className="menu-close-btn" onClick={onClose}>
|
||||
<X size={24} />
|
||||
|
|
|
|||
|
|
@ -251,7 +251,16 @@ export const banUser = async (userId, banned, days) => {
|
|||
|
||||
// Bot API
|
||||
export const sendPhotoToTelegram = async (photoUrl) => {
|
||||
const response = await api.post('/bot/send-photo', { photoUrl })
|
||||
const telegramUser = window.Telegram?.WebApp?.initDataUnsafe?.user
|
||||
if (!telegramUser || !telegramUser.id) {
|
||||
throw new Error('Не удалось получить ID пользователя из Telegram')
|
||||
}
|
||||
|
||||
const response = await api.post('/bot/send-photo', {
|
||||
userId: telegramUser.id,
|
||||
photoUrl,
|
||||
caption: 'Из Nakama'
|
||||
})
|
||||
return response.data
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue