Signed-off-by: mbrucedogs <mbrucedogs@gmail.com>

This commit is contained in:
mbrucedogs 2025-07-20 14:01:15 -05:00
parent 4ebdcd3ff4
commit e556b4949d
8 changed files with 36 additions and 34 deletions

View File

@ -1,11 +1,11 @@
vite.svg,499162500000,699a02e0e68a579f687d364bbbe7633161244f35af068220aee37b1b33dfb3c7
index.html,1753035405872,3c6158b71f45d6e999fa49b429eac62310b4fbbc3a5d610313ab240eb484f92a
assets/swipe-back-CGSdR0aI.js,1753035405872,517c817b67e87bb2d8be7273e40d76dc6046afddee62757c5a30ecaa4dc6e985
assets/status-tap-CLf1Wfnc.js,1753035405872,74cfde934919ae1a235d219096b646fec1fc240688d58b039cecd11f6fe9de97
assets/md.transition-BcHE0Hfy.js,1753035405872,957736badb3da354a52c022261dbce86539188b7de89f5b9761e478aa79b1512
assets/input-shims-DNsJ2SsM.js,1753035405872,0c88fd6b629bc2dc618613c3b0dea275eebe9ff9a54f0e550519b71e2f87e889
assets/index7-CvVnXkg4.js,1753035405872,bc175c80e2f773729b6b034071fad7830f0cde004d184285cd8c29722271b66f
assets/ios.transition-C4vHCq5E.js,1753035405872,614a85d6eb6c5f73c8024c65bab5e008c271a6e77817519d0035cadc2652e8f5
assets/focus-visible-supuXXMI.js,1753035405872,df9266429356671847fa2c8123e1564bae645f75df3094f0055c365fa2beae28
assets/index-CzY-nILz.css,1753035405872,c68362f490f176fbe950e6cc313da199ed6e08c67058d82b833a2026a0be75c9
assets/index-BijPmtNu.js,1753035405873,9729127c742119efd72ff5f7f4628f939053ad2f25abe6b78e74801e8e599326
index.html,1753036974325,d4ec7269769afa4794c9b3bc4382b8bb4ca2a9cc11d47522053a62b9c1dbd99b
assets/swipe-back-0ASdaLec.js,1753036974325,dfdb4ccfc65b5ddd1d04306a2cbc650f7f2be8d659bb029d32c75fd5041b6f5e
assets/status-tap-DKvxsyfd.js,1753036974325,1bbe8dd5487685ce491d40b73bc1bbbc1a3fdeac4e485438c55484248ca69fff
assets/md.transition-CWuowIQj.js,1753036974325,b5d793bffc7672549acba90697be0b704a7b39d8f4ff21faaf05ddba2951dcb0
assets/ios.transition-BPJsV1yP.js,1753036974325,e401e6df1d7c900f8f54e717308a57abfcf913ee17b2eb56846b4ba3049d94cf
assets/input-shims-BtXJpb0t.js,1753036974325,1f111da7ba4ae84995311f07a6d41c62ca179213cd8123623048af9ccee533f9
assets/index7-_QrtZLKR.js,1753036974325,fac87389bb8d2e7850fef07b4fd01132a49206e2b5ddd40feff932d041e1874e
assets/focus-visible-supuXXMI.js,1753036974325,df9266429356671847fa2c8123e1564bae645f75df3094f0055c365fa2beae28
assets/index-CzY-nILz.css,1753036974324,c68362f490f176fbe950e6cc313da199ed6e08c67058d82b833a2026a0be75c9
assets/index-DxnqBJhb.js,1753036974326,143303c7b9c04d8a450f75b956258ba32195e518861db9a8c07e4cbbab3d6c0d

View File

