import React, { useState } from 'react'; import { IonItem, IonLabel, IonIcon, IonModal, IonHeader, IonToolbar, IonTitle, IonButton, IonContent, IonInput, IonLabel as IonInputLabel } from '@ionic/react'; import { trash, add, close } from 'ionicons/icons'; import { InfiniteScrollList, ActionButton } from '../../components/common'; import { useSingers } from '../../hooks'; import { useAppSelector } from '../../redux'; import { selectSingers } from '../../redux'; import type { Singer } from '../../types'; const Singers: React.FC = () => { const { singers, isAdmin, handleRemoveSinger, handleAddSinger, } = useSingers(); const [showAddModal, setShowAddModal] = useState(false); const [newSingerName, setNewSingerName] = useState(''); const singersData = useAppSelector(selectSingers); const handleOpenAddModal = () => { setShowAddModal(true); setNewSingerName(''); }; const handleCloseAddModal = () => { setShowAddModal(false); setNewSingerName(''); }; const handleSubmitAddSinger = async () => { if (newSingerName.trim()) { await handleAddSinger(newSingerName); handleCloseAddModal(); } }; const singersCount = Object.keys(singersData).length; // Debug logging console.log('Singers component - singers count:', singersCount); console.log('Singers component - singers:', singers); // Render singer item for InfiniteScrollList const renderSingerItem = (singer: Singer) => (

{singer.name}

{/* Delete Button (Admin Only) */} {isAdmin && (
e.stopPropagation()}> handleRemoveSinger(singer)} variant="danger" size="sm" >
)}
); return ( <>
{isAdmin && ( )}
items={singers} isLoading={singersCount === 0} hasMore={false} onLoadMore={() => {}} renderItem={renderSingerItem} emptyTitle="No singers yet" emptyMessage="Singers will appear here when they join the party" loadingTitle="Loading singers..." loadingMessage="Please wait while singers data is being loaded" />
{/* Add Singer Modal */} Add New Singer
Singer Name setNewSingerName(e.detail.value || '')} placeholder="Enter singer name" clearInput={true} onKeyPress={(e) => { if (e.key === 'Enter') { handleSubmitAddSinger(); } }} />
Add Singer Cancel
); }; export default Singers;