Skip to content

Commit 6c93d68

Browse files
GUI Enhancements and Code Refactoring
1 parent f41d93c commit 6c93d68

7 files changed

+175
-122
lines changed

PSDirectSender/ConnectionDetails.swift

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77

88
import Foundation
99

10+
class LogsCollector: ObservableObject {
11+
@Published var logLines: [String] = []
12+
func addLog(_ text: String) {
13+
DispatchQueue.main.async {
14+
self.logLines.append("[\(getStringDate())] \(text)")
15+
}
16+
}
17+
}
18+
1019
class ConnectionDetails: ObservableObject {
1120
@Published var serverIP: String = ""
1221
@Published var serverPort: String = ""
@@ -15,8 +24,6 @@ class ConnectionDetails: ObservableObject {
1524
@Published var connectionStatus: ServerStatus = .stopped
1625
@Published var networkingIPs: [String] = []
1726

18-
@Published var logLines: [String] = []
19-
2027
func generateServerDetails() {
2128
serverPort = String(networking.findFreePort())
2229

@@ -25,10 +32,4 @@ class ConnectionDetails: ObservableObject {
2532
serverIP = ip
2633
}
2734
}
28-
29-
func addLog(_ text: String) {
30-
DispatchQueue.main.async {
31-
self.logLines.append("[\(getStringDate())] \(text)")
32-
}
33-
}
3435
}

PSDirectSender/PSDirectSenderApp.swift

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ let message: MessageCollection = .init()
1515

1616
@main
1717
struct PSDirectSenderApp: App {
18-
@StateObject var currentTheme = ConnectionDetails()
19-
18+
@StateObject var connectionDetails = ConnectionDetails()
19+
@StateObject var logsCollector = LogsCollector()
20+
2021
var body: some Scene {
2122
WindowGroup {
2223
ContentView()
23-
.environmentObject(currentTheme)
24+
.environmentObject(connectionDetails)
25+
.environmentObject(logsCollector)
2426
.frame(minWidth: 650,
2527
idealWidth: 750,
2628
maxWidth: .infinity,
@@ -181,12 +183,14 @@ func swiftStartServer(serverIP: String, serverPort: String) {
181183
}
182184

183185
@discardableResult
184-
func sendPackagesToConsole(packageFilename: String, consoleIP: String, consolePort: Int, serverIP: String, serverPort: Int) -> Any? {
186+
func sendPackagesToConsole(packageFilename: String, connection: ConnectionDetails) -> Any? {
185187

186-
let dataStructure = PackageSenderData(type: "direct", packages: ["http://\(serverIP):\(serverPort)/\(packageFilename)"])
188+
let dataStructure = PackageSenderData(type: "direct",
189+
packages: ["http://\(connection.serverIP):\(connection.serverPort)/\(packageFilename)"]
190+
)
187191
let jsonData = try? JSONEncoder().encode(dataStructure)
188192

189-
let builtURL = URL(string: "http://\(consoleIP):\(consolePort)/api/install")
193+
let builtURL = URL(string: "http://\(connection.consoleIP):\(connection.consolePort)/api/install")
190194

191195
var request = URLRequest(
192196
url: (builtURL)!,
@@ -214,8 +218,8 @@ func sendPackagesToConsole(packageFilename: String, consoleIP: String, consolePo
214218
return nil
215219
}
216220

217-
func checkIfServerIsWorking(serverIP: String, serverPort: String) -> ServerStatus {
218-
guard let url = URL(string: "http://\(serverIP):\(serverPort)") else {
221+
func checkIfServerIsWorking(connection: ConnectionDetails) -> ServerStatus {
222+
guard let url = URL(string: "http://\(connection.serverIP):\(connection.serverPort)") else {
219223
return .fail
220224
}
221225
var status: ServerStatus = .stopped

PSDirectSender/SFOExplorer.swift

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,23 @@ class SFOExplorer {
104104
return nil
105105
}
106106

107+
func getParamSFOData(url: URL) -> [String: String]? {
108+
do {
109+
let fileHandler: FileHandle = try .init(forReadingFrom: url)
110+
return getParamSFOData(fileHandler: fileHandler)
111+
} catch { }
112+
return nil
113+
}
114+
107115
func getParamSFOData(fileHandler: FileHandle) -> [String: String] {
108116
/// MAGIC
109-
/*let magic: Int32*/ _ = loadFileDataBlocks(
117+
/*
118+
let magic: Int32 = loadFileDataBlocks(
110119
from: 0,
111120
bytesCount: 4,
112121
fileHandler: fileHandler
113122
).integerRepresentation
123+
*/
114124

115125
/// PARAM.SFO
116126
guard let offset32: UInt32 = getParamSFOOffset(fileHandler: fileHandler) else {
@@ -171,16 +181,3 @@ class SFOExplorer {
171181
return paramSFOData
172182
}
173183
}
174-
/*printTimeElapsedWhenRunningCode(title: "Main", operation: {
175-
let pkgPath: String = "/Users/macintosh/0000000000000000000.pkg"
176-
177-
guard let fileHandler: FileHandle = .init(forReadingAtPath: pkgPath) else {
178-
return
179-
}
180-
181-
let data = getParamSFOData(fileHandler: fileHandler)
182-
for (key, value) in data {
183-
print("\(key)=\(value)")
184-
}
185-
try? fileHandler.close()
186-
})*/

PSDirectSender/Screens/ConfigurationView.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ fileprivate class HelpShow: ObservableObject {
1717

1818
struct ConfigurationView: View {
1919
@EnvironmentObject var connection: ConnectionDetails
20+
@EnvironmentObject var logsCollector: LogsCollector
21+
2022
@StateObject var inputConnectionData: ConnectionDetails = ConnectionDetails()
2123

2224
@StateObject fileprivate var helpShow: HelpShow = HelpShow()
@@ -139,7 +141,7 @@ struct ConfigurationView: View {
139141
connection.consoleIP = inputConnectionData.consoleIP
140142
connection.consolePort = inputConnectionData.consolePort
141143

142-
connection.addLog("""
144+
logsCollector.addLog("""
143145
Staring web server:
144146
[SERVER] IP: \(connection.serverIP) Port: \(connection.serverPort)
145147
[CONSOLE] IP: \(connection.consoleIP) Port: \(connection.consolePort)
@@ -173,7 +175,7 @@ Staring web server:
173175
return
174176
}
175177

176-
let status = checkIfServerIsWorking(serverIP: connection.serverIP, serverPort: connection.serverPort)
178+
let status = checkIfServerIsWorking(connection: connection)
177179
DispatchQueue.main.async {
178180
connection.connectionStatus = status
179181
connectionStatusLoaded = true

PSDirectSender/Screens/LogsView.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,23 @@ import SwiftUI
99

1010
struct LogsView: View {
1111
@EnvironmentObject var connection: ConnectionDetails
12-
12+
@EnvironmentObject var logsCollector: LogsCollector
13+
1314
var body: some View {
1415
VStack {
1516
HStack(spacing: 25) {
1617
ColorButton(text: "Copy logs", color: .purple, image: Image(systemName: "doc.on.doc"), action: {
1718
let pasteboard = NSPasteboard.general
1819
pasteboard.clearContents()
19-
pasteboard.setString(connection.logLines.joined(separator: "\n"), forType: .string)
20+
pasteboard.setString(logsCollector.logLines.joined(separator: "\n"), forType: .string)
2021
})
2122

2223
ColorButton(text: "Clear logs", color: .red, image: Image(systemName: "trash"), action: {
23-
connection.logLines.removeAll()
24+
logsCollector.logLines.removeAll()
2425
})
2526
}.padding()
2627
List {
27-
ForEach(connection.logLines, id: \.self) { logLine in
28+
ForEach(logsCollector.logLines, id: \.self) { logLine in
2829
Text(LocalizedStringKey(logLine))
2930
.frame(maxWidth: .infinity, alignment: .leading)
3031
.lineLimit(3)
@@ -42,13 +43,12 @@ struct LogsView_Previews: PreviewProvider {
4243

4344
static var previews: some View {
4445
let view = LogsView()
45-
.environmentObject({ () -> ConnectionDetails in
46-
let vm = ConnectionDetails()
47-
vm.addLog("Can't get server configuration.")
48-
vm.addLog("Can't get console configuration.")
49-
vm.addLog("Creating package alias \(#""/Volumes/Macintosh HD/game.pkg""#) -> \"\(tempDirectory.path)\(UUID().uuidString).pkg\"")
50-
51-
return vm
46+
.environmentObject({ () -> LogsCollector in
47+
let logsCollector = LogsCollector()
48+
logsCollector.addLog("Can't get server configuration.")
49+
logsCollector.addLog("Can't get console configuration.")
50+
logsCollector.addLog("Creating package alias \(#""/Volumes/Macintosh HD/game.pkg""#) -> \"\(tempDirectory.path)\(UUID().uuidString).pkg\"")
51+
return logsCollector
5252
}())
5353
view
5454
view

0 commit comments

Comments
 (0)