forked from MeloNX/MeloNX
Upload files to "src/MeloNX/MeloNX/App/Core/JIT/JitStreamerEB"
- Add ability to set the Jitstreamer-EB server IP for self-host purposes - Defaults to the [fd00::] IP still
This commit is contained in:
parent
1b69c0bdc6
commit
302ddeee85
@ -6,32 +6,75 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
// MARK: - Server Address Management
|
||||||
|
|
||||||
|
/// Key for storing the JITEB server address in UserDefaults
|
||||||
|
private let JITEB_SERVER_ADDRESS_KEY = "jitServerAddress"
|
||||||
|
|
||||||
|
/// Returns the current JITEB server address.
|
||||||
|
/// Defaults to `[fd00::]` if no address is set.
|
||||||
|
func getJITServerAddress() -> String {
|
||||||
|
return UserDefaults.standard.string(forKey: JITEB_SERVER_ADDRESS_KEY) ?? "[fd00::]"
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Updates the JITEB server address in UserDefaults.
|
||||||
|
func setJITServerAddress(_ address: String) {
|
||||||
|
UserDefaults.standard.set(address, forKey: JITEB_SERVER_ADDRESS_KEY)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - JIT Enablement
|
||||||
|
|
||||||
|
/// Enables JIT execution by communicating with the JITEB server.
|
||||||
func enableJITEB() {
|
func enableJITEB() {
|
||||||
guard let bundleID = Bundle.main.bundleIdentifier else {
|
guard let bundleID = Bundle.main.bundleIdentifier else {
|
||||||
|
print("Error: Unable to retrieve bundle ID.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let address = URL(string: "http://[fd00::]:9172/launch_app/\(bundleID)")!
|
|
||||||
|
|
||||||
|
// Construct the URL using the current server address
|
||||||
|
let serverAddress = getJITServerAddress()
|
||||||
|
let urlString = "http://\(serverAddress):9172/launch_app/\(bundleID)"
|
||||||
|
|
||||||
|
guard let address = URL(string: urlString) else {
|
||||||
|
print("Error: Invalid server address.")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send a network request to the JITEB server
|
||||||
let task = URLSession.shared.dataTask(with: address) { data, response, error in
|
let task = URLSession.shared.dataTask(with: address) { data, response, error in
|
||||||
if error != nil {
|
if let error = error {
|
||||||
|
print("Network error: \(error.localizedDescription)")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
guard let httpResponse = response as? HTTPURLResponse else {
|
||||||
|
print("Error: Invalid server response.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
DispatchQueue.main.async {
|
|
||||||
showLaunchAppAlert(jsonData: data!, in: UIApplication.shared.windows.last!.rootViewController!)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
guard let data = data else {
|
||||||
|
print("Error: No data received from server.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show the launch status to the user
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
if let rootViewController = UIApplication.shared.windows.last?.rootViewController {
|
||||||
|
showLaunchAppAlert(jsonData: data, in: rootViewController)
|
||||||
|
} else {
|
||||||
|
print("Error: Unable to access root view controller.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
task.resume()
|
task.resume()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Launch App Response Handling
|
||||||
|
|
||||||
|
/// Struct to decode the JSON response from the JITEB server
|
||||||
struct LaunchApp: Codable {
|
struct LaunchApp: Codable {
|
||||||
let ok: Bool
|
let ok: Bool
|
||||||
let error: String?
|
let error: String?
|
||||||
@ -40,6 +83,7 @@ struct LaunchApp: Codable {
|
|||||||
let mounting: Bool
|
let mounting: Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Displays an alert with the app launch status.
|
||||||
func showLaunchAppAlert(jsonData: Data, in viewController: UIViewController) {
|
func showLaunchAppAlert(jsonData: Data, in viewController: UIViewController) {
|
||||||
do {
|
do {
|
||||||
let result = try JSONDecoder().decode(LaunchApp.self, from: jsonData)
|
let result = try JSONDecoder().decode(LaunchApp.self, from: jsonData)
|
||||||
@ -76,3 +120,26 @@ func showLaunchAppAlert(jsonData: Data, in viewController: UIViewController) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Server Address Configuration
|
||||||
|
|
||||||
|
/// Displays an alert to allow the user to change the JITEB server address.
|
||||||
|
func configureJITServerAddress(in viewController: UIViewController) {
|
||||||
|
let alert = UIAlertController(title: "Configure JITEB Server", message: "Enter the server address (e.g., [fd00::] or 192.168.1.100):", preferredStyle: .alert)
|
||||||
|
|
||||||
|
alert.addTextField { textField in
|
||||||
|
textField.placeholder = "Server Address"
|
||||||
|
textField.text = getJITServerAddress()
|
||||||
|
}
|
||||||
|
|
||||||
|
alert.addAction(UIAlertAction(title: "Save", style: .default) { _ in
|
||||||
|
if let textField = alert.textFields?.first, let newAddress = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) {
|
||||||
|
setJITServerAddress(newAddress)
|
||||||
|
print("JITEB server address updated to: \(newAddress)")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
|
||||||
|
|
||||||
|
viewController.present(alert, animated: true)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user