Clean up SideJITServer Implementation

This commit is contained in:
Stossy11
2025-01-14 13:47:38 +11:00
parent 0da743e9a6
commit acb8af5645
2 changed files with 33 additions and 34 deletions

View File

@@ -1503,27 +1503,27 @@ private extension MyAppsViewController
} }
} }
func enableJIT(for installedApp: InstalledApp) func enableJIT(for installedApp: InstalledApp) {
{
let sidejitenabled = UserDefaults.standard.sidejitenable let sidejitenabled = UserDefaults.standard.sidejitenable
if #unavailable(iOS 17) { if #unavailable(iOS 17), !sidejitenabled {
guard minimuxerStatus else { return } guard minimuxerStatus else { return }
} }
if #available(iOS 17, *), !sidejitenabled { if #available(iOS 17, *), !sidejitenabled {
ToastView(error: (OperationError.tooNewError as NSError).withLocalizedTitle("No iOS 17 On Device JIT!"), opensLog: true).show(in: self) let error = OperationError.tooNewError as NSError
AppManager.shared.log(OperationError.tooNewError, operation: .enableJIT, app: installedApp) let localizedError = error.withLocalizedTitle("No iOS 17 On Device JIT!")
ToastView(error: localizedError, opensLog: true).show(in: self)
AppManager.shared.log(error, operation: .enableJIT, app: installedApp)
return return
} }
AppManager.shared.enableJIT(for: installedApp) { result in AppManager.shared.enableJIT(for: installedApp) { result in
DispatchQueue.main.async { DispatchQueue.main.async {
switch result switch result {
{ case .success:
case .success: break break
case .failure(let error): case .failure(let error):
ToastView(error: error, opensLog: true).show(in: self) ToastView(error: error, opensLog: true).show(in: self)
AppManager.shared.log(error, operation: .enableJIT, app: installedApp) AppManager.shared.log(error, operation: .enableJIT, app: installedApp)

View File

@@ -53,13 +53,15 @@ final class EnableJITOperation<Context: EnableJITContext>: ResultOperation<Void>
guard let installedApp = self.context.installedApp else { guard let installedApp = self.context.installedApp else {
return self.finish(.failure(OperationError.invalidParameters("EnableJITOperation.main: self.context.installedApp is nil"))) return self.finish(.failure(OperationError.invalidParameters("EnableJITOperation.main: self.context.installedApp is nil")))
} }
if #available(iOS 17, *) {
let sideJITenabled = UserDefaults.standard.sidejitenable let userdefaults = UserDefaults.standard
let SideJITIP = UserDefaults.standard.textInputSideJITServerurl ?? ""
if #available(iOS 17, *), userdefaults.sidejitenable {
let SideJITIP = userdefaults.textInputSideJITServerurl ?? "http://sidejitserver._http._tcp.local:8080"
if sideJITenabled { if sideJITenabled {
installedApp.managedObjectContext?.perform { installedApp.managedObjectContext?.perform {
EnableJITSideJITServer(serverurl: SideJITIP, installedapp: installedApp) { result in EnableJITSideJITServer(serverurl: URL(string: SideJITIP)!, installedapp: installedApp) { result in
switch result { switch result {
case .failure(let error): case .failure(let error):
switch error { switch error {
@@ -80,7 +82,7 @@ final class EnableJITOperation<Context: EnableJITContext>: ResultOperation<Void>
} }
case .success(): case .success():
self.finish(.success(())) self.finish(.success(()))
print("Thank you for using this, it was made by Stossy11 and tested by trolley or sniper1239408") print("JIT Enabled Successfully :3 (code made by stossy11)")
} }
} }
return return
@@ -107,48 +109,45 @@ final class EnableJITOperation<Context: EnableJITContext>: ResultOperation<Void>
} }
@available(iOS 17, *) @available(iOS 17, *)
func EnableJITSideJITServer(serverurl: String, installedapp: InstalledApp, completion: @escaping (Result<Void, SideJITServerErrorType>) -> Void) { func enableJITSideJITServer(serverURL: URL, installedApp: InstalledApp, completion: @escaping (Result<Void, SideJITServerErrorType>) -> Void) {
guard let udid = fetch_udid()?.toString() else { guard let udid = fetch_udid()?.toString() else {
completion(.failure(.other("Unable to get UDID"))) completion(.failure(.other("Unable to get UDID")))
return return
} }
var SJSURL = serverurl guard serverURL.hasPrefix("http") else {
if (UserDefaults.standard.textInputSideJITServerurl ?? "").isEmpty {
SJSURL = "http://sidejitserver._http._tcp.local:8080"
}
if !SJSURL.hasPrefix("http") {
completion(.failure(.invalidURL)) completion(.failure(.invalidURL))
return return
} }
let fullurl = SJSURL + "/\(udid)/" + installedapp.resignedBundleIdentifier let serverURLWithUDID = serverURL.appendingPathComponent(udid)
let fullURL = serverURLWithUDID.appendingPathComponent(installedApp.resignedBundleIdentifier)
let url = URL(string: fullurl)! let task = URLSession.shared.dataTask(with: fullURL) { (data, response, error) in
let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
if let error = error { if let error = error {
completion(.failure(.errorConnecting)) completion(.failure(.errorConnecting))
return return
} }
guard let data = data, let datastring = String(data: data, encoding: .utf8) else { return } guard let data = data, let dataString = String(data: data, encoding: .utf8) else {
return
}
if datastring == "Enabled JIT for '\(installedapp.name)'!" { if dataString == "Enabled JIT for '\(installedApp.name)'!" {
let content = UNMutableNotificationContent() let content = UNMutableNotificationContent()
content.title = "JIT Successfully Enabled" content.title = "JIT Successfully Enabled"
content.subtitle = "JIT Enabled For \(installedapp.name)" content.subtitle = "JIT Enabled For \(installedApp.name)"
content.sound = UNNotificationSound.default content.sound = .default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.1, repeats: false) let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.1, repeats: false)
let request = UNNotificationRequest(identifier: "EnabledJIT", content: content, trigger: nil) let request = UNNotificationRequest(identifier: "EnabledJIT", content: content, trigger: nil)
UNUserNotificationCenter.current().add(request) UNUserNotificationCenter.current().add(request)
completion(.success(())) completion(.success(()))
} else { } else {
let errorType: SideJITServerErrorType = datastring == "Could not find device!" ? .deviceNotFound : .other(datastring) let errorType: SideJITServerErrorType = dataString == "Could not find device!"
? .deviceNotFound
: .other(dataString)
completion(.failure(errorType)) completion(.failure(errorType))
} }
} }