@ -94,7 +94,7 @@ export const SongActionButtons: React.FC<{
onAddToQueue?: () => void;
onRemoveFromQueue?: () => void;
onToggleFavorite?: () => void;
onDelete?: () => void;
onDeleteItem?: () => void;
onSelectSinger?: () => void;
}> = ({
isAdmin,
@ -108,7 +108,7 @@ export const SongActionButtons: React.FC<{
onAddToQueue,
onRemoveFromQueue,
onToggleFavorite,
onDelete,
onDeleteItem,
onSelectSinger
}) => {
const buttons = [];
@ -155,12 +155,12 @@ export const SongActionButtons: React.FC<{
);
}
// Delete from Favorites button
if (showDeleteButton && onDelete) {
// Delete button (generic - can be used for favorites, history, etc.)
if (showDeleteButton && onDeleteItem) {
buttons.push(
<ActionButton
key="delete"
onClick={onDelete}
onClick={onDeleteItem}
variant="danger"
size="sm"
>
@ -197,7 +197,7 @@ const SongItem: React.FC<SongItemProps> = ({
onAddToQueue,
onRemoveFromQueue,
onToggleFavorite,
onDelete,
onDeleteItem,
onSelectSinger,
isAdmin = false,
className = '',
@ -260,7 +260,7 @@ const SongItem: React.FC<SongItemProps> = ({
onAddToQueue={onAddToQueue}
onRemoveFromQueue={onRemoveFromQueue}
onToggleFavorite={onToggleFavorite}
onDelete={onDelete}
onDeleteItem={onDeleteItem}
onSelectSinger={onSelectSinger}
/>
</div>

View File

@ -17,7 +17,6 @@ const Artists: React.FC = () => {
getSongsByArtist,
getSongCountByArtist,
handleAddToQueue,
handleToggleFavorite,
} = useArtists();
const songs = useAppSelector(selectSongs);
@ -136,7 +135,10 @@ const Artists: React.FC = () => {
song={song}
context="search"
onAddToQueue={() => handleAddToQueue(song)}
onToggleFavorite={() => handleToggleFavorite(song)}
onSelectSinger={() => {}} // Info button functionality
showAddButton={true}
showInfoButton={true}
showFavoriteButton={false}
/>
</div>
</div>

View File

@ -47,8 +47,9 @@ const Favorites: React.FC = () => {
context="favorites"
showInfoButton={true}
showAddButton={false}
showDeleteButton={true}
onSelectSinger={() => handleSongInfo(song)}
onDelete={() => handleToggleFavorite(song)}
onDeleteItem={() => handleToggleFavorite(song)}
/>
)}
emptyTitle="No favorites yet"

View File

@ -53,7 +53,8 @@ const History: React.FC = () => {
song={song}
context="history"
onAddToQueue={() => handleAddToQueue(song)}
onDelete={() => handleDeleteFromHistory(song)}
onSelectSinger={() => {}} // Info button functionality
onDeleteItem={() => handleDeleteFromHistory(song)}
isAdmin={isAdmin}
showAddButton={true}
showInfoButton={true}

View File

@ -16,7 +16,6 @@ const SongLists: React.FC = () => {
loadMore,
checkSongAvailability,
handleAddToQueue,
handleToggleFavorite,
} = useSongLists();
const songListData = useAppSelector(selectSongList);
@ -133,7 +132,10 @@ const SongLists: React.FC = () => {
song={song}
context="search"
onAddToQueue={() => handleAddToQueue(song)}
onToggleFavorite={() => handleToggleFavorite(song)}
onSelectSinger={() => {}} // Info button functionality
showAddButton={true}
showInfoButton={true}
showFavoriteButton={false}
/>
))}
</IonList>

View File

@ -24,7 +24,7 @@ const Top100: React.FC = () => {
const topPlayed = useAppSelector(selectTopPlayed);
const topPlayedCount = Object.keys(topPlayed).length;
const allSongs = useAppSelector(selectSongsArray);
const { addToQueue, toggleFavorite } = useSongOperations();
const { addToQueue } = useSongOperations();
const { showSuccess, showError } = useToast();
const [selectedTopPlayed, setSelectedTopPlayed] = useState<TopPlayed | null>(null);
@ -70,14 +70,7 @@ const Top100: React.FC = () => {
}
}, [addToQueue, showSuccess, showError]);
const handleToggleFavorite = useCallback(async (song: Song) => {
try {
await toggleFavorite(song);
showSuccess(song.favorite ? 'Removed from favorites' : 'Added to favorites');
} catch {
showError('Failed to update favorites');
}
}, [toggleFavorite, showSuccess, showError]);
// Use real Firebase data from the hook
const displayItems = topPlayedItems;
@ -148,7 +141,10 @@ const Top100: React.FC = () => {
song={song}
context="search"
onAddToQueue={() => handleAddToQueue(song)}
onToggleFavorite={() => handleToggleFavorite(song)}
onSelectSinger={() => {}} // Info button functionality
showAddButton={true}
showInfoButton={true}
showFavoriteButton={false}
/>
))}
</IonList>

View File

@ -132,7 +132,7 @@ export interface SongItemProps {
onAddToQueue?: () => void;
onRemoveFromQueue?: () => void;
onToggleFavorite?: () => void;
onDelete?: () => void;
onDeleteItem?: () => void;
onSelectSinger?: () => void;
isAdmin?: boolean;
className?: string;