move saveNetCfg to SaveableSettings

This commit is contained in:
Diogo
2024-12-06 18:20:48 +00:00
parent 2209a467bb
commit 6eab3aeb62
3 changed files with 32 additions and 43 deletions

View File

@@ -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 {

View File

@@ -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<Int>, 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 }
)
}
}

View File

@@ -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))