From 78f12e45f91e77f338ab496a881cfc3b2df24633 Mon Sep 17 00:00:00 2001 From: nythepegasus Date: Fri, 20 Oct 2023 21:43:51 -0400 Subject: [PATCH] Add iOS 17 JIT error notice with other errors --- AltStore/Browse/BrowseViewController.swift | 9 +++- AltStore/LaunchViewController.swift | 7 ++- AltStore/My Apps/MyAppsViewController.swift | 52 ++++++++++++++++++- .../BackgroundRefreshAppsOperation.swift | 9 +++- AltStore/Operations/OperationError.swift | 4 ++ 5 files changed, 76 insertions(+), 5 deletions(-) diff --git a/AltStore/Browse/BrowseViewController.swift b/AltStore/Browse/BrowseViewController.swift index ec1bb75d..a23fbbe9 100644 --- a/AltStore/Browse/BrowseViewController.swift +++ b/AltStore/Browse/BrowseViewController.swift @@ -8,6 +8,7 @@ import UIKit +import minimuxer import AltStoreCore import Roxas @@ -264,7 +265,13 @@ private extension BrowseViewController previousProgress?.cancel() return } - + + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } + _ = AppManager.shared.install(app, presentingViewController: self) { (result) in DispatchQueue.main.async { switch result diff --git a/AltStore/LaunchViewController.swift b/AltStore/LaunchViewController.swift index 9c0abd06..f63ddc2c 100644 --- a/AltStore/LaunchViewController.swift +++ b/AltStore/LaunchViewController.swift @@ -155,7 +155,12 @@ final class LaunchViewController: RSTLaunchViewController, UIDocumentPickerDeleg try! FileManager.default.removeItem(at: FileManager.default.documentsDirectory.appendingPathComponent("\(pairingFileName)")) displayError("minimuxer failed to start, please restart SideStore. \((error as? LocalizedError)?.failureReason ?? "UNKNOWN ERROR!!!!!! REPORT TO GITHUB ISSUES!")") } - start_auto_mounter(documentsDirectory) + if #available(iOS 17, *) { + // TODO: iOS 17 and above have a new JIT implementation that is completely broken in SideStore :( + } + else { + start_auto_mounter(documentsDirectory) + } } } diff --git a/AltStore/My Apps/MyAppsViewController.swift b/AltStore/My Apps/MyAppsViewController.swift index 7bdd44a4..57de2c8e 100644 --- a/AltStore/My Apps/MyAppsViewController.swift +++ b/AltStore/My Apps/MyAppsViewController.swift @@ -15,6 +15,7 @@ import UniformTypeIdentifiers import AltStoreCore import AltSign import Roxas +import minimuxer import Nuke @@ -640,6 +641,12 @@ private extension MyAppsViewController @IBAction func refreshAllApps(_ sender: UIBarButtonItem) { + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } + self.isRefreshingAllApps = true self.collectionView.collectionViewLayout.invalidateLayout() @@ -702,6 +709,12 @@ private extension MyAppsViewController @IBAction func sideloadApp(_ sender: UIBarButtonItem) { + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } + let supportedTypes = UTType.types(tag: "ipa", tagClass: .filenameExtension, conformingTo: nil) let documentPickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: supportedTypes, asCopy: true) @@ -1006,6 +1019,12 @@ private extension MyAppsViewController func refresh(_ installedApp: InstalledApp) { + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } + let previousProgress = AppManager.shared.refreshProgress(for: installedApp) guard previousProgress == nil else { previousProgress?.cancel() @@ -1027,6 +1046,12 @@ private extension MyAppsViewController func activate(_ installedApp: InstalledApp) { + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } + func finish(_ result: Result) { do @@ -1103,6 +1128,11 @@ private extension MyAppsViewController func deactivate(_ installedApp: InstalledApp, completionHandler: ((Result) -> Void)? = nil) { guard installedApp.isActive else { return } + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } installedApp.isActive = false AppManager.shared.deactivate(installedApp, presentingViewController: self) { (result) in @@ -1164,6 +1194,11 @@ private extension MyAppsViewController func backup(_ installedApp: InstalledApp) { + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } let title = NSLocalizedString("Start Backup?", comment: "") let message = NSLocalizedString("This will replace any previous backups. Please leave SideStore open until the backup is complete.", comment: "") @@ -1203,6 +1238,11 @@ private extension MyAppsViewController func restore(_ installedApp: InstalledApp) { + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } let message = String(format: NSLocalizedString("This will replace all data you currently have in %@.", comment: ""), installedApp.name) let alertController = UIAlertController(title: NSLocalizedString("Are you sure you want to restore this backup?", comment: ""), message: message, preferredStyle: .actionSheet) alertController.addAction(.cancel) @@ -1306,6 +1346,16 @@ private extension MyAppsViewController @available(iOS 14, *) func enableJIT(for installedApp: InstalledApp) { + if #available(iOS 17, *) { + let toastView = ToastView(error: OperationError.tooNewError) + toastView.show(in: self) + return + } + if !minimuxer.ready() { + let toastView = ToastView(error: MinimuxerError.NoConnection) + toastView.show(in: self) + return + } AppManager.shared.enableJIT(for: installedApp) { result in DispatchQueue.main.async { switch result @@ -1313,7 +1363,7 @@ private extension MyAppsViewController case .success: break case .failure(let error): let toastView = ToastView(error: error) - toastView.show(in: self) + toastView.show(in: self.navigationController?.view ?? self.view, duration: 5) } } } diff --git a/AltStore/Operations/BackgroundRefreshAppsOperation.swift b/AltStore/Operations/BackgroundRefreshAppsOperation.swift index e38a9a1c..ccf596f5 100644 --- a/AltStore/Operations/BackgroundRefreshAppsOperation.swift +++ b/AltStore/Operations/BackgroundRefreshAppsOperation.swift @@ -105,8 +105,13 @@ final class BackgroundRefreshAppsOperation: ResultOperation<[String: Result