// // Preferences.swift // Tusker // // Created by Shadowfacts on 8/28/18. // Copyright © 2018 Shadowfacts. All rights reserved. // import Foundation import Pachyderm class Preferences: Codable { private(set) static var shared: Preferences = load() private static var documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! private static var archiveURL = Preferences.documentsDirectory.appendingPathComponent("preferences").appendingPathExtension("plist") static func save() { let encoder = PropertyListEncoder() let data = try? encoder.encode(shared) try? data?.write(to: Preferences.archiveURL, options: .noFileProtection) } static func load() -> Preferences { let decoder = PropertyListDecoder() if let data = try? Data(contentsOf: Preferences.archiveURL), let preferences = try? decoder.decode(Preferences.self, from: data) { return preferences } return Preferences() } var showRepliesInProfiles = false var avatarStyle = AvatarStyle.roundRect var hideCustomEmojiInUsernames = false var defaultPostVisibility = Status.Visibility.public var silentActions: [String: Permission] = [:] } extension Preferences { enum Permission: String, Codable { case undecided, accepted, rejected } }