Allows changing BrowseViewController sort order

This commit is contained in:
Riley Testut
2023-12-07 17:54:59 -06:00
committed by Magesh K
parent 5cb40de113
commit 71eb77cfda
4 changed files with 150 additions and 7 deletions

View File

@@ -53,6 +53,17 @@ public extension UserDefaults
@NSManaged var trustedServerURL: String?
@NSManaged var skipPatreonDownloads: Bool
@nonobjc var preferredAppSorting: AppSorting {
get {
let sorting = _preferredAppSorting.flatMap { AppSorting(rawValue: $0) } ?? .default
return sorting
}
set {
_preferredAppSorting = newValue.rawValue
}
}
@NSManaged @objc(preferredAppSorting) private var _preferredAppSorting: String?
@nonobjc
var activeAppsLimit: Int? {
get {
@@ -103,6 +114,10 @@ public extension UserDefaults
let permissionCheckingDisabled = false
#endif
// Pre-iOS 15 doesn't support custom sorting, so default to sorting by name.
// Otherwise, default to `default` sorting (a.k.a. "source order").
let preferredAppSorting: AppSorting = if #available(iOS 15, *) { .default } else { .name }
let defaults = [
#keyPath(UserDefaults.isAppLimitDisabled): false,
#keyPath(UserDefaults.isBackgroundRefreshEnabled): true,
@@ -117,7 +132,8 @@ public extension UserDefaults
#keyPath(UserDefaults.ignoreActiveAppsLimit): false,
#keyPath(UserDefaults.isMacDirtyCowSupported): isMacDirtyCowSupported
#keyPath(UserDefaults.permissionCheckingDisabled): permissionCheckingDisabled,
] as [String : Any]
#keyPath(UserDefaults._preferredAppSorting): preferredAppSorting.rawValue,
] as [String: Any]
UserDefaults.standard.register(defaults: defaults)
UserDefaults.shared.register(defaults: defaults)