diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AllServersView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AllServersView.swift deleted file mode 100644 index dacb282d8d..0000000000 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AllServersView.swift +++ /dev/null @@ -1,97 +0,0 @@ -// -// AllServersView.swift -// SimpleX (iOS) -// -// Created by spaced4ndy on 30.10.2024. -// Copyright © 2024 SimpleX Chat. All rights reserved. -// - -import SwiftUI -import SimpleXChat - -struct AllServersView: View { - @EnvironmentObject var theme: AppTheme - @State private var serverOperators: [ServerOperator] = [] - - var body: some View { - VStack { - List { - operatorsSection() - - Section { - NavigationLink { - ProtocolServersView(serverProtocol: .smp) - .navigationTitle("SMP servers") - .modifier(ThemedBackground(grouped: true)) - } label: { - 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("Save") {} - .disabled(true) - } - } - } - .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) - } - } - } -} - -#Preview { - AllServersView() -} diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift index 3172dc17a3..9fb5833f27 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift @@ -27,37 +27,17 @@ struct NetworkAndServers: View { var body: some View { VStack { List { - operatorsSection() + presetServersSection() Section { NavigationLink { - ProtocolServersView(serverProtocol: .smp) - .navigationTitle("SMP servers") + YourServersView() + .navigationTitle("Your servers") .modifier(ThemedBackground(grouped: true)) } label: { - Text("Message servers") + Text("Your 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") @@ -70,6 +50,11 @@ struct NetworkAndServers: View { .foregroundColor(theme.colors.secondary) } + Section { + Button("Save") {} + .disabled(true) + } + Section(header: Text("Calls").foregroundColor(theme.colors.secondary)) { NavigationLink { RTCServers() @@ -94,7 +79,7 @@ struct NetworkAndServers: View { } } - @ViewBuilder private func operatorsSection() -> some View { + @ViewBuilder private func presetServersSection() -> some View { let smpServers = [ServerCfg.sampleData.preset, ServerCfg.sampleData.preset] let xftpServers = [ServerCfg.sampleData.xftpPreset, ServerCfg.sampleData.xftpPreset] Section { @@ -102,7 +87,7 @@ struct NetworkAndServers: View { serverOperatorView(srvOperator, smpServers, xftpServers) } } header: { - Text("Operators") + Text("Preset servers") .foregroundColor(theme.colors.secondary) } } diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/YourServersView.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/YourServersView.swift new file mode 100644 index 0000000000..4ce5857604 --- /dev/null +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/YourServersView.swift @@ -0,0 +1,42 @@ +// +// YourServersView.swift +// SimpleX (iOS) +// +// Created by Efim Poberezkin on 30.10.2024. +// Copyright © 2024 SimpleX Chat. All rights reserved. +// + +import SwiftUI + +// TODO Put SMP and XFTP servers in single view, not nested +struct YourServersView: View { + @EnvironmentObject var theme: AppTheme + + var body: some View { + VStack { + List { + Section { + NavigationLink { + ProtocolServersView(serverProtocol: .smp) + .navigationTitle("SMP servers") + .modifier(ThemedBackground(grouped: true)) + } label: { + Text("Message servers") + } + + NavigationLink { + ProtocolServersView(serverProtocol: .xftp) + .navigationTitle("XFTP servers") + .modifier(ThemedBackground(grouped: true)) + } label: { + Text("Media & file servers") + } + } + } + } + } +} + +#Preview { + YourServersView() +} diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 9da64e8a4e..7ae601ba9f 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -144,7 +144,7 @@ 5CFE0922282EEAF60002594B /* ZoomableScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */; }; 640417CD2B29B8C200CCB412 /* NewChatMenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 640417CB2B29B8C200CCB412 /* NewChatMenuButton.swift */; }; 640417CE2B29B8C200CCB412 /* NewChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 640417CC2B29B8C200CCB412 /* NewChatView.swift */; }; - 6407435D2CD2497800158442 /* AllServersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6407435C2CD2497800158442 /* AllServersView.swift */; }; + 6407435F2CD2922400158442 /* YourServersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6407435E2CD2922400158442 /* YourServersView.swift */; }; 6407BA83295DA85D0082BA18 /* CIInvalidJSONView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6407BA82295DA85D0082BA18 /* CIInvalidJSONView.swift */; }; 6419EC562AB8BC8B004A607A /* ContextInvitingContactMemberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6419EC552AB8BC8B004A607A /* ContextInvitingContactMemberView.swift */; }; 6419EC582AB97507004A607A /* CIMemberCreatedContactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6419EC572AB97507004A607A /* CIMemberCreatedContactView.swift */; }; @@ -489,7 +489,7 @@ 5CFE0920282EEAF60002594B /* ZoomableScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ZoomableScrollView.swift; path = Shared/Views/ZoomableScrollView.swift; sourceTree = SOURCE_ROOT; }; 640417CB2B29B8C200CCB412 /* NewChatMenuButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewChatMenuButton.swift; sourceTree = ""; }; 640417CC2B29B8C200CCB412 /* NewChatView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewChatView.swift; sourceTree = ""; }; - 6407435C2CD2497800158442 /* AllServersView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllServersView.swift; sourceTree = ""; }; + 6407435E2CD2922400158442 /* YourServersView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YourServersView.swift; sourceTree = ""; }; 6407BA82295DA85D0082BA18 /* CIInvalidJSONView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIInvalidJSONView.swift; sourceTree = ""; }; 6419EC552AB8BC8B004A607A /* ContextInvitingContactMemberView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextInvitingContactMemberView.swift; sourceTree = ""; }; 6419EC572AB97507004A607A /* CIMemberCreatedContactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIMemberCreatedContactView.swift; sourceTree = ""; }; @@ -1062,8 +1062,8 @@ 5C9329402929248A0090FFF9 /* ScanProtocolServer.swift */, 5C93293029239BED0090FFF9 /* ProtocolServerView.swift */, 5C93292E29239A170090FFF9 /* ProtocolServersView.swift */, + 6407435E2CD2922400158442 /* YourServersView.swift */, 643B3B4D2CCFD6400083A2CF /* OperatorView.swift */, - 6407435C2CD2497800158442 /* AllServersView.swift */, 5C9C2DA6289957AE00CC63B1 /* AdvancedNetworkSettings.swift */, 5C9C2DA82899DA6F00CC63B1 /* NetworkAndServers.swift */, ); @@ -1421,6 +1421,7 @@ 5CB2084F28DA4B4800D024EC /* RTCServers.swift in Sources */, 5CB634AF29E4BB7D0066AD6B /* SetAppPasscodeView.swift in Sources */, 5C10D88828EED12E00E58BF0 /* ContactConnectionInfo.swift in Sources */, + 6407435F2CD2922400158442 /* YourServersView.swift in Sources */, 5CBE6C12294487F7002D9531 /* VerifyCodeView.swift in Sources */, 3CDBCF4227FAE51000354CDD /* ComposeLinkView.swift in Sources */, 648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */, @@ -1494,7 +1495,6 @@ 64D0C2C029F9688300B38D5F /* UserAddressView.swift in Sources */, 6448BBB628FA9D56000D2AB9 /* GroupLinkView.swift in Sources */, 8C9BC2652C240D5200875A27 /* ThemeModeEditor.swift in Sources */, - 6407435D2CD2497800158442 /* AllServersView.swift in Sources */, 5CB346E92869E8BA001FD2EF /* PushEnvironment.swift in Sources */, 5C55A91F283AD0E400C4E99E /* CallManager.swift in Sources */, 5CFA59D12864782E00863A68 /* ChatArchiveView.swift in Sources */,