[AltStoreCore] Fixes incorrectly merging permissions for same app from different sources

This commit is contained in:
Riley Testut
2023-05-30 15:28:26 -05:00
committed by Magesh K
parent f926f596aa
commit 15b3cd5f2d
3 changed files with 10 additions and 2 deletions

View File

@@ -27,8 +27,9 @@
</uniquenessConstraints> </uniquenessConstraints>
</entity> </entity>
<entity name="AppPermission" representedClassName="AppPermission" syncable="YES"> <entity name="AppPermission" representedClassName="AppPermission" syncable="YES">
<attribute name="appBundleID" optional="YES" attributeType="String"/> <attribute name="appBundleID" attributeType="String"/>
<attribute name="permission" attributeType="String"/> <attribute name="permission" attributeType="String"/>
<attribute name="sourceID" attributeType="String"/>
<attribute name="type" attributeType="String"/> <attribute name="type" attributeType="String"/>
<attribute name="usageDescription" attributeType="String"/> <attribute name="usageDescription" attributeType="String"/>
<relationship name="app" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="StoreApp" inverseName="permissions" inverseEntity="StoreApp"/> <relationship name="app" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="StoreApp" inverseName="permissions" inverseEntity="StoreApp"/>
@@ -37,6 +38,7 @@
<constraint value="appBundleID"/> <constraint value="appBundleID"/>
<constraint value="permission"/> <constraint value="permission"/>
<constraint value="type"/> <constraint value="type"/>
<constraint value="sourceID"/>
</uniquenessConstraint> </uniquenessConstraint>
</uniquenessConstraints> </uniquenessConstraints>
</entity> </entity>

View File

@@ -97,7 +97,8 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
@NSManaged @objc(permission) private var _permission: String @NSManaged @objc(permission) private var _permission: String
// Set by StoreApp. // Set by StoreApp.
@NSManaged public var appBundleID: String? @NSManaged public var appBundleID: String
@NSManaged public var sourceID: String
/* Relationships */ /* Relationships */
@NSManaged public internal(set) var app: StoreApp? @NSManaged public internal(set) var app: StoreApp?

View File

@@ -137,6 +137,11 @@ public class StoreApp: NSManagedObject, Decodable, Fetchable
{ {
version.sourceID = newValue version.sourceID = newValue
} }
for permission in self.permissions
{
permission.sourceID = self.sourceIdentifier ?? ""
}
} }
} }
@NSManaged private var primitiveSourceIdentifier: String? @NSManaged private var primitiveSourceIdentifier: String?