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

This commit is contained in:
neon443
2025-07-03 11:34:04 +01:00
parent 200e1fd76c
commit e9dc468a97
3 changed files with 12 additions and 10 deletions

View File

@@ -18,6 +18,14 @@ enum HostSymbol: Codable, Equatable, Hashable, CaseIterable {
case genericServer case genericServer
case genericServerVertical case genericServerVertical
var image: Image {
if isCustom {
return Image(self.sf)
} else {
return Image(systemName: self.sf)
}
}
var sf: String { var sf: String {
switch self { switch self {
case .desktopcomputer: case .desktopcomputer:

View File

@@ -51,7 +51,7 @@ struct KeyDetailView: View {
Button() { Button() {
hostsManager.set(keypair: keypair, onHost: host) hostsManager.set(keypair: keypair, onHost: host)
} label: { } label: {
Image(systemName: "plus") host.symbol.image
.resizable().scaledToFit() .resizable().scaledToFit()
.foregroundStyle(.blue) .foregroundStyle(.blue)
.frame(width: 20, height: 20) .frame(width: 20, height: 20)

View File

@@ -13,15 +13,9 @@ struct HostSymbolPreview: View {
var body: some View { var body: some View {
ZStack(alignment: .center) { ZStack(alignment: .center) {
if symbol.isCustom { symbol.image
Image(symbol.sf)
.resizable().scaledToFit() .resizable().scaledToFit()
.symbolRenderingMode(.monochrome) .symbolRenderingMode(.monochrome)
} else {
Image(systemName: symbol.sf)
.resizable().scaledToFit()
.symbolRenderingMode(.monochrome)
}
Text(label) Text(label)
.font(.headline) .font(.headline)
.offset(symbol.offset) .offset(symbol.offset)