Signed-off-by: mbrucedogs <mbrucedogs@gmail.com>
This commit is contained in:
parent
4ebdcd3ff4
commit
e556b4949d
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -132,7 +132,7 @@ export interface SongItemProps {
|
||||
onAddToQueue?: () => void;
|
||||
onRemoveFromQueue?: () => void;
|
||||
onToggleFavorite?: () => void;
|
||||
onDelete?: () => void;
|
||||
onDeleteItem?: () => void;
|
||||
onSelectSinger?: () => void;
|
||||
isAdmin?: boolean;
|
||||
className?: string;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user