1import Foundation23class FavoritesManager: ObservableObject {4 static let shared = FavoritesManager()56 @Published var favorites: [Wallpaper] = []7 private let key = "favoriteWallpapers"89 init() {10 loadFavorites()11 }1213 func toggleFavorite(_ wallpaper: Wallpaper) {14 if let index = favorites.firstIndex(where: { $0.id == wallpaper.id }) {15 favorites.remove(at: index)16 } else {17 favorites.insert(wallpaper, at: 0)18 }19 saveFavorites()20 }2122 func isFavorite(_ wallpaper: Wallpaper) -> Bool {23 return favorites.contains(where: { $0.id == wallpaper.id })24 }2526 private func saveFavorites() {27 if let data = try? JSONEncoder().encode(favorites) {28 UserDefaults.standard.set(data, forKey: key)29 }30 }3132 private func loadFavorites() {33 if let data = UserDefaults.standard.data(forKey: key),34 let decoded = try? JSONDecoder().decode([Wallpaper].self, from: data)35 {36 favorites = decoded37 }38 }39}