diff --git a/WMFComponents/Sources/WMFComponents/Components/Activity Tab/View Models/WMFActivityTabCustomizeViewModel.swift b/WMFComponents/Sources/WMFComponents/Components/Activity Tab/View Models/WMFActivityTabCustomizeViewModel.swift index e337c92d944..6e4a22e3e5a 100644 --- a/WMFComponents/Sources/WMFComponents/Components/Activity Tab/View Models/WMFActivityTabCustomizeViewModel.swift +++ b/WMFComponents/Sources/WMFComponents/Components/Activity Tab/View Models/WMFActivityTabCustomizeViewModel.swift @@ -38,7 +38,7 @@ public final class WMFActivityTabCustomizeViewModel: ObservableObject { let isTimeSpentReadingOn = isLoggedIn ? await dataController.isTimeSpentReadingOn : false let isReadingInsightsOn = isLoggedIn ? await dataController.isReadingInsightsOn : false let isEditingInsightsOn = isLoggedIn ? await dataController.isEditingInsightsOn : false - let isTimelineOfBehaviorOn = await dataController.isTimelineOfBehaviorOn + let isTimelineOfBehaviorOn = isLoggedIn ? await dataController.isTimelineOfBehaviorOn : false self.isTimeSpentReadingOn = isTimeSpentReadingOn self.isReadingInsightsOn = isReadingInsightsOn @@ -82,11 +82,11 @@ public final class WMFActivityTabCustomizeViewModel: ObservableObject { $isTimelineOfBehaviorOn .sink { [weak self] value in - guard let self else { return } + guard let self, self.isLoggedIn else { return } + Task { await self.dataController.updateIsTimelineOfBehaviorOn(value) } - } .store(in: &cancellables) } diff --git a/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabCustomizeView.swift b/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabCustomizeView.swift index 44a6140cf8b..cd514b4baf3 100644 --- a/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabCustomizeView.swift +++ b/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabCustomizeView.swift @@ -64,6 +64,14 @@ public struct WMFActivityTabCustomizeView: View { isOn: $viewModel.isTimelineOfBehaviorOn ) .listRowBackground(Color(theme.paperBackground).edgesIgnoringSafeArea([.all])) + .onChange(of: viewModel.isTimelineOfBehaviorOn) { newValue in + guard newValue == true else { return } + guard viewModel.isLoggedIn else { + viewModel.isTimelineOfBehaviorOn = false + viewModel.presentLoggedInToastAction?() + return + } + } } footer: { Text(viewModel.localizedStrings.footer) .font(Font(WMFFont.for(.caption1))) diff --git a/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabView.swift b/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabView.swift index e2a3cfa52bf..6907e592954 100644 --- a/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabView.swift +++ b/WMFComponents/Sources/WMFComponents/Components/Activity Tab/WMFActivityTabView.swift @@ -32,11 +32,7 @@ public struct WMFActivityTabView: View { loggedInList(proxy: proxy) } } else { - if !viewModel.customizeViewModel.isTimelineOfBehaviorOn { - customizedEmptyState() - } else { - loggedOutList(proxy: proxy) - } + loggedOutList(proxy: proxy) } } } @@ -188,7 +184,6 @@ public struct WMFActivityTabView: View { private func loggedOutList(proxy: ScrollViewProxy) -> some View { if viewModel.sections.count == 0 { VStack { - Section { loggedOutView .accessibilityElement(children: .contain)