FavoritesManager.swift

1.0 KB · raw

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}