From 2d6d4a0ba72ea23c3c2f4877d316e4d84d7d585c Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 30 Oct 2024 19:17:23 +0400 Subject: [PATCH] restructure --- .../NetworkAndServers/NetworkAndServers.swift | 73 ++++++++++++++++++- 1 file changed, 70 insertions(+), 3 deletions(-) diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift index d9e177b933..732b84e995 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift @@ -22,19 +22,42 @@ private enum NetworkAlert: Identifiable { struct NetworkAndServers: View { @EnvironmentObject var m: ChatModel @EnvironmentObject var theme: AppTheme + @State private var serverOperators: [ServerOperator] = [] var body: some View { VStack { List { + operatorsSection() + Section { NavigationLink { - AllServersView() - .navigationTitle("Servers") + ProtocolServersView(serverProtocol: .smp) + .navigationTitle("SMP servers") .modifier(ThemedBackground(grouped: true)) } label: { - Text("Servers") + Text("Message servers") } + NavigationLink { + ProtocolServersView(serverProtocol: .xftp) + .navigationTitle("XFTP servers") + .modifier(ThemedBackground(grouped: true)) + } label: { + Text("Media & file servers") + } + } header: { + Text("Other servers") + .foregroundColor(theme.colors.secondary) + } + + Section { + Button("Reset") {} + .disabled(true) + Button("Save") {} + .disabled(true) + } + + Section { NavigationLink { AdvancedNetworkSettings() .navigationTitle("Advanced settings") @@ -66,6 +89,50 @@ struct NetworkAndServers: View { } } } + .onAppear { + serverOperators = ChatModel.shared.serverOperators + } + } + + @ViewBuilder private func operatorsSection() -> some View { + let smpServers = [ServerCfg.sampleData.preset, ServerCfg.sampleData.preset] + let xftpServers = [ServerCfg.sampleData.xftpPreset, ServerCfg.sampleData.xftpPreset] + Section { + ForEach($serverOperators) { srvOperator in + serverOperatorView(srvOperator, smpServers, xftpServers) + } + } header: { + Text("Operators") + .foregroundColor(theme.colors.secondary) + } + } + + @ViewBuilder private func serverOperatorView( + _ serverOperator: Binding, + _ smpServers: [ServerCfg], + _ xftpServers: [ServerCfg] + ) -> some View { + let srvOperator = serverOperator.wrappedValue + NavigationLink() { + OperatorView( + serverOperator: serverOperator, + serverOperatorToEdit: srvOperator, + useOperator: srvOperator.enabled, + currSMPServers: smpServers, + currXFTPServers: xftpServers + ) + .navigationBarTitle("\(srvOperator.name) servers") + .modifier(ThemedBackground(grouped: true)) + .navigationBarTitleDisplayMode(.large) + } label: { + HStack { + Image(srvOperator.info.logo) + .resizable() + .scaledToFit() + .frame(width: 24, height: 24) + Text(srvOperator.name) + } + } } }