diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt index e0a8f63cc2b8cb254013c96de575e89b06ccf636..189cdf62a134b0d08ee8e0d9275715d4c4557063 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiaryActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager +import androidx.navigation.fragment.NavHostFragment import dagger.android.AndroidInjector import dagger.android.DispatchingAndroidInjector import dagger.android.HasAndroidInjector @@ -23,6 +24,7 @@ class ContactDiaryActivity : AppCompatActivity(), HasAndroidInjector { } } + @Inject lateinit var settings: ContactDiarySettings @Inject lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Any> override fun androidInjector(): AndroidInjector<Any> = dispatchingAndroidInjector @@ -33,6 +35,20 @@ class ContactDiaryActivity : AppCompatActivity(), HasAndroidInjector { AppInjector.setup(this) super.onCreate(savedInstanceState) setContentView(R.layout.contact_diary_activity) + + val navHost = supportFragmentManager.findFragmentById(R.id.contact_diary_fragment_container) as NavHostFragment? + val navController = navHost!!.navController + + val navInflater = navController.navInflater + val graph = navInflater.inflate(R.navigation.contact_diary_nav_graph) + + if (settings.isOnboarded.value) { + graph.startDestination = R.id.contactDiaryOverviewFragment + } else { + graph.startDestination = R.id.contactDiaryOnboardingFragment + } + + navController.graph = graph } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt new file mode 100644 index 0000000000000000000000000000000000000000..730b20bf1083e902e46313e0a7e3149e1a5fd5d3 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/ContactDiarySettings.kt @@ -0,0 +1,29 @@ +package de.rki.coronawarnapp.contactdiary.ui + +import android.content.Context +import de.rki.coronawarnapp.util.di.AppContext +import de.rki.coronawarnapp.util.preferences.clearAndNotify +import de.rki.coronawarnapp.util.preferences.createFlowPreference +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class ContactDiarySettings @Inject constructor( + + @AppContext val context: Context + +) { + + private val prefs by lazy { + context.getSharedPreferences("contact_diary_localdata", Context.MODE_PRIVATE) + } + + val isOnboarded = prefs.createFlowPreference( + key = "contact_diary_onboarded", + defaultValue = false + ) + + fun clear() { + prefs.clearAndNotify() + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt index 47e022c4232134437c2bbe4579e8d92b21496d70..a144e4f56cd2a0378a51c8436f6baf8840d453a4 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/onboarding/ContactDiaryOnboardingFragment.kt @@ -5,6 +5,7 @@ import android.view.View import androidx.fragment.app.Fragment import de.rki.coronawarnapp.R import de.rki.coronawarnapp.contactdiary.ui.ContactDiaryActivity +import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings import de.rki.coronawarnapp.databinding.ContactDiaryOnboardingFragmentBinding import de.rki.coronawarnapp.util.di.AutoInject import de.rki.coronawarnapp.util.ui.doNavigate @@ -17,6 +18,9 @@ import javax.inject.Inject class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboarding_fragment), AutoInject { @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory + + @Inject lateinit var settings: ContactDiarySettings + private val vm: ContactDiaryOnboardingFragmentViewModel by cwaViewModels { viewModelFactory } private val binding: ContactDiaryOnboardingFragmentBinding by viewBindingLazy() @@ -52,6 +56,9 @@ class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboardin } ContactDiaryOnboardingNavigationEvents.NavigateToOverviewFragment -> { + + onboardingComplete() + doNavigate( ContactDiaryOnboardingFragmentDirections .actionContactDiaryOnboardingFragmentToContactDiaryOverviewFragment() @@ -60,4 +67,8 @@ class ContactDiaryOnboardingFragment : Fragment(R.layout.contact_diary_onboardin } } } + + fun onboardingComplete() { + settings.isOnboarded.update { true } + } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt index 8d3a150c73d6a7a6c7ef46d183822a1d30a8be13..318368ebf5f76390110d8a3212f17a99ba3efb0e 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt @@ -23,6 +23,7 @@ import android.annotation.SuppressLint import android.content.Context import de.rki.coronawarnapp.appconfig.AppConfigProvider import de.rki.coronawarnapp.contactdiary.storage.ContactDiaryDatabase +import de.rki.coronawarnapp.contactdiary.ui.ContactDiarySettings import de.rki.coronawarnapp.diagnosiskeys.download.DownloadDiagnosisKeysSettings import de.rki.coronawarnapp.diagnosiskeys.storage.KeyCacheRepository import de.rki.coronawarnapp.nearby.modules.detectiontracker.ExposureDetectionTracker @@ -30,7 +31,6 @@ import de.rki.coronawarnapp.risk.storage.RiskLevelStorage import de.rki.coronawarnapp.storage.AppDatabase import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.storage.SubmissionRepository -import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository import de.rki.coronawarnapp.util.di.AppContext import de.rki.coronawarnapp.util.security.SecurityHelper import kotlinx.coroutines.sync.Mutex @@ -47,12 +47,12 @@ class DataReset @Inject constructor( @AppContext private val context: Context, private val keyCacheRepository: KeyCacheRepository, private val appConfigProvider: AppConfigProvider, - private val interoperabilityRepository: InteroperabilityRepository, private val submissionRepository: SubmissionRepository, private val exposureDetectionTracker: ExposureDetectionTracker, private val downloadDiagnosisKeysSettings: DownloadDiagnosisKeysSettings, private val riskLevelStorage: RiskLevelStorage, - private val contactDiaryDatabase: ContactDiaryDatabase + private val contactDiaryDatabase: ContactDiaryDatabase, + private var contactDiarySettings: ContactDiarySettings ) { private val mutex = Mutex() @@ -78,6 +78,7 @@ class DataReset @Inject constructor( exposureDetectionTracker.clear() downloadDiagnosisKeysSettings.clear() riskLevelStorage.clear() + contactDiarySettings.clear() // Clear contact diary database contactDiaryDatabase.clearAllTables() diff --git a/Corona-Warn-App/src/main/res/layout/contact_diary_activity.xml b/Corona-Warn-App/src/main/res/layout/contact_diary_activity.xml index f105f4d50aaa6c18abf3a949220649d9a399095f..7d2465983bf4d603475485bbb0b49ca2da3bb1e9 100644 --- a/Corona-Warn-App/src/main/res/layout/contact_diary_activity.xml +++ b/Corona-Warn-App/src/main/res/layout/contact_diary_activity.xml @@ -11,7 +11,6 @@ android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" - app:defaultNavHost="true" - app:navGraph="@navigation/contact_diary_nav_graph" /> + app:defaultNavHost="true" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> diff --git a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml index 652da189cf4c93c501e324847c42ceceb03c00e9..29be5afee54e8ded510355ab90b03294f2e824d3 100644 --- a/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/contact_diary_strings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" tools:ignore="MissingTranslation"> + <!-- #################################### Contact Diary ###################################### --> diff --git a/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml b/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml index e64b0e7dadc6659ca65acbe488e708ae4c63588a..3ada5e70f2cdf289f23a910467f91605899c0de7 100644 --- a/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml +++ b/Corona-Warn-App/src/main/res/values/contact_diary_strings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" tools:ignore="MissingTranslation"> + <!-- #################################### Contact Diary ###################################### -->