import React, { useState } from 'react'; import { useApp } from '../../context/AppContext'; import { hapticImpact } from '../../services/auth'; import './BottomBar.css'; export default function BottomBar() { const { currentCard, chosenCard, likeCard, dislikeCard, setIsCommentsOpen, user } = useApp(); const [isSubmitting, setIsSubmitting] = useState(false); const isRevealed = chosenCard !== null; // Check if user already reacted to this card const alreadyLiked = user?.liked_card_ids?.includes(currentCard?.card_id); const alreadyDisliked = user?.disliked_card_ids?.includes(currentCard?.card_id); const currentReaction = alreadyLiked ? 'liked' : alreadyDisliked ? 'disliked' : null; const handleLike = async () => { if (!isRevealed || currentReaction || isSubmitting) return; setIsSubmitting(true); try { await likeCard(); } finally { setIsSubmitting(false); } }; const handleDislike = async () => { if (!isRevealed || currentReaction || isSubmitting) return; setIsSubmitting(true); try { await dislikeCard(); } finally { setIsSubmitting(false); } }; const handleComments = () => { hapticImpact('light'); setIsCommentsOpen(true); }; const likes = currentCard?.count_likes || 0; const dislikes = currentCard?.count_dislikes || 0; const commentsCount = currentCard?.comments?.length || 0; return (
); } function formatCount(n) { if (n >= 1_000_000) return (n / 1_000_000).toFixed(1).replace(/\.0$/, '') + 'M'; if (n >= 1_000) return (n / 1_000).toFixed(1).replace(/\.0$/, '') + 'K'; return String(n); }