Add tests for MoonrakerSocketManager, some UI changes in front-end
This commit is contained in:
		@@ -0,0 +1,38 @@
 | 
			
		||||
{
 | 
			
		||||
  "colors" : [
 | 
			
		||||
    {
 | 
			
		||||
      "color" : {
 | 
			
		||||
        "color-space" : "srgb",
 | 
			
		||||
        "components" : {
 | 
			
		||||
          "alpha" : "1.000",
 | 
			
		||||
          "blue" : "0.300",
 | 
			
		||||
          "green" : "0.300",
 | 
			
		||||
          "red" : "0.300"
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "idiom" : "universal"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "appearances" : [
 | 
			
		||||
        {
 | 
			
		||||
          "appearance" : "luminosity",
 | 
			
		||||
          "value" : "dark"
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "color" : {
 | 
			
		||||
        "color-space" : "srgb",
 | 
			
		||||
        "components" : {
 | 
			
		||||
          "alpha" : "1.000",
 | 
			
		||||
          "blue" : "1.000",
 | 
			
		||||
          "green" : "1.000",
 | 
			
		||||
          "red" : "1.000"
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "idiom" : "universal"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "info" : {
 | 
			
		||||
    "author" : "xcode",
 | 
			
		||||
    "version" : 1
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,6 +2,11 @@
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>NSAppTransportSecurity</key>
 | 
			
		||||
	<dict>
 | 
			
		||||
		<key>NSAllowsArbitraryLoads</key>
 | 
			
		||||
		<true/>
 | 
			
		||||
	</dict>
 | 
			
		||||
	<key>CFBundleURLTypes</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
@@ -21,7 +26,5 @@
 | 
			
		||||
		<string>_moonraker._tcp.</string>
 | 
			
		||||
		<string>_http._tcp.</string>
 | 
			
		||||
	</array>
 | 
			
		||||
	<key>NSServices</key>
 | 
			
		||||
	<array/>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
//
 | 
			
		||||
//  PrinterRequestManager.swift
 | 
			
		||||
//  MoonrakerSocketManager.swift
 | 
			
		||||
//  KlipperMon
 | 
			
		||||
//
 | 
			
		||||
//  Created by maddiefuzz on 2/7/23.
 | 
			
		||||
@@ -11,8 +11,6 @@ import AppKit
 | 
			
		||||
import Starscream
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// MARK: PrinterRequestManager
 | 
			
		||||
//@MainActor
 | 
			
		||||
class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
 | 
			
		||||
    let WEBSOCKET_TIMEOUT_INTERVAL: TimeInterval = 60.0
 | 
			
		||||
    
 | 
			
		||||
@@ -32,10 +30,11 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
 | 
			
		||||
    
 | 
			
		||||
    private var socket: WebSocket?
 | 
			
		||||
    private var lastPingDate = Date()
 | 
			
		||||
    private var starscreamEngine: Engine
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    // MARK: PRM init()
 | 
			
		||||
    init() {
 | 
			
		||||
    init(starscreamEngine: Engine = WSEngine(transport: TCPTransport())) {
 | 
			
		||||
        state = ""
 | 
			
		||||
        progress = 0.0
 | 
			
		||||
        extruderTemperature = 0.0
 | 
			
		||||
@@ -43,6 +42,8 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
 | 
			
		||||
        socketHost = ""
 | 
			
		||||
        socketPort = ""
 | 
			
		||||
        
 | 
			
		||||
        self.starscreamEngine = starscreamEngine
 | 
			
		||||
        
 | 
			
		||||
        // Set up sleep/wake notification observers
 | 
			
		||||
        let center = NSWorkspace.shared.notificationCenter;
 | 
			
		||||
        let mainQueue = OperationQueue.main
 | 
			
		||||
@@ -80,7 +81,8 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
 | 
			
		||||
                    let hostString = "\(host)"
 | 
			
		||||
                    let regex = try! Regex("%(.+)")
 | 
			
		||||
                    let match = hostString.firstMatch(of: regex)
 | 
			
		||||
                    let sanitizedHost = hostString.replacingOccurrences(of: match!.0, with: "")
 | 
			
		||||
                    
 | 
			
		||||
                    let sanitizedHost = hostString.replacingOccurrences(of: match?.0 ?? "", with: "")
 | 
			
		||||
                    
 | 
			
		||||
                    print("[sanitized] Resolved \(sanitizedHost):\(port)")
 | 
			
		||||
                    
 | 
			
		||||
@@ -111,8 +113,9 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
 | 
			
		||||
        //let fullUrlString = "http://\(socketHost):\(socketPort)/websocket"
 | 
			
		||||
        var request = URLRequest(url: URL(string: "http://\(socketHost):\(socketPort)/websocket")!)
 | 
			
		||||
        request.timeoutInterval = 5
 | 
			
		||||
        socket = WebSocket(request: request)
 | 
			
		||||
        socket = WebSocket(request: request, engine: starscreamEngine)
 | 
			
		||||
        socket!.delegate = self
 | 
			
		||||
        print("About to connect to WebSocket at: \(request.debugDescription)")
 | 
			
		||||
        socket!.connect()
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@@ -125,7 +128,7 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
 | 
			
		||||
        self.openWebsocket()
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    // MARK: Callsbacks
 | 
			
		||||
    // MARK: Callbacks
 | 
			
		||||
    func screenChangedSleepState(_ notification: Notification) {
 | 
			
		||||
        switch(notification.name) {
 | 
			
		||||
        case NSWorkspace.screensDidSleepNotification:
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ struct PrinterConfigView: View {
 | 
			
		||||
                                printerManager.connectToBonjourEndpoint(result.endpoint)
 | 
			
		||||
                            } label: {
 | 
			
		||||
                                Text("Connect")
 | 
			
		||||
                                    .foregroundColor(.white)
 | 
			
		||||
                                    //.foregroundColor(.white)
 | 
			
		||||
                                    .padding()
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@ struct SoyuzMenuBarExtraView: View {
 | 
			
		||||
                openWindow(id: "soyuz_cfg")
 | 
			
		||||
            } label: {
 | 
			
		||||
                Text("Printers")
 | 
			
		||||
                    .foregroundColor(.white)
 | 
			
		||||
                    .foregroundColor(Color("ButtonForegroundColor"))
 | 
			
		||||
            }
 | 
			
		||||
            Spacer()
 | 
			
		||||
            if(printerManager.isConnected) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user