Adds "Enable JIT" context menu action for active apps

Allows users to manually enable JIT for apps that don't explicitly support AltKit.
This commit is contained in:
Riley Testut
2021-09-03 13:57:15 -05:00
parent e4b0b153e5
commit 9c72b7ae8f
5 changed files with 239 additions and 0 deletions

View File

@@ -23,6 +23,7 @@ extension AppManager
static let didFetchSourceNotification = Notification.Name("com.altstore.AppManager.didFetchSource")
static let expirationWarningNotificationID = "altstore-expiration-warning"
static let enableJITResultNotificationID = "altstore-enable-jit"
}
@available(iOS 13, *)
@@ -540,6 +541,28 @@ extension AppManager
self.run([removeAppOperation, removeAppBackupOperation], context: authenticationContext)
}
@available(iOS 14, *)
func enableJIT(for installedApp: InstalledApp, completionHandler: @escaping (Result<Void, Error>) -> Void)
{
class Context: OperationContext, EnableJITContext
{
var installedApp: InstalledApp?
}
let context = Context()
context.installedApp = installedApp
let findServerOperation = self.findServer(context: context) { _ in }
let enableJITOperation = EnableJITOperation(context: context)
enableJITOperation.resultHandler = { (result) in
completionHandler(result)
}
enableJITOperation.addDependency(findServerOperation)
self.run([enableJITOperation], context: context, requiresSerialQueue: true)
}
func installationProgress(for app: AppProtocol) -> Progress?
{
let progress = self.installationProgress[app.bundleIdentifier]