From e9dc468a97b281b31b2fa34921bbda8ec531c9d9 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Thu, 3 Jul 2025 11:34:04 +0100 Subject: [PATCH] add an `image` computed property to hostsymbol to return the Image so it safely returns an image from an sf symbol or an image from an ImageResource --- ShhShell/Host/HostSymbol.swift | 8 ++++++++ ShhShell/Views/Keys/KeyDetailView.swift | 2 +- ShhShell/Views/Misc/HostSymbolPreview.swift | 12 +++--------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ShhShell/Host/HostSymbol.swift b/ShhShell/Host/HostSymbol.swift index 5573653..aac9980 100644 --- a/ShhShell/Host/HostSymbol.swift +++ b/ShhShell/Host/HostSymbol.swift @@ -18,6 +18,14 @@ enum HostSymbol: Codable, Equatable, Hashable, CaseIterable { case genericServer case genericServerVertical + var image: Image { + if isCustom { + return Image(self.sf) + } else { + return Image(systemName: self.sf) + } + } + var sf: String { switch self { case .desktopcomputer: diff --git a/ShhShell/Views/Keys/KeyDetailView.swift b/ShhShell/Views/Keys/KeyDetailView.swift index ec31b55..09d22b0 100644 --- a/ShhShell/Views/Keys/KeyDetailView.swift +++ b/ShhShell/Views/Keys/KeyDetailView.swift @@ -51,7 +51,7 @@ struct KeyDetailView: View { Button() { hostsManager.set(keypair: keypair, onHost: host) } label: { - Image(systemName: "plus") + host.symbol.image .resizable().scaledToFit() .foregroundStyle(.blue) .frame(width: 20, height: 20) diff --git a/ShhShell/Views/Misc/HostSymbolPreview.swift b/ShhShell/Views/Misc/HostSymbolPreview.swift index dfe9d0a..e733546 100644 --- a/ShhShell/Views/Misc/HostSymbolPreview.swift +++ b/ShhShell/Views/Misc/HostSymbolPreview.swift @@ -13,15 +13,9 @@ struct HostSymbolPreview: View { var body: some View { ZStack(alignment: .center) { - if symbol.isCustom { - Image(symbol.sf) - .resizable().scaledToFit() - .symbolRenderingMode(.monochrome) - } else { - Image(systemName: symbol.sf) - .resizable().scaledToFit() - .symbolRenderingMode(.monochrome) - } + symbol.image + .resizable().scaledToFit() + .symbolRenderingMode(.monochrome) Text(label) .font(.headline) .offset(symbol.offset)