Merge pull request #179 from jawshoeadan/beta-apps

Fix beta apps on the my apps view, and fix deactivating/activating apps
This commit is contained in:
jawshoeadan
2022-12-11 16:43:46 -06:00
committed by GitHub
10 changed files with 51 additions and 55 deletions

View File

@@ -5,7 +5,7 @@
<key>ALTAppGroups</key> <key>ALTAppGroups</key>
<array> <array>
<string>group.$(APP_GROUP_IDENTIFIER)</string> <string>group.$(APP_GROUP_IDENTIFIER)</string>
<string>group.com.rileytestut.AltStore</string> <string>group.com.SideStore.SideStore</string>
</array> </array>
<key>ALTBundleIdentifier</key> <key>ALTBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

View File

@@ -7,6 +7,7 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
03F06CD52942C27E001C4D68 /* Bundle+AltStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1E314122A05D4C00370A3C /* Bundle+AltStore.swift */; };
19104D952909BAEA00C49C7B /* libimobiledevice.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BF45872B2298D31600BD7491 /* libimobiledevice.a */; }; 19104D952909BAEA00C49C7B /* libimobiledevice.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BF45872B2298D31600BD7491 /* libimobiledevice.a */; };
19104DB52909C06D00C49C7B /* EmotionalDamage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19104DB42909C06D00C49C7B /* EmotionalDamage.swift */; }; 19104DB52909C06D00C49C7B /* EmotionalDamage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19104DB42909C06D00C49C7B /* EmotionalDamage.swift */; };
19104DBB2909C11700C49C7B /* libem_proxy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19104DA32909BC1000C49C7B /* libem_proxy.a */; }; 19104DBB2909C11700C49C7B /* libem_proxy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19104DA32909BC1000C49C7B /* libem_proxy.a */; };
@@ -2162,6 +2163,7 @@
BF580496246A3CB5008AE704 /* UIColor+AltBackup.swift in Sources */, BF580496246A3CB5008AE704 /* UIColor+AltBackup.swift in Sources */,
BF580482246A28F7008AE704 /* ViewController.swift in Sources */, BF580482246A28F7008AE704 /* ViewController.swift in Sources */,
BF44EEF0246B08BA002A52F2 /* BackupController.swift in Sources */, BF44EEF0246B08BA002A52F2 /* BackupController.swift in Sources */,
03F06CD52942C27E001C4D68 /* Bundle+AltStore.swift in Sources */,
BF58049B246A432D008AE704 /* NSError+AltStore.swift in Sources */, BF58049B246A432D008AE704 /* NSError+AltStore.swift in Sources */,
BF58047E246A28F7008AE704 /* AppDelegate.swift in Sources */, BF58047E246A28F7008AE704 /* AppDelegate.swift in Sources */,
); );

View File

@@ -5,7 +5,7 @@
<key>ALTAppGroups</key> <key>ALTAppGroups</key>
<array> <array>
<string>group.$(APP_GROUP_IDENTIFIER)</string> <string>group.$(APP_GROUP_IDENTIFIER)</string>
<string>group.com.rileytestut.AltStore</string> <string>group.com.SideStore.SideStore</string>
</array> </array>
<key>ALTDeviceID</key> <key>ALTDeviceID</key>
<string>00008101-000129D63698001E</string> <string>00008101-000129D63698001E</string>

View File

@@ -461,17 +461,10 @@ private extension MyAppsViewController
func updateDataSource() func updateDataSource()
{ {
if let patreonAccount = DatabaseManager.shared.patreonAccount(), patreonAccount.isPatron, PatreonAPI.shared.isAuthenticated
{
self.dataSource.predicate = nil self.dataSource.predicate = nil
}
else
{
self.dataSource.predicate = NSPredicate(format: "%K == nil OR %K == NO OR %K == %@",
#keyPath(InstalledApp.storeApp),
#keyPath(InstalledApp.storeApp.isBeta),
#keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID)
}
} }
} }

View File

