From 6eab3aeb62e2babe10706dc695ccfe80b1469774 Mon Sep 17 00:00:00 2001 From: Diogo Date: Fri, 6 Dec 2024 18:20:48 +0000 Subject: [PATCH] move saveNetCfg to SaveableSettings --- .../Shared/Views/ChatList/ChatListView.swift | 52 ++++++++++--------- .../AdvancedNetworkSettings.swift | 20 ++----- .../NetworkAndServers/NetworkAndServers.swift | 3 +- 3 files changed, 32 insertions(+), 43 deletions(-) diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index 159b19cc13..9669e68ffb 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -34,6 +34,28 @@ enum UserPickerSheet: Identifiable { class SaveableSettings: ObservableObject { @Published var servers: ServerSettings = ServerSettings(currUserServers: [], userServers: [], serverErrors: []) @Published var advancedNetworkSettings: AdvancedNetworkSettingsConfig = AdvancedNetworkSettingsConfig.defaults + + public func saveNetCfg() -> Bool { + do { + let netCfg = advancedNetworkSettings.netCfg + let netProxy = advancedNetworkSettings.netProxy + try setNetworkConfig(netCfg) + advancedNetworkSettings.currentNetCfg = netCfg + setNetCfg(netCfg, networkProxy: netCfg.socksProxy != nil ? netProxy : nil) + advancedNetworkSettings.currentNetProxy = netProxy + networkProxyDefault.set(netProxy) + return true + } catch let error { + let err = responseError(error) + showAlert( + NSLocalizedString("Error updating settings", comment: "alert title"), + message: responseError(error) + ) + + logger.error("\(err)") + return false + } + } } struct ServerSettings { @@ -47,12 +69,14 @@ struct AdvancedNetworkSettingsConfig { public var netCfg: NetCfg public var currentNetProxy: NetworkProxy public var netProxy: NetworkProxy + public var saveRequested: Bool static let defaults = AdvancedNetworkSettingsConfig( currentNetCfg: NetCfg.defaults, netCfg: NetCfg.defaults, currentNetProxy: networkProxyDefault.get(), - netProxy: networkProxyDefault.get() + netProxy: networkProxyDefault.get(), + saveRequested: false ) } @@ -118,7 +142,7 @@ struct UserPickerSheetView: View { buttonAction: { saveServers($ss.servers.currUserServers, $ss.servers.userServers) if advancedNetworkCanBeSaved { - _ = saveNetCfg() + _ = ss.saveNetCfg() } }, cancelButton: true @@ -127,35 +151,13 @@ struct UserPickerSheetView: View { showAlert( title: NSLocalizedString("Update network settings?", comment: "alert title"), buttonTitle: advancedNetworkSaveText, - buttonAction: { _ = saveNetCfg() }, + buttonAction: { _ = ss.saveNetCfg() }, cancelButton: true ) } } .environmentObject(ss) } - - private func saveNetCfg() -> Bool { - do { - let netCfg = ss.advancedNetworkSettings.netCfg - let netProxy = ss.advancedNetworkSettings.netProxy - try setNetworkConfig(netCfg) - ss.advancedNetworkSettings.currentNetCfg = netCfg - setNetCfg(netCfg, networkProxy: netCfg.socksProxy != nil ? netProxy : nil) - ss.advancedNetworkSettings.currentNetProxy = netProxy - networkProxyDefault.set(netProxy) - return true - } catch let error { - let err = responseError(error) - showAlert( - NSLocalizedString("Error updating settings", comment: "alert title"), - message: responseError(error) - ) - - logger.error("\(err)") - return false - } - } } struct ChatListView: View { diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AdvancedNetworkSettings.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AdvancedNetworkSettings.swift index 58cf392f8f..e244a22f34 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AdvancedNetworkSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/AdvancedNetworkSettings.swift @@ -40,6 +40,7 @@ struct AdvancedNetworkSettings: View { @Binding public var netCfg: NetCfg @Binding public var currentNetProxy: NetworkProxy @Binding public var netProxy: NetworkProxy + let saveNetCfg: () -> Bool var body: some View { VStack { @@ -312,22 +313,6 @@ struct AdvancedNetworkSettings: View { } } - private func saveNetCfg() -> Bool { - do { - try setNetworkConfig(netCfg) - currentNetCfg = netCfg - setNetCfg(netCfg, networkProxy: useNetProxy ? netProxy : nil) - currentNetProxy = netProxy - networkProxyDefault.set(netProxy) - return true - } catch let error { - let err = responseError(error) - showSettingsAlert = .error(err: err) - logger.error("\(err)") - return false - } - } - private func intSettingPicker(_ title: LocalizedStringKey, selection: Binding, values: [Int], label: String) -> some View { Picker(title, selection: selection) { ForEach(values, id: \.self) { value in @@ -391,7 +376,8 @@ struct AdvancedNetworkSettings_Previews: PreviewProvider { currentNetCfg: Binding.constant(defaultSettings.currentNetCfg), netCfg: Binding.constant(defaultSettings.netCfg), currentNetProxy: Binding.constant(defaultSettings.currentNetProxy), - netProxy: Binding.constant(defaultSettings.netProxy) + netProxy: Binding.constant(defaultSettings.netProxy), + saveNetCfg: { true } ) } } diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift index 4523075433..30dcba98c3 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers/NetworkAndServers.swift @@ -98,7 +98,8 @@ struct NetworkAndServers: View { currentNetCfg: $ss.advancedNetworkSettings.currentNetCfg, netCfg: $ss.advancedNetworkSettings.netCfg, currentNetProxy: $ss.advancedNetworkSettings.currentNetProxy, - netProxy: $ss.advancedNetworkSettings.netProxy + netProxy: $ss.advancedNetworkSettings.netProxy, + saveNetCfg: ss.saveNetCfg ) .navigationTitle("Advanced settings") .modifier(ThemedBackground(grouped: true))