1import Foundation23class FavoritesManager: ObservableObject {4 static let shared = FavoritesManager()5 6 @Published var favorites: [Wallpaper] = []7 private let key = "favoriteWallpapers"8 9 init() {10 loadFavorites()11 }12 13 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 }21 22 func isFavorite(_ wallpaper: Wallpaper) -> Bool {23 return favorites.contains(where: { $0.id == wallpaper.id })24 }25 26 private func saveFavorites() {27 if let data = try? JSONEncoder().encode(favorites) {28 UserDefaults.standard.set(data, forKey: key)29 }30 }31 32 private func loadFavorites() {33 if let data = UserDefaults.standard.data(forKey: key),34 let decoded = try? JSONDecoder().decode([Wallpaper].self, from: data) {35 favorites = decoded36 }37 }38}