// // AppPermissionProtocol.swift // AltStore // // Created by Riley Testut on 5/23/23. // Copyright © 2023 Riley Testut. All rights reserved. // import AltStoreCore @dynamicMemberLookup protocol AppPermissionProtocol: Hashable { var permission: any ALTAppPermission { get } var usageDescription: String? { get } subscript(dynamicMember dynamicMember: KeyPath) -> T { get } } extension AppPermission: AppPermissionProtocol {} struct PreviewAppPermission: AppPermissionProtocol { var permission: any ALTAppPermission var usageDescription: String? { "Allows Delta to use images from your Photo Library as game artwork." } subscript(dynamicMember dynamicMember: KeyPath) -> T { return self.permission[keyPath: dynamicMember] } } extension PreviewAppPermission { static func ==(lhs: PreviewAppPermission, rhs: PreviewAppPermission) -> Bool { return lhs.permission.isEqual(rhs.permission) } func hash(into hasher: inout Hasher) { hasher.combine(self.permission) } }