Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
60a88d4eb2
commit
80069be722
@ -4,6 +4,7 @@ import { add, heart, heartOutline, trash, informationCircle } from 'ionicons/ico
|
|||||||
import ActionButton from './ActionButton';
|
import ActionButton from './ActionButton';
|
||||||
import { useAppSelector } from '../../redux';
|
import { useAppSelector } from '../../redux';
|
||||||
import { selectQueue, selectFavorites } from '../../redux';
|
import { selectQueue, selectFavorites } from '../../redux';
|
||||||
|
import { debugLog } from '../../utils/logger';
|
||||||
import type { SongItemProps, QueueItem, Song } from '../../types';
|
import type { SongItemProps, QueueItem, Song } from '../../types';
|
||||||
|
|
||||||
// Utility function to extract filename from path
|
// Utility function to extract filename from path
|
||||||
@ -218,7 +219,7 @@ const SongItem: React.FC<SongItemProps> = ({
|
|||||||
const isInFavorites = (Object.values(favorites) as Song[]).some(favSong => favSong.path === song.path);
|
const isInFavorites = (Object.values(favorites) as Song[]).some(favSong => favSong.path === song.path);
|
||||||
|
|
||||||
// Debug logging for favorites
|
// Debug logging for favorites
|
||||||
console.log('SongItem render:', {
|
debugLog('SongItem render:', {
|
||||||
songTitle: song.title,
|
songTitle: song.title,
|
||||||
songPath: song.path,
|
songPath: song.path,
|
||||||
favoritesCount: Object.keys(favorites).length,
|
favoritesCount: Object.keys(favorites).length,
|
||||||
|
|||||||
@ -2,9 +2,10 @@ import { useCallback } from 'react';
|
|||||||
import { useAppSelector } from '../redux';
|
import { useAppSelector } from '../redux';
|
||||||
import { selectControllerName, selectCurrentSinger, selectQueueObject } from '../redux';
|
import { selectControllerName, selectCurrentSinger, selectQueueObject } from '../redux';
|
||||||
import { queueService, favoritesService } from '../firebase/services';
|
import { queueService, favoritesService } from '../firebase/services';
|
||||||
import type { Song, QueueItem } from '../types';
|
|
||||||
import { ref, get } from 'firebase/database';
|
import { ref, get } from 'firebase/database';
|
||||||
import { database } from '../firebase/config';
|
import { database } from '../firebase/config';
|
||||||
|
import { debugLog } from '../utils/logger';
|
||||||
|
import type { Song, QueueItem } from '../types';
|
||||||
|
|
||||||
export const useSongOperations = () => {
|
export const useSongOperations = () => {
|
||||||
const controllerName = useAppSelector(selectControllerName);
|
const controllerName = useAppSelector(selectControllerName);
|
||||||
@ -59,14 +60,14 @@ export const useSongOperations = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log('toggleFavorite called for song:', song.title, song.path);
|
debugLog('toggleFavorite called for song:', song.title, song.path);
|
||||||
|
|
||||||
// Check if the song is currently in favorites by looking it up
|
// Check if the song is currently in favorites by looking it up
|
||||||
const favoritesRef = ref(database, `controllers/${controllerName}/favorites`);
|
const favoritesRef = ref(database, `controllers/${controllerName}/favorites`);
|
||||||
const snapshot = await get(favoritesRef);
|
const snapshot = await get(favoritesRef);
|
||||||
const favorites = snapshot.exists() ? snapshot.val() : {};
|
const favorites = snapshot.exists() ? snapshot.val() : {};
|
||||||
|
|
||||||
console.log('Current favorites:', favorites);
|
debugLog('Current favorites:', favorites);
|
||||||
|
|
||||||
// Find if this song is already in favorites by matching the path
|
// Find if this song is already in favorites by matching the path
|
||||||
const existingFavoriteKey = Object.keys(favorites).find(key => {
|
const existingFavoriteKey = Object.keys(favorites).find(key => {
|
||||||
@ -74,19 +75,19 @@ export const useSongOperations = () => {
|
|||||||
return favoriteSong && favoriteSong.path === song.path;
|
return favoriteSong && favoriteSong.path === song.path;
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log('Existing favorite key:', existingFavoriteKey);
|
debugLog('Existing favorite key:', existingFavoriteKey);
|
||||||
|
|
||||||
if (existingFavoriteKey) {
|
if (existingFavoriteKey) {
|
||||||
// Remove from favorites
|
// Remove from favorites
|
||||||
console.log('Removing from favorites');
|
debugLog('Removing from favorites');
|
||||||
await favoritesService.removeFromFavorites(controllerName, existingFavoriteKey);
|
await favoritesService.removeFromFavorites(controllerName, existingFavoriteKey);
|
||||||
} else {
|
} else {
|
||||||
// Add to favorites
|
// Add to favorites
|
||||||
console.log('Adding to favorites');
|
debugLog('Adding to favorites');
|
||||||
await favoritesService.addToFavorites(controllerName, song);
|
await favoritesService.addToFavorites(controllerName, song);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('toggleFavorite completed');
|
debugLog('toggleFavorite completed');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to toggle favorite:', error);
|
console.error('Failed to toggle favorite:', error);
|
||||||
throw error;
|
throw error;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user