From 9413c23cc5e1af57bc100e0b245484acc19b92d3 Mon Sep 17 00:00:00 2001 From: tracer Date: Sun, 19 Apr 2026 11:33:15 +0200 Subject: [PATCH] fixed color crash --- Sources/Views/PreferencesView.swift | 34 +++++++++++++++++++++--- Sources/Views/Tabs/ResourcesView.swift | 36 ++++++++++++++------------ 2 files changed, 51 insertions(+), 19 deletions(-) diff --git a/Sources/Views/PreferencesView.swift b/Sources/Views/PreferencesView.swift index d1aff91..9a92dea 100644 --- a/Sources/Views/PreferencesView.swift +++ b/Sources/Views/PreferencesView.swift @@ -23,6 +23,7 @@ struct PreferencesView: View { } } @EnvironmentObject private var sparkleUpdater: SparkleUpdater + @Environment(\.colorScheme) private var colorScheme @AppStorage("pingInterval") private var storedPingInterval: Int = 10 @AppStorage("refreshInterval") private var storedRefreshInterval: Int = 60 @@ -143,12 +144,39 @@ struct PreferencesView: View { } private func backgroundColor(for tab: Tab) -> Color { if selection == tab { - return Color.accentColor + return sidebarSelectionColor } if hoveredTab == tab { - return Color.accentColor.opacity(0.2) + return sidebarHoverColor + } + return sidebarBaseColor + } + + private var sidebarSelectionColor: Color { + switch colorScheme { + case .dark: + return Color(red: 0.22, green: 0.45, blue: 0.88) + default: + return Color(red: 0.10, green: 0.39, blue: 0.90) + } + } + + private var sidebarHoverColor: Color { + switch colorScheme { + case .dark: + return Color(red: 0.20, green: 0.22, blue: 0.27) + default: + return Color(red: 0.87, green: 0.91, blue: 0.98) + } + } + + private var sidebarBaseColor: Color { + switch colorScheme { + case .dark: + return Color(red: 0.15, green: 0.16, blue: 0.19) + default: + return Color(red: 0.96, green: 0.97, blue: 0.99) } - return Color.accentColor.opacity(0.08) } } diff --git a/Sources/Views/Tabs/ResourcesView.swift b/Sources/Views/Tabs/ResourcesView.swift index 983e518..7ab4a91 100644 --- a/Sources/Views/Tabs/ResourcesView.swift +++ b/Sources/Views/Tabs/ResourcesView.swift @@ -17,6 +17,10 @@ import SwiftUI struct ResourcesView: View { @Binding var server: Server + private var displayInfo: ServerInfo { + server.info ?? .placeholder + } + var body: some View { GeometryReader { geometry in ScrollView { @@ -25,40 +29,40 @@ struct ResourcesView: View { Text("CPU Load") } value: { LoadBarCell( - percent: (server.info?.load.percent)!, - load1: (server.info?.load.minute1)!, - load5: (server.info?.load.minute5)!, - load15: (server.info?.load.minute15)! + percent: displayInfo.load.percent, + load1: displayInfo.load.minute1, + load5: displayInfo.load.minute5, + load15: displayInfo.load.minute15 ) } TableRowView { Text("Memory") } value: { UsageBarCell( - free: (server.info?.memory.free)!, - used: (server.info?.memory.used)!, - total: (server.info?.memory.total)!, - percent: (server.info?.memory.percent)! + free: displayInfo.memory.free, + used: displayInfo.memory.used, + total: displayInfo.memory.total, + percent: displayInfo.memory.percent ) } TableRowView { Text("Swap") } value: { UsageBarCell( - free: (server.info?.swap.free)!, - used: (server.info?.swap.used)!, - total: (server.info?.swap.total)!, - percent: (server.info?.swap.percent)! + free: displayInfo.swap.free, + used: displayInfo.swap.used, + total: displayInfo.swap.total, + percent: displayInfo.swap.percent ) } TableRowView { Text("SSD") } value: { UsageBarCell( - free: (server.info?.diskSpace.free)!, - used: (server.info?.diskSpace.used)!, - total: (server.info?.diskSpace.total)!, - percent: (server.info?.diskSpace.percent)! + free: displayInfo.diskSpace.free, + used: displayInfo.diskSpace.used, + total: displayInfo.diskSpace.total, + percent: displayInfo.diskSpace.percent ) } }