From 586841ba1bc1b4f8bd085776c6bf74da684d9188 Mon Sep 17 00:00:00 2001 From: Stephen B <158498287+StephenDev0@users.noreply.github.com> Date: Mon, 10 Nov 2025 02:28:42 -0500 Subject: [PATCH] Better pairing file errors --- StikJIT/Views/HomeView.swift | 77 ++++++------------------------------ 1 file changed, 12 insertions(+), 65 deletions(-) diff --git a/StikJIT/Views/HomeView.swift b/StikJIT/Views/HomeView.swift index d73e02f..5bd882f 100644 --- a/StikJIT/Views/HomeView.swift +++ b/StikJIT/Views/HomeView.swift @@ -403,8 +403,6 @@ struct HomeView: View { statusLightsRow vpnControls - - ddiControls } } @@ -417,6 +415,14 @@ struct HomeView: View { .font(.headline.weight(.semibold)) .foregroundStyle(.primary) + if primaryActionTitle == "New Pairing File Needed" { + statusBadge( + icon: "xmark.octagon.fill", + text: "Pairing file expired", + color: .red + ) + } + primaryActionControls if let info = connectionInfoMessage, !info.isEmpty { @@ -468,7 +474,6 @@ struct HomeView: View { } private var allStatusIndicatorsGreen: Bool { - pairingIndicatorStatus == .success && ddiIndicatorStatus == .success && wifiIndicatorStatus == .success && heartbeatIndicatorStatus == .success @@ -484,13 +489,6 @@ struct HomeView: View { private var statusLights: [StatusLightData] { [ - StatusLightData( - type: .pairing, - title: "Pairing", - icon: "doc.badge.plus", - status: pairingIndicatorStatus, - detail: pairingDetailText - ), StatusLightData( type: .ddi, title: "DDI", @@ -515,16 +513,9 @@ struct HomeView: View { ] } - private var pairingDetailText: String { - if isValidatingPairingFile { return "Validating…" } - if pairingFileExists { return "Ready" } - if pairingFilePresentOnDisk { return "Unreadable" } - return "Missing" - } - private var ddiDetailText: String { if ddiMounted { return "Mounted" } - if pairingFileLikelyInvalid { return "Needs pairing" } + if pairingFileLikelyInvalid { return "Error" } return pairingFileExists ? "Mount required" : "Not ready" } @@ -540,7 +531,7 @@ struct HomeView: View { } return "Pair first" } - + private var ddiIndicatorStatus: StartupIndicatorStatus { if ddiMounted { return .success } if pairingFileLikelyInvalid { return .warning } @@ -627,13 +618,6 @@ struct HomeView: View { return wifiConnected ? .success : .warning } - private var pairingIndicatorStatus: StartupIndicatorStatus { - if isValidatingPairingFile { return .running } - if pairingFileExists { return .success } - if pairingFilePresentOnDisk || pairingFileLikelyInvalid { return .warning } - return .error - } - private var heartbeatSubtitle: String { if heartbeatOK { return "Heartbeat is responding." @@ -733,27 +717,6 @@ struct HomeView: View { } } - private var ddiControls: some View { - VStack(alignment: .leading, spacing: 10) { - HStack { - Text("Developer Disk Image") - .font(.subheadline.weight(.semibold)) - .foregroundStyle(.primary) - Spacer() - statusBadge( - icon: ddiMounted ? "externaldrive.fill.badge.checkmark" : "externaldrive.badge.exclamationmark", - text: ddiMounted ? "Mounted" : "Not Mounted", - color: ddiStatusColor - ) - } - - Text(ddiStatusDescription) - .font(.footnote) - .foregroundStyle(.secondary) - - } - } - private var vpnStatusColor: Color { switch tunnel.tunnelStatus { case .connected: return .green @@ -781,22 +744,6 @@ struct HomeView: View { } } - private var ddiStatusDescription: String { - if ddiMounted { - return "Mounted successfully and ready for debugging." - } - if pairingFileLikelyInvalid { - return "We can’t mount until a valid pairing file is imported." - } - return "Mount the Developer Disk Image before enabling JIT." - } - - private var ddiStatusColor: Color { - if ddiMounted { return .green } - if pairingFileLikelyInvalid { return .yellow } - return .orange - } - private func runConnectionDiagnostics(autoStart: Bool = false) { guard !isConnectionCheckRunning else { return } connectionTimeoutTask?.cancel() @@ -834,7 +781,7 @@ struct HomeView: View { private var primaryActionTitle: String { if isValidatingPairingFile { return "Validating…" } if !pairingFileExists { return pairingFilePresentOnDisk ? "Import New Pairing File" : "Import Pairing File" } - if pairingFileLikelyInvalid { return "Import New Pairing File" } + if pairingFileLikelyInvalid { return "New Pairing File Needed" } if !ddiMounted { return "Mount Developer Disk Image" } return "Connect by App" } @@ -1331,6 +1278,7 @@ struct HomeView: View { return lastSignature != signature } + private func pairingFileSignature(for url: URL) -> PairingFileSignature { let attributes = (try? FileManager.default.attributesOfItem(atPath: url.path)) ?? [:] let modificationDate = attributes[.modificationDate] as? Date @@ -1700,7 +1648,6 @@ private struct StatusLightData: Identifiable { } private enum StatusLightType { - case pairing case ddi case wifi case heartbeat