Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2f5f408

Browse files
committed
fix: use shortest fqdn as workspace display name
1 parente694321 commit2f5f408

File tree

5 files changed

+35
-27
lines changed

5 files changed

+35
-27
lines changed

‎Coder Desktop/Coder Desktop/Preview Content/PreviewVPN.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,27 @@ import SwiftUI
33

44
@MainActor
55
finalclass PreviewVPN:Coder_Desktop.VPNService{
6-
@Publishedvarstate:Coder_Desktop.VPNServiceState=.disabled
6+
@Publishedvarstate:Coder_Desktop.VPNServiceState=.connected
77
@PublishedvarmenuState:VPNMenuState=.init(agents:[
8-
UUID():Agent(id:UUID(), name:"dev", status:.error,copyableDNS:"asdf.coder", wsName:"dogfood2",
8+
UUID():Agent(id:UUID(), name:"dev", status:.error,fqdns:["asdf.coder"], wsName:"dogfood2",
99
wsID:UUID()),
10-
UUID():Agent(id:UUID(), name:"dev", status:.okay,copyableDNS:"asdf.coder",
10+
UUID():Agent(id:UUID(), name:"dev", status:.okay,fqdns:["asdf.coder"],
1111
wsName:"testing-a-very-long-name", wsID:UUID()),
12-
UUID():Agent(id:UUID(), name:"dev", status:.warn,copyableDNS:"asdf.coder", wsName:"opensrc",
12+
UUID():Agent(id:UUID(), name:"dev", status:.warn,fqdns:["asdf.coder"], wsName:"opensrc",
1313
wsID:UUID()),
14-
UUID():Agent(id:UUID(), name:"dev", status:.off,copyableDNS:"asdf.coder", wsName:"gvisor",
14+
UUID():Agent(id:UUID(), name:"dev", status:.off,fqdns:["asdf.coder"], wsName:"gvisor",
1515
wsID:UUID()),
16-
UUID():Agent(id:UUID(), name:"dev", status:.off,copyableDNS:"asdf.coder", wsName:"example",
16+
UUID():Agent(id:UUID(), name:"dev", status:.off,fqdns:["asdf.coder"], wsName:"example",
1717
wsID:UUID()),
18-
UUID():Agent(id:UUID(), name:"dev", status:.error,copyableDNS:"asdf.coder", wsName:"dogfood2",
18+
UUID():Agent(id:UUID(), name:"dev", status:.error,fqdns:["asdf.coder"], wsName:"dogfood2",
1919
wsID:UUID()),
20-
UUID():Agent(id:UUID(), name:"dev", status:.okay,copyableDNS:"asdf.coder",
20+
UUID():Agent(id:UUID(), name:"dev", status:.okay,fqdns:["asdf.coder"],
2121
wsName:"testing-a-very-long-name", wsID:UUID()),
22-
UUID():Agent(id:UUID(), name:"dev", status:.warn,copyableDNS:"asdf.coder", wsName:"opensrc",
22+
UUID():Agent(id:UUID(), name:"dev", status:.warn,fqdns:["asdf.coder"], wsName:"opensrc",
2323
wsID:UUID()),
24-
UUID():Agent(id:UUID(), name:"dev", status:.off,copyableDNS:"asdf.coder", wsName:"gvisor",
24+
UUID():Agent(id:UUID(), name:"dev", status:.off,fqdns:["asdf.coder"], wsName:"gvisor",
2525
wsID:UUID()),
26-
UUID():Agent(id:UUID(), name:"dev", status:.off,copyableDNS:"asdf.coder", wsName:"example",
26+
UUID():Agent(id:UUID(), name:"dev", status:.off,fqdns:["asdf.coder"], wsName:"example",
2727
wsID:UUID()),
2828
], workspaces:[:])
2929
letshouldFail:Bool

‎Coder Desktop/Coder Desktop/VPNMenuState.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ struct Agent: Identifiable, Equatable, Comparable {
66
letid:UUID
77
letname:String
88
letstatus:AgentStatus
9-
letcopyableDNS:String
9+
letfqdns:[String]
1010
letwsName:String
1111
letwsID:UUID
1212

@@ -17,6 +17,11 @@ struct Agent: Identifiable, Equatable, Comparable {
1717
}
1818
return lhs.wsName.localizedCompare(rhs.wsName)==.orderedAscending
1919
}
20+
21+
// Choose the shortest hostname, and remove trailing dot if present
22+
varprimaryHost:String?{ fqdns.min(by:{ $0.count< $1.count})
23+
.map{ $0.hasSuffix(".")?String($0.dropLast()): $0}
24+
}
2025
}
2126

2227
enumAgentStatus:Int,Equatable,Comparable{
@@ -67,9 +72,7 @@ struct VPNMenuState {
6772
name: agent.name,
6873
// If last handshake was not within last five minutes, the agent is unhealthy
6974
status: agent.lastHandshake.date>Date.now.addingTimeInterval(-300)?.okay:.warn,
70-
// Choose the shortest hostname, and remove trailing dot if present
71-
copyableDNS: agent.fqdn.min(by:{ $0.count< $1.count})
72-
.map{ $0.hasSuffix(".")?String($0.dropLast()): $0}??"UNKNOWN",
75+
fqdns: agent.fqdn,
7376
wsName: wsName,
7477
wsID: wsID
7578
)

‎Coder Desktop/Coder Desktop/Views/VPNMenuItem.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,17 @@ struct MenuItemView: View {
4747
@StateprivatevarnameIsSelected:Bool=false
4848
@StateprivatevarcopyIsSelected:Bool=false
4949

50-
privatevarfmtWsName:AttributedString{
51-
varformattedName=AttributedString(item.wsName)
50+
privatevaritemName:AttributedString{
51+
letname=switch item{
52+
caselet.agent(agent): agent.primaryHost??"\(item.wsName).coder"
53+
case.offlineWorkspace:"\(item.wsName).coder"
54+
}
55+
56+
varformattedName=AttributedString(name)
5257
formattedName.foregroundColor=.primary
53-
varcoderPart=AttributedString(".coder")
54-
coderPart.foregroundColor=.gray
55-
formattedName.append(coderPart)
58+
iflet range= formattedName.range(of:".coder"){
59+
formattedName[range].foregroundColor=.gray
60+
}
5661
return formattedName
5762
}
5863

@@ -73,7 +78,7 @@ struct MenuItemView: View {
7378
.fill(item.status.color.opacity(1.0))
7479
.frame(width:7, height:7)
7580
}
76-
Text(fmtWsName).lineLimit(1).truncationMode(.tail)
81+
Text(itemName).lineLimit(1).truncationMode(.tail)
7782
Spacer()
7883
}.padding(.horizontal,Theme.Size.trayPadding)
7984
.frame(minHeight:22)
@@ -84,10 +89,10 @@ struct MenuItemView: View {
8489
.onHover{ hoveringin nameIsSelected= hovering}
8590
Spacer()
8691
}.buttonStyle(.plain)
87-
if caselet.agent(agent)= item{
92+
if caselet.agent(agent)= item,let copyableDNS= agent.primaryHost{
8893
Button{
8994
NSPasteboard.general.clearContents()
90-
NSPasteboard.general.setString(agent.copyableDNS, forType:.string)
95+
NSPasteboard.general.setString(copyableDNS, forType:.string)
9196
} label:{
9297
Image(systemName:"doc.on.doc")
9398
.symbolVariant(.fill)

‎Coder Desktop/Coder DesktopTests/AgentsTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ struct AgentsTests {
2424
id:UUID(),
2525
name:"dev",
2626
status:.okay,
27-
copyableDNS:"a\($0).example.com",
28-
wsName:"a\($0)",
27+
fqdns:["a\($0).coder"],
28+
wsName:"ws\($0)",
2929
wsID:UUID()
3030
)
3131
return(agent.id, agent)

‎Coder Desktop/Coder DesktopTests/VPNMenuStateTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct VPNMenuStateTests {
2727
#expect(storedAgent.name=="dev")
2828
#expect(storedAgent.wsID== workspaceID)
2929
#expect(storedAgent.wsName=="foo")
30-
#expect(storedAgent.copyableDNS=="foo.coder")
30+
#expect(storedAgent.primaryHost=="foo.coder")
3131
#expect(storedAgent.status==.okay)
3232
}
3333

@@ -123,7 +123,7 @@ struct VPNMenuStateTests {
123123
letstoredAgent=try #require(state.agents[newAgentID])
124124
#expect(storedAgent.name=="agent1")
125125
#expect(storedAgent.wsID== workspaceID)
126-
#expect(storedAgent.copyableDNS=="foo.coder")
126+
#expect(storedAgent.primaryHost=="foo.coder")
127127
#expect(storedAgent.status==.okay)
128128
}
129129

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp