Source code for the WriteFreely SwiftUI app for iOS, iPadOS, and macOS
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

58 rindas
2.1 KiB

  1. import Foundation
  2. enum WFDefaults {
  3. static let isLoggedIn = "isLoggedIn"
  4. static let showAllPostsFlag = "showAllPostsFlag"
  5. static let selectedCollectionURL = "selectedCollectionURL"
  6. static let lastDraftURL = "lastDraftURL"
  7. static let colorSchemeIntegerKey = "colorSchemeIntegerKey"
  8. static let defaultFontIntegerKey = "defaultFontIntegerKey"
  9. static let usernameStringKey = "usernameStringKey"
  10. static let serverStringKey = "serverStringKey"
  11. #if os(macOS)
  12. static let automaticallyChecksForUpdates = "automaticallyChecksForUpdates"
  13. static let subscribeToBetaUpdates = "subscribeToBetaUpdates"
  14. #endif
  15. }
  16. extension UserDefaults {
  17. private static let appGroupName: String = "group.com.abunchtell.writefreely"
  18. private static let didMigrateDefaultsToAppGroup: String = "didMigrateDefaultsToAppGroup"
  19. private static let didRemoveStandardDefaults: String = "didRemoveStandardDefaults"
  20. static var shared: UserDefaults {
  21. if let groupDefaults = UserDefaults(suiteName: UserDefaults.appGroupName),
  22. groupDefaults.bool(forKey: UserDefaults.didMigrateDefaultsToAppGroup) {
  23. return groupDefaults
  24. } else {
  25. do {
  26. let groupDefaults = try UserDefaults.standard.migrateDefaultsToAppGroup()
  27. return groupDefaults
  28. } catch {
  29. return UserDefaults.standard
  30. }
  31. }
  32. }
  33. private func migrateDefaultsToAppGroup() throws -> UserDefaults {
  34. let userDefaults = UserDefaults.standard
  35. let groupDefaults = UserDefaults(suiteName: UserDefaults.appGroupName)
  36. if let groupDefaults = groupDefaults {
  37. if groupDefaults.bool(forKey: UserDefaults.didMigrateDefaultsToAppGroup) {
  38. return groupDefaults
  39. }
  40. for (key, value) in userDefaults.dictionaryRepresentation() {
  41. groupDefaults.set(value, forKey: key)
  42. }
  43. groupDefaults.set(true, forKey: UserDefaults.didMigrateDefaultsToAppGroup)
  44. return groupDefaults
  45. } else {
  46. throw UserDefaultsError.couldNotMigrateStandardDefaults
  47. }
  48. }
  49. }