import AsyncStorage from '@react-native-async-storage/async-storage'; import { Song } from '@/types/song'; export const addToFavoritesStorage = async (song: Song): Promise => { try { const stored = await AsyncStorage.getItem('favorites'); const parsed: Song[] = stored ? JSON.parse(stored) : []; const updatedFavorites = [...parsed, song]; await AsyncStorage.setItem('favorites', JSON.stringify(updatedFavorites)); return true; } catch (error) { console.error('Error adding to favorites:', error); return false; } }; export interface FavoriteFolder { id: string; name: string; songs: Song[]; expanded: boolean; } const STORAGE_KEY = 'favoritesFolders'; // 폴더 저장 export const saveFavoriteFolders = async (folders: FavoriteFolder[]): Promise => { try { await AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(folders)); } catch (error) { console.error('Error saving favorite folders:', error); } }; // 폴더 불러오기 export const loadFavoriteFolders = async (): Promise => { try { const stored = await AsyncStorage.getItem(STORAGE_KEY); return stored ? JSON.parse(stored) : []; } catch (error) { console.error('Error loading favorite folders:', error); return []; } }; // 폴더 초기화 export const clearFavoriteFolders = async (): Promise => { try { await AsyncStorage.removeItem(STORAGE_KEY); } catch (error) { console.error('Error clearing favorite folders:', error); } }; // 🔹 폴더에 노래 추가 export const addSongToFolder = async ( folderId: string, song: Song ): Promise => { try { const folders = await loadFavoriteFolders(); const updated = folders.map((folder) => { if (folder.id === folderId) { const isDuplicate = folder.songs.some((s) => s.no === song.no); if (!isDuplicate) { return { ...folder, songs: [...folder.songs, song] }; } } return folder; }); await saveFavoriteFolders(updated); return updated; } catch (error) { console.error('Error adding song to folder:', error); return null; } }; // 🔸 폴더에서 노래 삭제 export const removeSongFromFolder = async ( folderId: string, songNo: string ): Promise => { try { const folders = await loadFavoriteFolders(); const updated = folders.map((folder) => { if (folder.id === folderId) { return { ...folder, songs: folder.songs.filter((s) => s.no !== songNo), }; } return folder; }); await saveFavoriteFolders(updated); return updated; } catch (error) { console.error('Error removing song from folder:', error); return null; } };