From d61c54fa60b681b7d40e3b22090e83c693789a8c Mon Sep 17 00:00:00 2001 From: Nythepegasus Date: Thu, 27 Jul 2023 05:10:27 -0400 Subject: [PATCH] Reintroduce notification/pop-up --- AltStore/Operations/InstallAppOperation.swift | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/AltStore/Operations/InstallAppOperation.swift b/AltStore/Operations/InstallAppOperation.swift index 0e4234e5..5c438d5a 100644 --- a/AltStore/Operations/InstallAppOperation.swift +++ b/AltStore/Operations/InstallAppOperation.swift @@ -162,7 +162,43 @@ final class InstallAppOperation: ResultOperation return } print("We are still installing after 3 seconds") - UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) + UNUserNotificationCenter.current().getNotificationSettings { settings in + switch (settings.authorizationStatus) { + case .authorized, .ephemeral, .provisional: + print("Notifications are enabled") + + let content = UNMutableNotificationContent() + content.title = "Refreshing..." + content.body = "To finish refreshing, SideStore must be moved to the background, which it does by going to the home screen. Please reopen SideStore after it is done refreshing!" + let notification = UNNotificationRequest(identifier: Bundle.Info.appbundleIdentifier + ".FinishRefreshNotification", content: content, trigger: UNTimeIntervalNotificationTrigger(timeInterval: 2, repeats: false)) + UNUserNotificationCenter.current().add(notification) + + UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) + + break + default: + print("Notifications are not enabled") + + let alert = UIAlertController(title: "Finish Refresh", message: "To finish refreshing, SideStore must be moved to the background. To do this, you can either go to the Home Screen manually or by hitting Continue. Please reopen SideStore after doing this.", preferredStyle: .alert) + alert.addAction(UIAlertAction(title: NSLocalizedString("Continue", comment: ""), style: .default, handler: { _ in + print("Going home") + UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) + })) + + DispatchQueue.main.async { + let keyWindow = UIApplication.shared.windows.filter { $0.isKeyWindow }.first + if var topController = keyWindow?.rootViewController { + while let presentedViewController = topController.presentedViewController { + topController = presentedViewController + } + topController.present(alert, animated: true) + } else { + print("No key window? Let's just go home") + UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) + } + } + } + } } } var attempts = 10