import Foundation class FavoritesManager: ObservableObject { static let shared = FavoritesManager() @Published var favorites: [Wallpaper] = [] private let key = "favoriteWallpapers" init() { loadFavorites() } func toggleFavorite(_ wallpaper: Wallpaper) { if let index = favorites.firstIndex(where: { $0.id == wallpaper.id }) { favorites.remove(at: index) } else { favorites.insert(wallpaper, at: 0) } saveFavorites() } func isFavorite(_ wallpaper: Wallpaper) -> Bool { return favorites.contains(where: { $0.id == wallpaper.id }) } private func saveFavorites() { if let data = try? JSONEncoder().encode(favorites) { UserDefaults.standard.set(data, forKey: key) } } private func loadFavorites() { if let data = UserDefaults.standard.data(forKey: key), let decoded = try? JSONDecoder().decode([Wallpaper].self, from: data) { favorites = decoded } } }