FavoritesManager.swift

955 B · raw

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}