From 34379b8d3af7dad7f53b08e114483c28ebd08190 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 13 Jul 2022 13:11:21 -0300 Subject: [PATCH] Add internal setting item to clear onboarding state. --- .../app/internal/InternalSettingsFragment.kt | 9 +++++++++ .../settings/app/internal/InternalSettingsState.kt | 3 ++- .../app/internal/InternalSettingsViewModel.kt | 12 +++++++++++- app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt index e02478e08..aadc728ba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt @@ -485,6 +485,15 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter viewModel.toggleStories() } ) + + clickPref( + title = DSLSettingsText.from(R.string.preferences__internal_clear_onboarding_state), + summary = DSLSettingsText.from(R.string.preferences__internal_clears_onboarding_flag_and_triggers_download_of_onboarding_stories), + isEnabled = state.canClearOnboardingState, + onClick = { + viewModel.onClearOnboardingState() + } + ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt index b864d08b6..61b8b702a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt @@ -22,5 +22,6 @@ data class InternalSettingsState( val removeSenderKeyMinimium: Boolean, val delayResends: Boolean, val disableStorageService: Boolean, - val disableStories: Boolean + val disableStories: Boolean, + val canClearOnboardingState: Boolean ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt index 870148f2b..a627f496c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt @@ -4,8 +4,10 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import org.signal.ringrtc.CallManager +import org.thoughtcrime.securesms.jobs.StoryOnboardingDownloadJob import org.thoughtcrime.securesms.keyvalue.InternalValues import org.thoughtcrime.securesms.keyvalue.SignalStore +import org.thoughtcrime.securesms.stories.Stories import org.thoughtcrime.securesms.util.livedata.Store class InternalSettingsViewModel(private val repository: InternalSettingsRepository) : ViewModel() { @@ -139,9 +141,17 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito removeSenderKeyMinimium = SignalStore.internalValues().removeSenderKeyMinimum(), delayResends = SignalStore.internalValues().delayResends(), disableStorageService = SignalStore.internalValues().storageServiceDisabled(), - disableStories = SignalStore.storyValues().isFeatureDisabled + disableStories = SignalStore.storyValues().isFeatureDisabled, + canClearOnboardingState = SignalStore.storyValues().hasDownloadedOnboardingStory && Stories.isFeatureEnabled() ) + fun onClearOnboardingState() { + SignalStore.storyValues().hasDownloadedOnboardingStory = false + SignalStore.storyValues().userHasSeenOnboardingStory = false + refresh() + StoryOnboardingDownloadJob.enqueueIfNeeded() + } + class Factory(private val repository: InternalSettingsRepository) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { return requireNotNull(modelClass.cast(InternalSettingsViewModel(repository))) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b95e6fbd8..e028f7fa3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2671,6 +2671,8 @@ Customize option + Clear onboarding state + Clears onboarding flag and triggers download of onboarding stories. Internal Preferences Groups V2 Groups V1 Migration