From 3abeab8b368cb267596e934d093637e547dc1b5b Mon Sep 17 00:00:00 2001 From: alexandr Date: Tue, 27 Feb 2024 15:17:24 +0200 Subject: [PATCH] [MS-222] View model is initilized only once in ConnectScannerControllerFragment. Flag responsible for asking the permission is persisted across the configuration changes --- .../ConnectScannerControllerFragment.kt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/fingerprint/connect/src/main/java/com/simprints/fingerprint/connect/screens/controller/ConnectScannerControllerFragment.kt b/fingerprint/connect/src/main/java/com/simprints/fingerprint/connect/screens/controller/ConnectScannerControllerFragment.kt index 7a63b228f9..b585490a1a 100644 --- a/fingerprint/connect/src/main/java/com/simprints/fingerprint/connect/screens/controller/ConnectScannerControllerFragment.kt +++ b/fingerprint/connect/src/main/java/com/simprints/fingerprint/connect/screens/controller/ConnectScannerControllerFragment.kt @@ -84,7 +84,12 @@ internal class ConnectScannerControllerFragment : Fragment(R.layout.fragment_con override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel.init(args.params) + shouldRequestPermissions = savedInstanceState?.getBoolean(KEY_SHOULD_REQUEST_PERMISSIONS) + ?: shouldRequestPermissions + + if (savedInstanceState == null) { + viewModel.init(args.params) + } findNavController().handleResult(this, R.id.connectScannerControllerFragment, ExitFormContract.DESTINATION, ::handleExitForm) findNavController().handleResult(this, R.id.connectScannerControllerFragment, AlertContract.DESTINATION, ::handleResult) @@ -160,6 +165,11 @@ internal class ConnectScannerControllerFragment : Fragment(R.layout.fragment_con } } + override fun onSaveInstanceState(outState: Bundle) { + outState.putBoolean(KEY_SHOULD_REQUEST_PERMISSIONS, shouldRequestPermissions) + super.onSaveInstanceState(outState) + } + override fun onResume() { super.onResume() alertHelper.handleResume { shouldRequestPermissions = true } @@ -224,4 +234,8 @@ internal class ConnectScannerControllerFragment : Fragment(R.layout.fragment_con findNavController().finishWithResult(this, FingerprintConnectResult(isSuccess)) } + companion object { + private const val KEY_SHOULD_REQUEST_PERMISSIONS = "KEY_SHOULD_REQUEST_PERMISSIONS" + } + }