mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-07-29 09:49:42 +00:00
user servers, icons
This commit is contained in:
@@ -189,14 +189,18 @@ struct ServersSummaryView: View {
|
||||
_ header: LocalizedStringKey? = nil,
|
||||
_ footer: LocalizedStringKey? = nil
|
||||
) -> some View {
|
||||
// Sort by known, then connected, then address
|
||||
let sortedServers = servers.sorted {
|
||||
$0.connected == $1.connected
|
||||
? serverAddress($0.smpServer) < serverAddress($1.smpServer)
|
||||
: $0.connected && !$1.connected
|
||||
$0.known == $1.known ? (
|
||||
$0.connected == $1.connected
|
||||
? serverAddress($0.smpServer) < serverAddress($1.smpServer)
|
||||
: $0.connected && !$1.connected
|
||||
) : ($0.known ?? false) && !($1.known ?? false)
|
||||
}
|
||||
let reserveIconSpace = sortedServers.contains(where: { $0.known ?? false })
|
||||
Section {
|
||||
ForEach(sortedServers) { server in
|
||||
smpServerView(server, showReconnectButton, statsStartedAt)
|
||||
smpServerView(server, showReconnectButton, statsStartedAt, reserveIconSpace)
|
||||
}
|
||||
} header: {
|
||||
if let header = header {
|
||||
@@ -209,7 +213,7 @@ struct ServersSummaryView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func smpServerView(_ srvSumm: SMPServerSummary, _ showReconnectButton: Bool, _ statsStartedAt: Date) -> some View {
|
||||
private func smpServerView(_ srvSumm: SMPServerSummary, _ showReconnectButton: Bool, _ statsStartedAt: Date, _ reserveIconSpace: Bool) -> some View {
|
||||
NavigationLink(tag: srvSumm.id, selection: $selectedSMPServer) {
|
||||
SMPServerSummaryView(
|
||||
summary: srvSumm,
|
||||
@@ -220,6 +224,19 @@ struct ServersSummaryView: View {
|
||||
.navigationBarTitleDisplayMode(.large)
|
||||
} label: {
|
||||
HStack {
|
||||
Group {
|
||||
if srvSumm.known ?? false {
|
||||
Image(systemName: "server.rack")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.foregroundColor(.secondary)
|
||||
} else if reserveIconSpace {
|
||||
Color.clear
|
||||
}
|
||||
}
|
||||
.frame(width: 20, alignment: .center)
|
||||
.padding(.trailing, 4)
|
||||
|
||||
Text(serverAddress(srvSumm.smpServer))
|
||||
.lineLimit(1)
|
||||
if srvSumm.connected {
|
||||
@@ -243,10 +260,16 @@ struct ServersSummaryView: View {
|
||||
_ header: LocalizedStringKey? = nil,
|
||||
_ footer: LocalizedStringKey? = nil
|
||||
) -> some View {
|
||||
let sortedServers = servers.sorted { serverAddress($0.xftpServer) < serverAddress($1.xftpServer) }
|
||||
// Sort by known, then address
|
||||
let sortedServers = servers.sorted {
|
||||
$0.known == $1.known
|
||||
? serverAddress($0.xftpServer) < serverAddress($1.xftpServer)
|
||||
: ($0.known ?? false) && !($1.known ?? false)
|
||||
}
|
||||
let reserveIconSpace = sortedServers.contains(where: { $0.known ?? false })
|
||||
Section {
|
||||
ForEach(sortedServers) { server in
|
||||
xftpServerView(server, statsStartedAt)
|
||||
xftpServerView(server, statsStartedAt, reserveIconSpace)
|
||||
}
|
||||
} header: {
|
||||
if let header = header {
|
||||
@@ -259,7 +282,7 @@ struct ServersSummaryView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func xftpServerView(_ srvSumm: XFTPServerSummary, _ statsStartedAt: Date) -> some View {
|
||||
private func xftpServerView(_ srvSumm: XFTPServerSummary, _ statsStartedAt: Date, _ reserveIconSpace: Bool) -> some View {
|
||||
NavigationLink(tag: srvSumm.id, selection: $selectedXFTPServer) {
|
||||
XFTPServerSummaryView(
|
||||
summary: srvSumm,
|
||||
@@ -269,6 +292,19 @@ struct ServersSummaryView: View {
|
||||
.navigationBarTitleDisplayMode(.large)
|
||||
} label: {
|
||||
HStack {
|
||||
Group {
|
||||
if srvSumm.known ?? false {
|
||||
Image(systemName: "server.rack")
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.foregroundColor(.secondary)
|
||||
} else if reserveIconSpace {
|
||||
Color.clear
|
||||
}
|
||||
}
|
||||
.frame(width: 20, alignment: .center)
|
||||
.padding(.trailing, 4)
|
||||
|
||||
Text(serverAddress(srvSumm.xftpServer))
|
||||
.lineLimit(1)
|
||||
if srvSumm.rcvInProgress || srvSumm.sndInProgress || srvSumm.delInProgress {
|
||||
@@ -410,7 +446,10 @@ struct SMPServerSummaryView: View {
|
||||
Text("Server address")
|
||||
} footer: {
|
||||
if let known = summary.known, known {
|
||||
Text("Server is configured in **Settings** → **Network & servers**.")
|
||||
HStack {
|
||||
Image(systemName: "server.rack").font(.caption)
|
||||
Text("Server is configured in **Settings** → **Network & servers**.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -420,9 +459,15 @@ struct SMPServerSummaryView: View {
|
||||
reconnectButtonSection()
|
||||
} footer: {
|
||||
if summary.subs != nil {
|
||||
Text("Connection status is displayed based on Message subscriptions.")
|
||||
HStack {
|
||||
Image(systemName: "dot.radiowaves.up.forward")
|
||||
Text("Connection status is displayed based on Message subscriptions.")
|
||||
}
|
||||
} else if summary.sessions != nil {
|
||||
Text("Connection status is displayed based on Transport sessions.")
|
||||
HStack {
|
||||
Image(systemName: "dot.radiowaves.up.forward")
|
||||
Text("Connection status is displayed based on Transport sessions.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -593,7 +638,10 @@ struct XFTPServerSummaryView: View {
|
||||
Text("Server address")
|
||||
} footer: {
|
||||
if let known = summary.known, known {
|
||||
Text("Server is configured in **Settings** → **Network & servers**.")
|
||||
HStack {
|
||||
Image(systemName: "server.rack").font(.caption)
|
||||
Text("Server is configured in **Settings** → **Network & servers**.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user