mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-25 22:54:29 +00:00
ios: add known server wip
This commit is contained in:
@@ -487,6 +487,11 @@ func setUserProtoServers(_ serverProtocol: ServerProtocol, servers: [ServerCfg])
|
||||
try await sendCommandOkResp(.apiSetUserProtoServers(userId: userId, serverProtocol: serverProtocol, servers: servers))
|
||||
}
|
||||
|
||||
func addKnownProtoServer(server: String) async throws {
|
||||
let userId = try currentUserId("addKnownProtoServer")
|
||||
try await sendCommandOkResp(.apiAddKnownProtoServer(userId: userId, server: server))
|
||||
}
|
||||
|
||||
func testProtoServer(server: String) async throws -> Result<(), ProtocolTestFailure> {
|
||||
let userId = try currentUserId("testProtoServer")
|
||||
let r = await chatSendCmd(.apiTestProtoServer(userId: userId, server: server))
|
||||
|
||||
@@ -385,9 +385,9 @@ struct SMPServerSummaryView: View {
|
||||
.textSelection(.enabled)
|
||||
if let known = summary.known, !known {
|
||||
Button {
|
||||
// TODO
|
||||
addKnownServer()
|
||||
} label: {
|
||||
Text("TODO Add as known")
|
||||
Text("Add as known")
|
||||
}
|
||||
}
|
||||
} header: {
|
||||
@@ -497,6 +497,21 @@ struct SMPServerSummaryView: View {
|
||||
indentedInfoRow("errors", "\(stats._connSubErrs)")
|
||||
}
|
||||
}
|
||||
|
||||
func addKnownServer() {
|
||||
Task {
|
||||
do {
|
||||
try await addKnownProtoServer(server: summary.smpServer)
|
||||
await MainActor.run {
|
||||
// TODO disable button, etc.
|
||||
}
|
||||
} catch let error {
|
||||
await MainActor.run {
|
||||
alert = errorAddingServerAlert(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func indentedInfoRow(_ title: LocalizedStringKey, _ value: String) -> some View {
|
||||
@@ -509,9 +524,20 @@ private func indentedInfoRow(_ title: LocalizedStringKey, _ value: String) -> so
|
||||
}
|
||||
}
|
||||
|
||||
private func errorAddingServerAlert(_ error: Error) -> SomeAlert {
|
||||
SomeAlert(
|
||||
alert: mkAlert(
|
||||
title: "Error adding server",
|
||||
message: "Make sure server address is in correct format (\(responseError(error)))."
|
||||
),
|
||||
id: "error saving server"
|
||||
)
|
||||
}
|
||||
|
||||
struct XFTPServerSummaryView: View {
|
||||
var summary: XFTPServerSummary
|
||||
var statsStartedAt: Date
|
||||
@State private var alert: SomeAlert?
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
@@ -520,9 +546,9 @@ struct XFTPServerSummaryView: View {
|
||||
.textSelection(.enabled)
|
||||
if let known = summary.known, !known {
|
||||
Button {
|
||||
// TODO
|
||||
addKnownServer()
|
||||
} label: {
|
||||
Text("TODO Add as known")
|
||||
Text("Add as known")
|
||||
}
|
||||
}
|
||||
} header: {
|
||||
@@ -543,6 +569,7 @@ struct XFTPServerSummaryView: View {
|
||||
statsSection(stats)
|
||||
}
|
||||
}
|
||||
.alert(item: $alert) { $0.alert }
|
||||
}
|
||||
|
||||
private func sessionsSection(_ sess: ServerSessions) -> some View {
|
||||
@@ -580,6 +607,21 @@ struct XFTPServerSummaryView: View {
|
||||
indentedInfoRow("errors", "\(stats._deleteErrs)")
|
||||
}
|
||||
}
|
||||
|
||||
func addKnownServer() {
|
||||
Task {
|
||||
do {
|
||||
try await addKnownProtoServer(server: summary.xftpServer)
|
||||
await MainActor.run {
|
||||
// TODO disable button, etc.
|
||||
}
|
||||
} catch let error {
|
||||
await MainActor.run {
|
||||
alert = errorAddingServerAlert(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
|
||||
@@ -71,6 +71,7 @@ public enum ChatCommand {
|
||||
case apiSendMemberContactInvitation(contactId: Int64, msg: MsgContent)
|
||||
case apiGetUserProtoServers(userId: Int64, serverProtocol: ServerProtocol)
|
||||
case apiSetUserProtoServers(userId: Int64, serverProtocol: ServerProtocol, servers: [ServerCfg])
|
||||
case apiAddKnownProtoServer(userId: Int64, server: String)
|
||||
case apiTestProtoServer(userId: Int64, server: String)
|
||||
case apiSetChatItemTTL(userId: Int64, seconds: Int64?)
|
||||
case apiGetChatItemTTL(userId: Int64)
|
||||
@@ -224,6 +225,7 @@ public enum ChatCommand {
|
||||
case let .apiSendMemberContactInvitation(contactId, mc): return "/_invite member contact @\(contactId) \(mc.cmdString)"
|
||||
case let .apiGetUserProtoServers(userId, serverProtocol): return "/_servers \(userId) \(serverProtocol)"
|
||||
case let .apiSetUserProtoServers(userId, serverProtocol, servers): return "/_servers \(userId) \(serverProtocol) \(protoServersStr(servers))"
|
||||
case let .apiAddKnownProtoServer(userId, server): return "/_known server \(userId) \(server)"
|
||||
case let .apiTestProtoServer(userId, server): return "/_server test \(userId) \(server)"
|
||||
case let .apiSetChatItemTTL(userId, seconds): return "/_ttl \(userId) \(chatItemTTLStr(seconds: seconds))"
|
||||
case let .apiGetChatItemTTL(userId): return "/_ttl \(userId)"
|
||||
@@ -377,6 +379,7 @@ public enum ChatCommand {
|
||||
case .apiSendMemberContactInvitation: return "apiSendMemberContactInvitation"
|
||||
case .apiGetUserProtoServers: return "apiGetUserProtoServers"
|
||||
case .apiSetUserProtoServers: return "apiSetUserProtoServers"
|
||||
case .apiAddKnownProtoServer: return "apiAddKnownProtoServer"
|
||||
case .apiTestProtoServer: return "apiTestProtoServer"
|
||||
case .apiSetChatItemTTL: return "apiSetChatItemTTL"
|
||||
case .apiGetChatItemTTL: return "apiGetChatItemTTL"
|
||||
|
||||
Reference in New Issue
Block a user