@@ -131,19 +131,19 @@ extension FetchProvisioningProfilesOperation
// or if installedApp.team is nil but resignedBundleIdentifier contains the team's identifier. // or if installedApp.team is nil but resignedBundleIdentifier contains the team's identifier.
let teamsMatch = installedApp.team?.identifier == team.identifier || (installedApp.team == nil && installedApp.resignedBundleIdentifier.contains(team.identifier)) let teamsMatch = installedApp.team?.identifier == team.identifier || (installedApp.team == nil && installedApp.resignedBundleIdentifier.contains(team.identifier))
#if DEBUG // #if DEBUG
//
if app.isAltStoreApp // if app.isAltStoreApp
{ // {
// Use legacy bundle ID format for AltStore. // // Use legacy bundle ID format for AltStore.
preferredBundleID = teamsMatch ? installedApp.resignedBundleIdentifier : nil // preferredBundleID = teamsMatch ? installedApp.resignedBundleIdentifier : nil
} // }
else // else
{ // {
preferredBundleID = teamsMatch ? installedApp.resignedBundleIdentifier : nil // preferredBundleID = teamsMatch ? installedApp.resignedBundleIdentifier : nil
} // }
//
#else // #else
if teamsMatch if teamsMatch
{ {
@@ -157,7 +157,7 @@ extension FetchProvisioningProfilesOperation
preferredBundleID = nil preferredBundleID = nil
} }
#endif // #endif
} }
else else
{ {

Binary file not shown.

View File

@@ -173,15 +173,15 @@ public extension InstalledApp
{ {
var predicate = NSPredicate(format: "%K == YES AND %K != %@", #keyPath(InstalledApp.isActive), #keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID) var predicate = NSPredicate(format: "%K == YES AND %K != %@", #keyPath(InstalledApp.isActive), #keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID)
if let patreonAccount = DatabaseManager.shared.patreonAccount(in: context), patreonAccount.isPatron, PatreonAPI.shared.isAuthenticated // if let patreonAccount = DatabaseManager.shared.patreonAccount(in: context), patreonAccount.isPatron, PatreonAPI.shared.isAuthenticated
{ // {
// No additional predicate // // No additional predicate
} // }
else // else
{ // {
predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, // predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate,
NSPredicate(format: "%K == nil OR %K == NO", #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.storeApp.isBeta))]) // NSPredicate(format: "%K == nil OR %K == NO", #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.storeApp.isBeta))])
} // }
var installedApps = InstalledApp.all(satisfying: predicate, var installedApps = InstalledApp.all(satisfying: predicate,
sortedBy: [NSSortDescriptor(keyPath: \InstalledApp.expirationDate, ascending: true)], sortedBy: [NSSortDescriptor(keyPath: \InstalledApp.expirationDate, ascending: true)],
@@ -206,15 +206,15 @@ public extension InstalledApp
#keyPath(InstalledApp.refreshedDate), date as NSDate, #keyPath(InstalledApp.refreshedDate), date as NSDate,
#keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID) #keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID)
if let patreonAccount = DatabaseManager.shared.patreonAccount(in: context), patreonAccount.isPatron, PatreonAPI.shared.isAuthenticated // if let patreonAccount = DatabaseManager.shared.patreonAccount(in: context), patreonAccount.isPatron, PatreonAPI.shared.isAuthenticated
{ // {
// No additional predicate // // No additional predicate
} // }
else // else
{ // {
predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, // predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate,
NSPredicate(format: "%K == nil OR %K == NO", #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.storeApp.isBeta))]) // NSPredicate(format: "%K == nil OR %K == NO", #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.storeApp.isBeta))])
} // }
var installedApps = InstalledApp.all(satisfying: predicate, var installedApps = InstalledApp.all(satisfying: predicate,
sortedBy: [NSSortDescriptor(keyPath: \InstalledApp.expirationDate, ascending: true)], sortedBy: [NSSortDescriptor(keyPath: \InstalledApp.expirationDate, ascending: true)],

View File

@@ -52,15 +52,16 @@ public class PatreonAccount: NSManagedObject, Fetchable
self.name = response.data.attributes.full_name self.name = response.data.attributes.full_name
self.firstName = response.data.attributes.first_name self.firstName = response.data.attributes.first_name
if let patronResponse = response.included?.first // if let patronResponse = response.included?.first
{ // {
let patron = Patron(response: patronResponse) // let patron = Patron(response: patronResponse)
self.isPatron = (patron.status == .active) // self.isPatron = (patron.status == .active)
} // }
else // else
{ // {
self.isPatron = false // self.isPatron = false
} // }
self.isPatron = true
} }
} }

View File

@@ -271,7 +271,7 @@ public extension PatreonAPI
if let context = account.managedObjectContext, !account.isPatron if let context = account.managedObjectContext, !account.isPatron
{ {
// Deactivate all beta apps now that we're no longer a patron. // Deactivate all beta apps now that we're no longer a patron.
self.deactivateBetaApps(in: context) //self.deactivateBetaApps(in: context)
} }
try account.managedObjectContext?.save() try account.managedObjectContext?.save()

View File

@@ -5,7 +5,7 @@
<key>ALTAppGroups</key> <key>ALTAppGroups</key>
<array> <array>
<string>group.$(APP_GROUP_IDENTIFIER)</string> <string>group.$(APP_GROUP_IDENTIFIER)</string>
<string>group.com.rileytestut.AltStore</string> <string>group.com.SideStore.SideStore</string>
</array> </array>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>