Skip to content

Instantly share code, notes, and snippets.

@navsing
Last active April 17, 2020 23:11
Show Gist options
  • Save navsing/e7f2fe9aa6811b160f3803ca42e9f02d to your computer and use it in GitHub Desktop.
Save navsing/e7f2fe9aa6811b160f3803ca42e9f02d to your computer and use it in GitHub Desktop.
import SwiftUI
class Favorites: ObservableObject {
private var tasks: Set<String>
let defaults = UserDefaults.standard
init() {
let decoder = JSONDecoder()
if let data = defaults.value(forKey: "Favorites") as? Data {
let taskData = try? decoder.decode(Set<String>.self, from: data)
self.tasks = taskData ?? []
} else {
self.tasks = []
}
}
func getTaskIds() -> Set<String> {
return self.tasks
}
func isEmpty() -> Bool {
tasks.count < 1
}
func contains(_ task: Task) -> Bool {
tasks.contains(task.id)
}
func add(_ task: Task) {
objectWillChange.send()
tasks.insert(task.id)
save()
}
func remove(_ task: Task) {
objectWillChange.send()
tasks.remove(task.id)
save()
}
func save() {
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(Favorites) {
defaults.set(encoded, forKey: "Favorites")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment