mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
Removes support for “background mode” permissions
This commit is contained in:
@@ -206,7 +206,7 @@ private extension VerificationError
|
||||
guard let permissions, !permissions.isEmpty else { return nil }
|
||||
|
||||
let permissionsByType = Dictionary(grouping: permissions) { $0.type }
|
||||
let permissionSections = [ALTAppPermissionType.entitlement, .privacy, .backgroundMode].compactMap { (type) -> String? in
|
||||
let permissionSections = [ALTAppPermissionType.entitlement, .privacy].compactMap { (type) -> String? in
|
||||
guard let permissions = permissionsByType[type] else { return nil }
|
||||
|
||||
// "Privacy:"
|
||||
|
||||
@@ -166,15 +166,10 @@ private extension FetchSourceOperation
|
||||
versions.insert(version.versionID)
|
||||
}
|
||||
|
||||
for permission in app.permissions
|
||||
for permission in app.permissions where permission.type == .privacy
|
||||
{
|
||||
switch permission.type
|
||||
{
|
||||
case .privacy, .backgroundMode:
|
||||
// Privacy permissions MUST have a usage description.
|
||||
guard permission.usageDescription != nil else { throw SourceError.missingPermissionUsageDescription(for: permission.permission, app: app, source: source) }
|
||||
|
||||
default: break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -293,20 +293,6 @@ private extension VerifyAppOperation
|
||||
allEntitlements = allEntitlements.filter { !ALTEntitlement.ignoredEntitlements.contains($0) }
|
||||
|
||||
|
||||
// Background Modes
|
||||
// App extensions can't have background modes, so don't need to worry about them.
|
||||
let allBackgroundModes: Set<ALTAppBackgroundMode>
|
||||
if let backgroundModes = app.bundle.infoDictionary?[Bundle.Info.backgroundModes] as? [String]
|
||||
{
|
||||
let backgroundModes = backgroundModes.lazy.map { ALTAppBackgroundMode($0) }
|
||||
allBackgroundModes = Set(backgroundModes)
|
||||
}
|
||||
else
|
||||
{
|
||||
allBackgroundModes = []
|
||||
}
|
||||
|
||||
|
||||
// Privacy
|
||||
let allPrivacyPermissions: Set<ALTAppPrivacyPermission>
|
||||
if #available(iOS 16, *)
|
||||
@@ -346,7 +332,7 @@ private extension VerifyAppOperation
|
||||
|
||||
// Verify permissions.
|
||||
let sourcePermissions: Set<AnyHashable> = Set(await $storeApp.perform { $0.permissions.map { AnyHashable($0.permission) } })
|
||||
let localPermissions: [any ALTAppPermission] = Array(allEntitlements) + Array(allBackgroundModes) + Array(allPrivacyPermissions)
|
||||
let localPermissions: [any ALTAppPermission] = Array(allEntitlements) + Array(allPrivacyPermissions)
|
||||
|
||||
// To pass: EVERY permission in localPermissions must also appear in sourcePermissions.
|
||||
// If there is a single missing permission, throw error.
|
||||
|
||||
@@ -84,7 +84,6 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
{
|
||||
case .entitlement: return ALTEntitlement(rawValue: self._permission)
|
||||
case .privacy: return ALTAppPrivacyPermission(rawValue: self._permission)
|
||||
case .backgroundMode: return ALTAppBackgroundMode(rawValue: self._permission)
|
||||
default: return UnknownAppPermission(rawValue: self._permission)
|
||||
}
|
||||
}
|
||||
@@ -105,7 +104,6 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
{
|
||||
case entitlement
|
||||
case privacyType = "privacy"
|
||||
case backgroundMode = "background"
|
||||
|
||||
case usageDescription
|
||||
}
|
||||
@@ -132,11 +130,6 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
|
||||
self._permission = privacyType
|
||||
self.type = .privacy
|
||||
}
|
||||
else if let backgroundMode = try container.decodeIfPresent(String.self, forKey: .backgroundMode)
|
||||
{
|
||||
self._permission = backgroundMode
|
||||
self.type = .backgroundMode
|
||||
}
|
||||
else
|
||||
{
|
||||
self._permission = ""
|
||||
|
||||
@@ -16,7 +16,6 @@ public extension ALTAppPermissionType
|
||||
case .unknown: return NSLocalizedString("Permission", comment: "")
|
||||
case .entitlement: return NSLocalizedString("Entitlement", comment: "")
|
||||
case .privacy: return NSLocalizedString("Privacy Permission", comment: "")
|
||||
case .backgroundMode: return NSLocalizedString("Background Mode", comment: "")
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
@@ -150,14 +149,3 @@ extension ALTAppPrivacyPermission: ALTAppPermission
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ALTAppBackgroundMode: ALTAppPermission
|
||||
{
|
||||
public var type: ALTAppPermissionType { .backgroundMode }
|
||||
public var symbolName: String? { nil }
|
||||
|
||||
public var localizedName: String? { nil }
|
||||
public var synthesizedName: String? { nil }
|
||||
|
||||
public var localizedDescription: String? { nil }
|
||||
}
|
||||
|
||||
@@ -12,11 +12,8 @@ typedef NSString *ALTAppPermissionType NS_TYPED_EXTENSIBLE_ENUM;
|
||||
extern ALTAppPermissionType const ALTAppPermissionTypeUnknown;
|
||||
extern ALTAppPermissionType const ALTAppPermissionTypeEntitlement;
|
||||
extern ALTAppPermissionType const ALTAppPermissionTypePrivacy;
|
||||
extern ALTAppPermissionType const ALTAppPermissionTypeBackgroundMode;
|
||||
|
||||
typedef NSString *ALTAppPrivacyPermission NS_TYPED_EXTENSIBLE_ENUM;
|
||||
typedef NSString *ALTAppBackgroundMode NS_TYPED_EXTENSIBLE_ENUM;
|
||||
|
||||
extern ALTAppPrivacyPermission const ALTAppPrivacyPermissionAppleMusic;
|
||||
extern ALTAppPrivacyPermission const ALTAppPrivacyPermissionBluetooth;
|
||||
extern ALTAppPrivacyPermission const ALTAppPrivacyPermissionCalendars;
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
ALTAppPermissionType const ALTAppPermissionTypeUnknown = @"unknown";
|
||||
ALTAppPermissionType const ALTAppPermissionTypeEntitlement = @"entitlement";
|
||||
ALTAppPermissionType const ALTAppPermissionTypePrivacy = @"privacy";
|
||||
ALTAppPermissionType const ALTAppPermissionTypeBackgroundMode = @"background";
|
||||
|
||||
ALTAppPrivacyPermission const ALTAppPrivacyPermissionAppleMusic = @"AppleMusic";
|
||||
ALTAppPrivacyPermission const ALTAppPrivacyPermissionBluetooth = @"BluetoothAlways";
|
||||
|
||||
Reference in New Issue
Block a user