diff --git a/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift b/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift index 16d474d890f825d556f3b9d9d41039df75b2bc3c..efe25a0030b832db3507172bf4a966d26e0ed54f 100644 --- a/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift +++ b/Sources/SettingsFeature/Controllers/SettingsAdvancedController.swift @@ -63,7 +63,8 @@ public final class SettingsAdvancedController: UIViewController { screenView.reportingSwitcher.switcherView .publisher(for: .valueChanged) - .sink { [weak viewModel] in viewModel?.didToggleReporting() } + .compactMap { [weak screenView] _ in screenView?.reportingSwitcher.switcherView.isOn } + .sink { [weak viewModel] isOn in viewModel?.didSetReporting(enabled: isOn) } .store(in: &cancellables) viewModel.sharePublisher diff --git a/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift b/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift index a0f199a9d012fa3ad5bd21854d9ca8efa38fe03d..3ec9be365abd621e7c1d9d421aff530d0560acc7 100644 --- a/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift +++ b/Sources/SettingsFeature/ViewModels/SettingsAdvancedViewModel.swift @@ -18,6 +18,7 @@ final class SettingsAdvancedViewModel { @KeyObject(.recordingLogs, defaultValue: true) var isRecordingLogs: Bool @KeyObject(.crashReporting, defaultValue: true) var isCrashReporting: Bool + private var cancellables = Set<AnyCancellable>() private let isShowingUsernamesKey = "isShowingUsernames" @Dependency private var logger: XXLogger @@ -33,9 +34,13 @@ final class SettingsAdvancedViewModel { func loadCachedSettings() { stateRelay.value.isRecordingLogs = isRecordingLogs stateRelay.value.isCrashReporting = isCrashReporting - stateRelay.value.isReportingEnabled = reportingStatus.isEnabled() stateRelay.value.isReportingOptional = reportingStatus.isOptional() + reportingStatus + .isEnabledPublisher() + .sink { [weak stateRelay] in stateRelay?.value.isReportingEnabled = $0 } + .store(in: &cancellables) + guard let defaults = UserDefaults(suiteName: "group.elixxir.messenger") else { print("^^^ Couldn't access user defaults in the app group container \(#file):\(#line)") return @@ -82,8 +87,7 @@ final class SettingsAdvancedViewModel { crashReporter.setEnabled(isCrashReporting) } - func didToggleReporting() { - reportingStatus.enable(reportingStatus.isEnabled()) - stateRelay.value.isReportingEnabled.toggle() + func didSetReporting(enabled: Bool) { + reportingStatus.enable(enabled) } }