Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit 6b5c4f7

Browse files
Merge pull request #5735 from corona-warn-app/fix/14361-navigation-crash
Checkins navigation crash (EXPOSUREAPP-14361)
2 parents c1e0943 + 74a1c41 commit 6b5c4f7

File tree

4 files changed

+24
-17
lines changed

4 files changed

+24
-17
lines changed

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/onboarding/CheckInOnboardingFragment.kt

+9-15
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import androidx.navigation.fragment.navArgs
1111
import com.google.android.material.transition.MaterialSharedAxis
1212
import de.rki.coronawarnapp.R
1313
import de.rki.coronawarnapp.databinding.FragmentTraceLocationOnboardingBinding
14-
import de.rki.coronawarnapp.presencetracing.TraceLocationSettings
1514
import de.rki.coronawarnapp.ui.presencetracing.attendee.confirm.ConfirmCheckInFragment
1615
import de.rki.coronawarnapp.util.ContextExtensions.getDrawableCompat
1716
import de.rki.coronawarnapp.util.di.AutoInject
@@ -39,6 +38,7 @@ class CheckInOnboardingFragment : Fragment(R.layout.fragment_trace_location_onbo
3938

4039
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4140
super.onViewCreated(view, savedInstanceState)
41+
viewModel.checkOnboarding()
4242

4343
with(binding) {
4444
checkInOnboardingAcknowledge.setOnClickListener { viewModel.onAcknowledged() }
@@ -55,17 +55,6 @@ class CheckInOnboardingFragment : Fragment(R.layout.fragment_trace_location_onbo
5555
}
5656
}
5757

58-
viewModel.isOnboardingComplete.observe2(this) {
59-
if (it == TraceLocationSettings.OnboardingStatus.ONBOARDED_2_0 && args.uri != null) {
60-
findNavController().navigate(
61-
CheckInOnboardingFragmentDirections.actionCheckInOnboardingFragmentToCheckInsFragment(
62-
args.uri,
63-
args.cleanHistory
64-
)
65-
)
66-
}
67-
}
68-
6958
viewModel.events.observe2(this) { navEvent ->
7059
when (navEvent) {
7160
CheckInOnboardingNavigation.AcknowledgedNavigation -> {
@@ -75,15 +64,20 @@ class CheckInOnboardingFragment : Fragment(R.layout.fragment_trace_location_onbo
7564
.setPopUpTo(R.id.checkInOnboardingFragment, true)
7665
.build()
7766
findNavController().navigate(ConfirmCheckInFragment.uri(locationId), navOption)
78-
} else {
67+
}
68+
}
69+
70+
CheckInOnboardingNavigation.SkipOnboardingInfo -> {
71+
if (args.uri == null) {
7972
findNavController().navigate(
8073
CheckInOnboardingFragmentDirections.actionCheckInOnboardingFragmentToCheckInsFragment(
81-
uri = args.uri,
82-
cleanHistory = true
74+
args.uri,
75+
args.cleanHistory
8376
)
8477
)
8578
}
8679
}
80+
8781
CheckInOnboardingNavigation.DataProtectionNavigation -> findNavController().navigate(
8882
CheckInOnboardingFragmentDirections.actionCheckInOnboardingFragmentToPrivacyFragment()
8983
)

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/onboarding/CheckInOnboardingNavigation.kt

+1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ package de.rki.coronawarnapp.ui.presencetracing.attendee.onboarding
33
sealed class CheckInOnboardingNavigation {
44
object AcknowledgedNavigation : CheckInOnboardingNavigation()
55
object DataProtectionNavigation : CheckInOnboardingNavigation()
6+
object SkipOnboardingInfo : CheckInOnboardingNavigation()
67
}

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/onboarding/CheckInOnboardingViewModel.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,24 @@ import de.rki.coronawarnapp.presencetracing.TraceLocationSettings
66
import de.rki.coronawarnapp.util.ui.SingleLiveEvent
77
import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
88
import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
9+
import kotlinx.coroutines.flow.first
910

1011
class CheckInOnboardingViewModel @AssistedInject constructor(
1112
private val settings: TraceLocationSettings
1213
) : CWAViewModel() {
1314
val events = SingleLiveEvent<CheckInOnboardingNavigation>()
1415

15-
val isOnboardingComplete = settings.onboardingStatus.asLiveData2()
16-
1716
fun onAcknowledged() = launch {
1817
settings.updateOnboardingStatus(TraceLocationSettings.OnboardingStatus.ONBOARDED_2_0)
1918
events.postValue(CheckInOnboardingNavigation.AcknowledgedNavigation)
2019
}
2120

21+
fun checkOnboarding() = launch {
22+
if (settings.onboardingStatus.first() == TraceLocationSettings.OnboardingStatus.ONBOARDED_2_0) {
23+
events.postValue(CheckInOnboardingNavigation.SkipOnboardingInfo)
24+
}
25+
}
26+
2227
fun onPrivacy() {
2328
events.value = CheckInOnboardingNavigation.DataProtectionNavigation
2429
}

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/list/TraceLocationsFragment.kt

+7
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,11 @@ class TraceLocationsFragment : Fragment(R.layout.trace_location_organizer_trace_
8282
is TraceLocationEvent.ConfirmDeleteItem -> {
8383
showDeleteSingleDialog(it.traceLocation, null)
8484
}
85+
8586
is TraceLocationEvent.ConfirmSwipeItem -> {
8687
showDeleteSingleDialog(it.traceLocation, it.position)
8788
}
89+
8890
is TraceLocationEvent.StartQrCodeDetailFragment -> {
8991
setupHoldTransition()
9092
val navigatorExtras = binding.recyclerView.findViewHolderForAdapterPosition(it.position)?.itemView
@@ -99,10 +101,12 @@ class TraceLocationsFragment : Fragment(R.layout.trace_location_organizer_trace_
99101
navigatorExtras
100102
)
101103
}
104+
102105
is TraceLocationEvent.DuplicateItem -> {
103106
setupAxisTransition()
104107
openCreateEventFragment(it.traceLocation)
105108
}
109+
106110
is TraceLocationEvent.StartQrCodePosterFragment -> {
107111
setupAxisTransition()
108112
findNavController().navigate(
@@ -163,17 +167,20 @@ class TraceLocationsFragment : Fragment(R.layout.trace_location_organizer_trace_
163167
)
164168
true
165169
}
170+
166171
R.id.menu_warn_guests -> {
167172
setupAxisTransition()
168173
findNavController().navigate(
169174
R.id.action_traceLocationsFragment_to_traceLocationWarnInfoFragment
170175
)
171176
true
172177
}
178+
173179
R.id.menu_remove_all -> {
174180
showDeleteAllDialog()
175181
true
176182
}
183+
177184
else -> false
178185
}
179186
}

0 commit comments

Comments
 (0)