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

Checkins navigation crash (EXPOSUREAPP-14361) #5735

Merged
merged 5 commits into from
Nov 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import androidx.navigation.fragment.navArgs
import com.google.android.material.transition.MaterialSharedAxis
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.databinding.FragmentTraceLocationOnboardingBinding
import de.rki.coronawarnapp.presencetracing.TraceLocationSettings
import de.rki.coronawarnapp.ui.presencetracing.attendee.confirm.ConfirmCheckInFragment
import de.rki.coronawarnapp.util.ContextExtensions.getDrawableCompat
import de.rki.coronawarnapp.util.di.AutoInject
Expand Down Expand Up @@ -39,6 +38,7 @@ class CheckInOnboardingFragment : Fragment(R.layout.fragment_trace_location_onbo

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.checkOnboarding()

with(binding) {
checkInOnboardingAcknowledge.setOnClickListener { viewModel.onAcknowledged() }
Expand All @@ -55,17 +55,6 @@ class CheckInOnboardingFragment : Fragment(R.layout.fragment_trace_location_onbo
}
}

viewModel.isOnboardingComplete.observe2(this) {
if (it == TraceLocationSettings.OnboardingStatus.ONBOARDED_2_0 && args.uri != null) {
findNavController().navigate(
CheckInOnboardingFragmentDirections.actionCheckInOnboardingFragmentToCheckInsFragment(
args.uri,
args.cleanHistory
)
)
}
}

viewModel.events.observe2(this) { navEvent ->
when (navEvent) {
CheckInOnboardingNavigation.AcknowledgedNavigation -> {
Expand All @@ -75,15 +64,20 @@ class CheckInOnboardingFragment : Fragment(R.layout.fragment_trace_location_onbo
.setPopUpTo(R.id.checkInOnboardingFragment, true)
.build()
findNavController().navigate(ConfirmCheckInFragment.uri(locationId), navOption)
} else {
}
}

CheckInOnboardingNavigation.SkipOnboardingInfo -> {
if (args.uri == null) {
findNavController().navigate(
CheckInOnboardingFragmentDirections.actionCheckInOnboardingFragmentToCheckInsFragment(
uri = args.uri,
cleanHistory = true
args.uri,
args.cleanHistory
)
)
}
}

CheckInOnboardingNavigation.DataProtectionNavigation -> findNavController().navigate(
CheckInOnboardingFragmentDirections.actionCheckInOnboardingFragmentToPrivacyFragment()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ package de.rki.coronawarnapp.ui.presencetracing.attendee.onboarding
sealed class CheckInOnboardingNavigation {
object AcknowledgedNavigation : CheckInOnboardingNavigation()
object DataProtectionNavigation : CheckInOnboardingNavigation()
object SkipOnboardingInfo : CheckInOnboardingNavigation()
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,24 @@ import de.rki.coronawarnapp.presencetracing.TraceLocationSettings
import de.rki.coronawarnapp.util.ui.SingleLiveEvent
import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory
import kotlinx.coroutines.flow.first

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

val isOnboardingComplete = settings.onboardingStatus.asLiveData2()

fun onAcknowledged() = launch {
settings.updateOnboardingStatus(TraceLocationSettings.OnboardingStatus.ONBOARDED_2_0)
events.postValue(CheckInOnboardingNavigation.AcknowledgedNavigation)
}

fun checkOnboarding() = launch {
if (settings.onboardingStatus.first() == TraceLocationSettings.OnboardingStatus.ONBOARDED_2_0) {
events.postValue(CheckInOnboardingNavigation.SkipOnboardingInfo)
}
}

fun onPrivacy() {
events.value = CheckInOnboardingNavigation.DataProtectionNavigation
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,11 @@ class TraceLocationsFragment : Fragment(R.layout.trace_location_organizer_trace_
is TraceLocationEvent.ConfirmDeleteItem -> {
showDeleteSingleDialog(it.traceLocation, null)
}

is TraceLocationEvent.ConfirmSwipeItem -> {
showDeleteSingleDialog(it.traceLocation, it.position)
}

is TraceLocationEvent.StartQrCodeDetailFragment -> {
setupHoldTransition()
val navigatorExtras = binding.recyclerView.findViewHolderForAdapterPosition(it.position)?.itemView
Expand All @@ -99,10 +101,12 @@ class TraceLocationsFragment : Fragment(R.layout.trace_location_organizer_trace_
navigatorExtras
)
}

is TraceLocationEvent.DuplicateItem -> {
setupAxisTransition()
openCreateEventFragment(it.traceLocation)
}

is TraceLocationEvent.StartQrCodePosterFragment -> {
setupAxisTransition()
findNavController().navigate(
Expand Down Expand Up @@ -163,17 +167,20 @@ class TraceLocationsFragment : Fragment(R.layout.trace_location_organizer_trace_
)
true
}

R.id.menu_warn_guests -> {
setupAxisTransition()
findNavController().navigate(
R.id.action_traceLocationsFragment_to_traceLocationWarnInfoFragment
)
true
}

R.id.menu_remove_all -> {
showDeleteAllDialog()
true
}

else -> false
}
}
Expand Down