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 all 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 @@ -45,13 +45,14 @@ class SubmissionSymptomCalendarFragmentTest : BaseUITest() {
MockKAnnotations.init(this, relaxed = true)
viewModel = spyk(
SubmissionSymptomCalendarViewModel(
Symptoms.Indication.POSITIVE,
BaseCoronaTest.Type.PCR,
TestDispatcherProvider(),
submissionRepository,
autoSubmission,
analyticsKeySubmissionCollector,
TestScope()
symptomIndication = Symptoms.Indication.POSITIVE,
testType = BaseCoronaTest.Type.PCR,
comesFromDispatcherFragment = false,
dispatcherProvider = TestDispatcherProvider(),
submissionRepository = submissionRepository,
autoSubmission = autoSubmission,
analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
appScope = TestScope()
)
)
with(viewModel) {
Expand All @@ -61,7 +62,8 @@ class SubmissionSymptomCalendarFragmentTest : BaseUITest() {
object : SubmissionSymptomCalendarViewModel.Factory {
override fun create(
symptomIndication: Symptoms.Indication,
testType: BaseCoronaTest.Type
testType: BaseCoronaTest.Type,
comesFromDispatcherFragment: Boolean
): SubmissionSymptomCalendarViewModel = viewModel
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,24 @@ class SubmissionSymptomIntroFragmentTest : BaseUITest() {
MockKAnnotations.init(this, relaxed = true)
viewModel = spyk(
SubmissionSymptomIntroductionViewModel(
TestDispatcherProvider(),
submissionRepository,
autoSubmission,
analyticsKeySubmissionCollector,
BaseCoronaTest.Type.PCR,
TestScope()
dispatcherProvider = TestDispatcherProvider(),
submissionRepository = submissionRepository,
autoSubmission = autoSubmission,
analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
testType = BaseCoronaTest.Type.PCR,
comesFromDispatcherFragment = false,
appScope = TestScope()
)
)
with(viewModel) {
every { symptomIndication } returns MutableLiveData(Symptoms.Indication.POSITIVE)
}
setupMockViewModel(
object : SubmissionSymptomIntroductionViewModel.Factory {
override fun create(testType: BaseCoronaTest.Type): SubmissionSymptomIntroductionViewModel = viewModel
override fun create(
testType: BaseCoronaTest.Type,
comesFromDispatcherFragment: Boolean
): SubmissionSymptomIntroductionViewModel = viewModel
}
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,18 @@ class SubmissionTestResultAvailableFragmentTest : BaseUITest() {
autoSubmission = autoSubmission,
analyticsKeySubmissionCollector = analyticsKeySubmissionCollector,
checkInRepository = checkInRepository,
comesFromDispatcherFragment = false,
coronaTestProvider = coronaTestProvider,
testIdentifier = ""
)
)

setupMockViewModel(
object : SubmissionTestResultAvailableViewModel.Factory {
override fun create(testIdentifier: TestIdentifier): SubmissionTestResultAvailableViewModel = viewModel
override fun create(
testIdentifier: TestIdentifier,
comesFromDispatcherFragment: Boolean
): SubmissionTestResultAvailableViewModel = viewModel
}
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class SubmissionTestResultFragmentTest : BaseUITest() {
recycledTestProvider = recycledTestProvider,
initialUpdate = false,
testIdentifier = "",
comesFromDispatcherFragment = false,
coronaTestProvider = coronaTestProvider
)
)
Expand All @@ -82,7 +83,8 @@ class SubmissionTestResultFragmentTest : BaseUITest() {
object : SubmissionTestResultPendingViewModel.Factory {
override fun create(
testIdentifier: TestIdentifier,
initialUpdate: Boolean
initialUpdate: Boolean,
comesFromDispatcherFragment: Boolean
): SubmissionTestResultPendingViewModel = viewModel
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class FamilyTestConsentFragment : Fragment(R.layout.fragment_family_test_consent
}
is FamilyTestConsentNavigationEvents.NavigateClose -> {
binding.root.hideKeyboard()
popBackStack()
goBack()
}
is FamilyTestConsentNavigationEvents.NavigateToDataPrivacy -> doNavigate(
FamilyTestConsentFragmentDirections.actionFamilyTestConsentFragmentToInformationPrivacyFragment()
Expand Down Expand Up @@ -143,4 +143,10 @@ class FamilyTestConsentFragment : Fragment(R.layout.fragment_family_test_consent
binding.consentButton.isActive = it
}
}

private fun goBack() {
if (navArgs.comesFromDispatcherFragment) {
doNavigate(FamilyTestConsentFragmentDirections.actionGlobalMainFragment())
} else popBackStack()
}
}
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 @@ -11,6 +11,7 @@ import de.rki.coronawarnapp.NavGraphDirections
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.coronatest.tan.CoronaTestTAN
import de.rki.coronawarnapp.coronatest.type.BaseCoronaTest
import de.rki.coronawarnapp.coronatest.type.TestIdentifier
import de.rki.coronawarnapp.databinding.FragmentSubmissionDeletionWarningBinding
import de.rki.coronawarnapp.submission.TestRegistrationStateProcessor.State
import de.rki.coronawarnapp.util.di.AutoInject
Expand Down Expand Up @@ -41,7 +42,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 @@ -82,34 +83,53 @@ class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_
popBackStack()
}
is State.TestRegistered -> when {
state.test.isPositive -> {
if (args.testRegistrationRequest is CoronaTestTAN) {
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment(
testIdentifier = state.test.identifier
)
} else {
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(
testIdentifier = state.test.identifier
)
}
}
else -> NavGraphDirections.actionSubmissionTestResultPendingFragment(
testIdentifier = state.test.identifier
state.test.isPositive -> sortNavigation(state.test.identifier)
else -> findNavController().navigate(
NavGraphDirections.actionSubmissionTestResultPendingFragment(
testIdentifier = state.test.identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
),
navOptions
)
}.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.actionGlobalMainFragment()
}
popBackStack()
}
is DuplicateWarningEvent.Direction -> findNavController().navigate(event.direction, navOptions)
}
}
}
}

private fun sortNavigation(identifier: TestIdentifier) {
if (args.testRegistrationRequest is CoronaTestTAN) {
findNavController().navigate(
SubmissionDeletionWarningFragmentDirections
.actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment(
testIdentifier = identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
),
navOptions
)
} else {
findNavController().navigate(
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(
testIdentifier = identifier,
comesFromDispatcherFragment = args.comesFromDispatcherFragment
),
navOptions
)
}
}

override fun onResume() {
super.onResume()
binding.contentContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
Expand Down
Loading