Skip to content

Commit bcfdaf6

Browse files
authored
Fix advanced preferences not saved on close (#1545)
Parent .onChange() is ineffective on iOS.
1 parent 5f08857 commit bcfdaf6

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

app-apple/Package/Sources/AppLibrary/Views/Preferences/PreferencesAdvancedView.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,23 @@ struct PreferencesAdvancedView: View {
1313
@Binding
1414
var experimental: AppPreferenceValues.Experimental
1515

16-
private let flags: [ConfigFlag] = [
16+
var body: some View {
17+
Form {
18+
remoteSection
19+
}
20+
.themeForm()
21+
}
22+
}
23+
24+
private extension PreferencesAdvancedView {
25+
static let flags: [ConfigFlag] = [
1726
.neSocketUDP,
1827
.neSocketTCP,
1928
.ovpnCrossConnection,
2029
.wgCrossConnection
2130
]
2231

23-
private func description(for flag: ConfigFlag) -> String {
32+
static func description(for flag: ConfigFlag) -> String {
2433
let V = Strings.Entities.Ui.ConfigFlag.self
2534
switch flag {
2635
case .neSocketUDP:
@@ -37,17 +46,8 @@ struct PreferencesAdvancedView: View {
3746
}
3847
}
3948

40-
var body: some View {
41-
Form {
42-
remoteSection
43-
}
44-
.themeForm()
45-
}
46-
}
47-
48-
private extension PreferencesAdvancedView {
4949
var remoteSection: some View {
50-
ForEach(flags, id: \.rawValue) { flag in
50+
ForEach(Self.flags, id: \.rawValue) { flag in
5151
Toggle(isOn: isOnBinding(for: flag)) {
5252
flagView(for: flag)
5353
}
@@ -68,7 +68,7 @@ private extension PreferencesAdvancedView {
6868

6969
func flagView(for flag: ConfigFlag) -> some View {
7070
VStack(alignment: .leading) {
71-
Text(description(for: flag))
71+
Text(Self.description(for: flag))
7272
Text(configManager.isActive(flag) ? Strings.Global.Nouns.enabled : Strings.Global.Nouns.disabled)
7373
.themeSubtitle()
7474
}

app-apple/Package/Sources/AppLibrary/Views/Preferences/PreferencesView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ private extension PreferencesView {
170170
func advancedView() -> some View {
171171
PreferencesAdvancedView(experimental: $preferences.experimental)
172172
.navigationTitle(advancedTitle)
173+
.onChange(of: preferences.experimental) {
174+
kvManager.preferences.experimental = $0
175+
}
173176
}
174177
}
175178

0 commit comments

Comments
 (0)