Skip to content
Snippets Groups Projects
Unverified Commit 287c128f authored by Matthias Urhahn's avatar Matthias Urhahn Committed by GitHub
Browse files

Refactor and reduce code complexity (DEV) #3150


* Refactor and reduce code complexity (SONAR debt).

* Good morning detekt, yes it's a complex method but it is actually really readable from top to bottom.

* Address PR suggestion.

Co-authored-by: default avatarMohamed <mohamed.metwalli@sap.com>
parent 0166b3bb
No related branches found
No related tags found
No related merge requests found
...@@ -12,7 +12,7 @@ import com.journeyapps.barcodescanner.DefaultDecoderFactory ...@@ -12,7 +12,7 @@ import com.journeyapps.barcodescanner.DefaultDecoderFactory
import de.rki.coronawarnapp.NavGraphDirections import de.rki.coronawarnapp.NavGraphDirections
import de.rki.coronawarnapp.R import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.coronatest.server.CoronaTestResult import de.rki.coronawarnapp.coronatest.server.CoronaTestResult
import de.rki.coronawarnapp.coronatest.type.CoronaTest import de.rki.coronawarnapp.coronatest.type.CoronaTest.Type
import de.rki.coronawarnapp.databinding.FragmentSubmissionQrCodeScanBinding import de.rki.coronawarnapp.databinding.FragmentSubmissionQrCodeScanBinding
import de.rki.coronawarnapp.exception.http.BadRequestException import de.rki.coronawarnapp.exception.http.BadRequestException
import de.rki.coronawarnapp.exception.http.CwaClientError import de.rki.coronawarnapp.exception.http.CwaClientError
...@@ -30,6 +30,7 @@ import de.rki.coronawarnapp.util.ui.popBackStack ...@@ -30,6 +30,7 @@ import de.rki.coronawarnapp.util.ui.popBackStack
import de.rki.coronawarnapp.util.ui.viewBindingLazy import de.rki.coronawarnapp.util.ui.viewBindingLazy
import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider
import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted
import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
/** /**
...@@ -51,41 +52,31 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -51,41 +52,31 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
private val binding: FragmentSubmissionQrCodeScanBinding by viewBindingLazy() private val binding: FragmentSubmissionQrCodeScanBinding by viewBindingLazy()
private var showsPermissionDialog = false private var showsPermissionDialog = false
@Suppress("ComplexMethod")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
with(binding) { binding.apply {
submissionQrCodeScanTorch.setOnCheckedChangeListener { _, isChecked -> submissionQrCodeScanTorch.setOnCheckedChangeListener { _, isChecked ->
binding.submissionQrCodeScanPreview.setTorch( submissionQrCodeScanPreview.setTorch(isChecked)
isChecked
)
} }
submissionQrCodeScanToolbar.setNavigationOnClickListener { submissionQrCodeScanToolbar.setNavigationOnClickListener { viewModel.onClosePressed() }
viewModel.onClosePressed()
}
submissionQrCodeScanPreview.decoderFactory = submissionQrCodeScanPreview.decoderFactory = DefaultDecoderFactory(listOf(BarcodeFormat.QR_CODE))
DefaultDecoderFactory(listOf(BarcodeFormat.QR_CODE))
submissionQrCodeScanViewfinderView.setCameraPreview(binding.submissionQrCodeScanPreview) submissionQrCodeScanViewfinderView.setCameraPreview(submissionQrCodeScanPreview)
} }
viewModel.routeToScreen.observe2(this) { viewModel.routeToScreen.observe2(this) {
when (it) { when (it) {
is SubmissionNavigationEvents.NavigateToDeletionWarningFragmentFromQrCode -> { is SubmissionNavigationEvents.NavigateToDeletionWarningFragmentFromQrCode -> {
doNavigate( NavGraphDirections
NavGraphDirections .actionToSubmissionDeletionWarningFragment(it.consentGiven, it.coronaTestQRCode)
.actionToSubmissionDeletionWarningFragment( .run { doNavigate(this) }
it.consentGiven,
it.coronaTestQRCode
)
)
} }
is SubmissionNavigationEvents.NavigateToDispatcher -> is SubmissionNavigationEvents.NavigateToDispatcher -> navigateToDispatchScreen()
navigateToDispatchScreen() is SubmissionNavigationEvents.NavigateToConsent -> goBack()
is SubmissionNavigationEvents.NavigateToConsent ->
goBack()
} }
} }
...@@ -111,58 +102,37 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -111,58 +102,37 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
ApiRequestState.STARTED -> View.VISIBLE ApiRequestState.STARTED -> View.VISIBLE
else -> View.GONE else -> View.GONE
} }
if (ApiRequestState.SUCCESS == state.apiRequestState) { if (ApiRequestState.SUCCESS == state.apiRequestState) {
when (state.test?.testResult) { return@observe2
CoronaTestResult.PCR_POSITIVE ->
doNavigate(
NavGraphDirections
.actionToSubmissionTestResultAvailableFragment(testType = CoronaTest.Type.PCR)
)
CoronaTestResult.PCR_OR_RAT_PENDING -> {
if (state.test.type == CoronaTest.Type.RAPID_ANTIGEN) {
doNavigate(
NavGraphDirections
.actionSubmissionTestResultPendingFragment(
testType = CoronaTest.Type.RAPID_ANTIGEN
)
)
} else {
doNavigate(
NavGraphDirections
.actionSubmissionTestResultPendingFragment(
testType = CoronaTest.Type.PCR
)
)
}
}
CoronaTestResult.PCR_NEGATIVE,
CoronaTestResult.PCR_INVALID,
CoronaTestResult.PCR_REDEEMED ->
doNavigate(
NavGraphDirections
.actionSubmissionTestResultPendingFragment(
testType = CoronaTest.Type.PCR
)
)
CoronaTestResult.RAT_POSITIVE ->
doNavigate(
NavGraphDirections
.actionToSubmissionTestResultAvailableFragment(
testType = CoronaTest.Type.RAPID_ANTIGEN
)
)
CoronaTestResult.RAT_NEGATIVE,
CoronaTestResult.RAT_INVALID,
CoronaTestResult.RAT_PENDING,
CoronaTestResult.RAT_REDEEMED ->
doNavigate(
NavGraphDirections
.actionSubmissionTestResultPendingFragment(
testType = CoronaTest.Type.RAPID_ANTIGEN
)
)
}
} }
if (state.test == null) {
Timber.w("Successful API request, but test was null?")
return@observe2
}
when (state.test.testResult) {
CoronaTestResult.PCR_POSITIVE ->
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(testType = Type.PCR)
CoronaTestResult.PCR_OR_RAT_PENDING ->
NavGraphDirections.actionSubmissionTestResultPendingFragment(testType = state.test.type)
CoronaTestResult.PCR_NEGATIVE,
CoronaTestResult.PCR_INVALID,
CoronaTestResult.PCR_REDEEMED ->
NavGraphDirections.actionSubmissionTestResultPendingFragment(testType = Type.PCR)
CoronaTestResult.RAT_POSITIVE ->
NavGraphDirections.actionToSubmissionTestResultAvailableFragment(testType = Type.RAPID_ANTIGEN)
CoronaTestResult.RAT_NEGATIVE,
CoronaTestResult.RAT_INVALID,
CoronaTestResult.RAT_PENDING,
CoronaTestResult.RAT_REDEEMED ->
NavGraphDirections.actionSubmissionTestResultPendingFragment(testType = Type.RAPID_ANTIGEN)
}.run { doNavigate(this) }
} }
viewModel.registrationError.observe2(this) { viewModel.registrationError.observe2(this) {
...@@ -209,10 +179,9 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co ...@@ -209,10 +179,9 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co
} }
} }
private fun navigateToDispatchScreen() = private fun navigateToDispatchScreen() = doNavigate(
doNavigate( SubmissionQRCodeScanFragmentDirections.actionSubmissionQRCodeScanFragmentToSubmissionDispatcherFragment()
SubmissionQRCodeScanFragmentDirections.actionSubmissionQRCodeScanFragmentToSubmissionDispatcherFragment() )
)
private fun showInvalidScanDialog() { private fun showInvalidScanDialog() {
val invalidScanDialogInstance = DialogHelper.DialogInstance( val invalidScanDialogInstance = DialogHelper.DialogInstance(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment