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

Fix navigation after test scanning (EXPOSUREAPP-12985) #5408

Merged
merged 36 commits into from
Aug 16, 2022
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
ed007d8
Fix submission flow navigation.
SamuraiKek Aug 2, 2022
06a8946
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 2, 2022
aea81df
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 3, 2022
10bd014
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 4, 2022
7932062
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 4, 2022
30fc4b6
Fix wiring for all submission flow.
SamuraiKek Aug 5, 2022
80885fa
Merge remote-tracking branch 'origin/fix/12985-navigation-after-test-…
SamuraiKek Aug 5, 2022
261916f
Fix detekt
SamuraiKek Aug 5, 2022
2416b38
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 8, 2022
f9d0c17
Suppress detekt complaint.
SamuraiKek Aug 8, 2022
b001a00
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 8, 2022
6e4d80d
Pass parameter to tests.
SamuraiKek Aug 8, 2022
9b02f16
Forgot missing navigation from deletion screen and renamed action.
SamuraiKek Aug 9, 2022
c27b6a1
Fix tests.
SamuraiKek Aug 9, 2022
ec24588
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 9, 2022
c2e4407
Fix tests.
SamuraiKek Aug 9, 2022
1f3acf3
Merge remote-tracking branch 'origin/fix/12985-navigation-after-test-…
SamuraiKek Aug 9, 2022
d4d619d
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 9, 2022
4149a07
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 9, 2022
3929db6
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 9, 2022
c5633a9
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 9, 2022
264c063
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 10, 2022
b4d9c37
Fix navigation and add missing dialog.
SamuraiKek Aug 10, 2022
d50d570
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 10, 2022
68e9b3d
Merge remote-tracking branch 'origin/fix/12985-navigation-after-test-…
SamuraiKek Aug 10, 2022
ac6cb78
Merge branch 'release/2.26.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 10, 2022
d82c14f
Update Corona-Warn-App/src/main/res/values-de/strings.xml
SamuraiKek Aug 11, 2022
524f776
Update dialog title.
SamuraiKek Aug 11, 2022
55e17bb
Merge branch 'release/2.27.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 11, 2022
1d50b9c
Merge branch 'release/2.27.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 12, 2022
9cb2bfa
Merge branch 'release/2.27.x' into fix/12985-navigation-after-test-re…
chiljamgossow Aug 15, 2022
6b26124
Add missing doNavigate()
SamuraiKek Aug 16, 2022
d7bc71b
Merge branch 'release/2.27.x' into fix/12985-navigation-after-test-re…
SamuraiKek Aug 16, 2022
1657b71
Fix code smell.
SamuraiKek Aug 16, 2022
9e99793
Fix second code smell.
SamuraiKek Aug 16, 2022
47aa93f
Merge branch 'release/2.27.x' into fix/12985-navigation-after-test-re…
mtwalli Aug 16, 2022
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 @@ -65,7 +65,10 @@ class FamilyTestConsentFragment : Fragment(R.layout.fragment_family_test_consent
}
is FamilyTestConsentNavigationEvents.NavigateClose -> {
binding.root.hideKeyboard()
popBackStack()
if (navArgs.comesFromDispatcherFragment) {
FamilyTestConsentFragmentDirections
.actionGlobalMainFragment()
} else popBackStack()
}
is FamilyTestConsentNavigationEvents.NavigateToDataPrivacy -> doNavigate(
FamilyTestConsentFragmentDirections.actionFamilyTestConsentFragmentToInformationPrivacyFragment()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ class TestRegistrationSelectionFragment : Fragment(R.layout.fragment_test_regist
TestRegistrationSelectionFragmentDirections
.actionTestRegistrationSelectionFragmentToSubmissionConsentFragment(
coronaTestQrCode = it.coronaTestQRCode,
navigateBackTo = BackToTestRegistrationSelection
navigateBackTo = BackToTestRegistrationSelection,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
),
navOptions
)
Expand All @@ -54,15 +55,17 @@ class TestRegistrationSelectionFragment : Fragment(R.layout.fragment_test_regist
TestRegistrationSelectionFragmentDirections
.actionTestRegistrationSelectionFragmentToSubmissionDeletionWarningFragment(
testRegistrationRequest = it.testRegistrationRequest,
popToTestCategorySelection = true
popToTestCategorySelection = true,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
)
}
is TestRegistrationSelectionNavigationEvents.NavigateToFamily -> {
findNavController().navigate(
TestRegistrationSelectionFragmentDirections
.actionTestRegistrationSelectionFragmentToFamilyTestConsentFragment(
coronaTestQrCode = it.coronaTestQRCode
coronaTestQrCode = it.coronaTestQRCode,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
),
navOptions
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,8 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
is CoronaTestResult.TestRegistrationSelection -> {
qrcodeSharedViewModel.familyTestPersonName = navArgs.familyTestPersonName
QrCodeScannerFragmentDirections.actionUniversalScannerToTestRegistrationSelectionFragment(
scannerResult.coronaTestQrCode
scannerResult.coronaTestQrCode,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
}

Expand All @@ -247,29 +248,35 @@ class QrCodeScannerFragment : Fragment(R.layout.fragment_qrcode_scanner), AutoIn
}
is CoronaTestResult.RestoreDuplicateTest ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionDeletionWarningFragment(
scannerResult.restoreRecycledTestRequest
scannerResult.restoreRecycledTestRequest,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
is CoronaTestResult.TestPending ->
QrCodeScannerFragmentDirections.actionUniversalScannerToPendingTestResult(
testIdentifier = scannerResult.test.identifier,
forceTestResultUpdate = true
forceTestResultUpdate = true,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
is CoronaTestResult.TestInvalid ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionTestResultInvalidFragment(
testIdentifier = scannerResult.test.identifier
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
is CoronaTestResult.TestNegative ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionTestResultNegativeFragment(
testIdentifier = scannerResult.test.identifier
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
is CoronaTestResult.TestPositive ->
QrCodeScannerFragmentDirections.actionUniversalScannerToSubmissionTestResultKeysSharedFragment(
testIdentifier = scannerResult.test.identifier
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
is CoronaTestResult.WarnOthers ->
QrCodeScannerFragmentDirections
.actionUniversalScannerToSubmissionResultPositiveOtherWarningNoConsentFragment(
testIdentifier = scannerResult.test.identifier
testIdentifier = scannerResult.test.identifier,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
)
}
?.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import de.rki.coronawarnapp.familytest.core.model.FamilyCoronaTest
import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor.State
import de.rki.coronawarnapp.util.TimeAndDateExtensions.toDayFormat
import de.rki.coronawarnapp.util.di.AutoInject
import de.rki.coronawarnapp.util.ui.doNavigate
import de.rki.coronawarnapp.util.ui.popBackStack
import de.rki.coronawarnapp.util.ui.viewBinding
import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
Expand Down Expand Up @@ -94,18 +95,21 @@ class RequestCovidCertificateFragment : Fragment(R.layout.fragment_request_covid
state.test.isPositive ->
if (state.test is FamilyCoronaTest) {
NavGraphDirections.actionSubmissionTestResultPendingFragment(
testIdentifier = state.test.identifier
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
)
} else {
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(
testIdentifier = state.test.identifier
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
)
}
.run { findNavController().navigate(this, navOptions) }

else ->
NavGraphDirections.actionSubmissionTestResultPendingFragment(
testIdentifier = state.test.identifier
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
)
.run { findNavController().navigate(this, navOptions) }
}
Expand All @@ -116,7 +120,13 @@ class RequestCovidCertificateFragment : Fragment(R.layout.fragment_request_covid
.setTitle(R.string.request_gc_dialog_title)
.setMessage(R.string.request_gc_dialog_message)
.setNegativeButton(R.string.request_gc_dialog_negative_button) { _, _ -> }
.setPositiveButton(R.string.request_gc_dialog_positive_button) { _, _ -> popBackStack() }
.setPositiveButton(R.string.request_gc_dialog_positive_button) { _, _ ->
if (args.comesFromDispatcherFragment) {
doNavigate(
RequestCovidCertificateFragmentDirections.actionRequestCovidCertificateFragmentToHomeFragment()
)
} else popBackStack()
}
.create()
.show()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_
factoryProducer = { viewModelFactory },
constructorCall = { factory, _ ->
factory as SubmissionDeletionWarningViewModel.Factory
factory.create(args.testRegistrationRequest)
factory.create(args.testRegistrationRequest, args.comesFromDispatcherFragment)
}
)
private val binding: FragmentSubmissionDeletionWarningBinding by viewBinding()
Expand Down Expand Up @@ -86,24 +86,32 @@ class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_
if (args.testRegistrationRequest is CoronaTestTAN) {
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment(
testIdentifier = state.test.identifier
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
)
} else {
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(
testIdentifier = state.test.identifier
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
)
}
}
else -> NavGraphDirections.actionSubmissionTestResultPendingFragment(
testIdentifier = state.test.identifier
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
)
}.also { findNavController().navigate(it, navOptions) }
}

viewModel.routeToScreen.observe2(this) { event ->
Timber.d("Navigating to %s", event)
when (event) {
DuplicateWarningEvent.Back -> popBackStack()
DuplicateWarningEvent.Back -> {
if (args.comesFromDispatcherFragment) {
SubmissionDeletionWarningFragmentDirections
}
popBackStack()
}
is DuplicateWarningEvent.Direction -> findNavController().navigate(event.direction, navOptions)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,21 @@ import de.rki.coronawarnapp.reyclebin.coronatest.RecycledCoronaTestsProvider
import de.rki.coronawarnapp.reyclebin.coronatest.request.RestoreRecycledTestRequest
import de.rki.coronawarnapp.submission.SubmissionRepository
import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor
import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
import de.rki.coronawarnapp.util.ui.SingleLiveEvent
import de.rki.coronawarnapp.util.viewmodel.CWAViewModel
import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory
import kotlinx.coroutines.flow.first
import timber.log.Timber

class SubmissionDeletionWarningViewModel @AssistedInject constructor(
dispatcherProvider: DispatcherProvider,
@Assisted private val testRegistrationRequest: TestRegistrationRequest,
@Assisted private val comesFromDispatcherFragment: Boolean,
private val registrationStateProcessor: TestRegistrationStateProcessor,
private val recycledCoronaTestsProvider: RecycledCoronaTestsProvider,
private val submissionRepository: SubmissionRepository,
) : CWAViewModel() {
) : CWAViewModel(dispatcherProvider = dispatcherProvider) {

val routeToScreen = SingleLiveEvent<DuplicateWarningEvent>()
val registrationState = registrationStateProcessor.state.asLiveData2()
Expand Down Expand Up @@ -55,7 +58,8 @@ class SubmissionDeletionWarningViewModel @AssistedInject constructor(
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionWarningFragmentToSubmissionConsentFragment(
request,
allowTestReplacement = true
allowTestReplacement = true,
comesFromDispatcherFragment = comesFromDispatcherFragment
)
)
)
Expand All @@ -75,7 +79,8 @@ class SubmissionDeletionWarningViewModel @AssistedInject constructor(
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionWarningFragmentToSubmissionTestResultPendingFragment(
forceTestResultUpdate = true,
testIdentifier = request.identifier
testIdentifier = request.identifier,
comesFromDispatcherFragment = comesFromDispatcherFragment
)
)
} else {
Expand All @@ -93,7 +98,8 @@ class SubmissionDeletionWarningViewModel @AssistedInject constructor(
DuplicateWarningEvent.Direction(
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionWarningFragmentToSubmissionTestResultKeysSharedFragment(
testIdentifier = request.identifier
testIdentifier = request.identifier,
comesFromDispatcherFragment = comesFromDispatcherFragment
)
)
)
Expand All @@ -103,7 +109,8 @@ class SubmissionDeletionWarningViewModel @AssistedInject constructor(
DuplicateWarningEvent.Direction(
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionWarningFragmentToSubmissionTestResultNegativeFragment(
testIdentifier = request.identifier
testIdentifier = request.identifier,
comesFromDispatcherFragment = comesFromDispatcherFragment
)
)
)
Expand All @@ -112,7 +119,8 @@ class SubmissionDeletionWarningViewModel @AssistedInject constructor(
DuplicateWarningEvent.Direction(
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionWarningFragmentToSubmissionTestResultPendingFragment(
testIdentifier = request.identifier
testIdentifier = request.identifier,
comesFromDispatcherFragment = comesFromDispatcherFragment
)
)
)
Expand All @@ -122,7 +130,8 @@ class SubmissionDeletionWarningViewModel @AssistedInject constructor(
@AssistedFactory
interface Factory : CWAViewModelFactory<SubmissionDeletionWarningViewModel> {
fun create(
testRegistrationRequest: TestRegistrationRequest
testRegistrationRequest: TestRegistrationRequest,
comesFromDispatcherFragment: Boolean
): SubmissionDeletionWarningViewModel
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.navigation.fragment.FragmentNavigatorExtras
import androidx.navigation.fragment.findNavController
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.databinding.FragmentSubmissionDispatcherBinding
import de.rki.coronawarnapp.qrcode.ui.QrCodeScannerFragmentArgs
import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionDispatcherViewModel
import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
import de.rki.coronawarnapp.util.ExternalActionHelper.openUrl
Expand Down Expand Up @@ -37,7 +38,9 @@ class SubmissionDispatcherFragment : Fragment(R.layout.fragment_submission_dispa
is SubmissionNavigationEvents.NavigateToTAN ->
doNavigate(
SubmissionDispatcherFragmentDirections
.actionSubmissionDispatcherFragmentToSubmissionTanFragment()
.actionSubmissionDispatcherFragmentToSubmissionTanFragment(
comesFromDispatcherFragment = true
)
)
is SubmissionNavigationEvents.OpenTestCenterUrl ->
openUrl(getString(R.string.submission_dispatcher_card_test_center_link))
Expand Down Expand Up @@ -69,9 +72,10 @@ class SubmissionDispatcherFragment : Fragment(R.layout.fragment_submission_dispa
val dispatcherCard = binding.submissionDispatcherQr.dispatcherCard.apply {
transitionName = "shared_element_container"
}
val args = QrCodeScannerFragmentArgs(comesFromDispatcherFragment = true).toBundle()
findNavController().navigate(
R.id.action_to_universal_scanner,
null,
args,
null,
FragmentNavigatorExtras(dispatcherCard to dispatcherCard.transitionName)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.os.Bundle
import android.view.View
import android.view.accessibility.AccessibilityEvent
import androidx.activity.OnBackPressedCallback
import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentBackNavArg.BackToTestRegistrationSelection
import androidx.fragment.app.Fragment
import androidx.navigation.NavOptions
import androidx.navigation.fragment.findNavController
Expand All @@ -15,6 +14,7 @@ import de.rki.coronawarnapp.NavGraphDirections
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.databinding.FragmentSubmissionConsentBinding
import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor.State
import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentBackNavArg.BackToTestRegistrationSelection
import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
import de.rki.coronawarnapp.util.DialogHelper
import de.rki.coronawarnapp.util.di.AutoInject
Expand Down Expand Up @@ -72,11 +72,18 @@ class SubmissionConsentFragment : Fragment(R.layout.fragment_submission_consent)
NavGraphDirections.actionRequestCovidCertificateFragment(
testRegistrationRequest = it.coronaTestQRCode,
coronaTestConsent = it.consentGiven,
allowTestReplacement = it.allowReplacement
allowTestReplacement = it.allowReplacement,
comesFromDispatcherFragment = navArgs.comesFromDispatcherFragment
),
navOptions
)
is SubmissionNavigationEvents.NavigateClose -> popBackStack()
is SubmissionNavigationEvents.NavigateClose -> {
if (navArgs.comesFromDispatcherFragment) {
doNavigate(
SubmissionConsentFragmentDirections.actionSubmissionConsentFragmentToHomeFragment()
)
} else popBackStack()
}
is SubmissionNavigationEvents.NavigateBackToTestRegistration -> doNavigate(
SubmissionConsentFragmentDirections
.actionSubmissionConsentFragmentToTestRegistrationSelectionFragment(
Expand Down
Loading