From 1b1cb23bff60ba6c721211cc070b32c13c4fe0e4 Mon Sep 17 00:00:00 2001 From: Marten Rebane Date: Wed, 20 May 2026 19:18:37 +0300 Subject: [PATCH] Remove ID-card reader support --- .../ee/ria/DigiDoc/utils/ConstantTest.kt | 2 - .../kotlin/ee/ria/DigiDoc/utils/RouteTest.kt | 4 - .../DigiDoc/viewmodel/IdCardViewModelTest.kt | 969 ------------------ .../shared/SharedMyEidViewModelTest.kt | 83 -- .../ee/ria/DigiDoc/RIADigiDocAppNavigation.kt | 18 - .../model/crypto/DecryptMethodSetting.kt | 38 - .../domain/model/methods/SigningMethod.kt | 1 - .../myeid/MyEidIdentificationMethodSetting.kt | 38 - .../DigiDoc/domain/preferences/DataStore.kt | 25 - .../fragment/DecryptMethodChooserFragment.kt | 82 -- ...yEidIdentificationMethodChooserFragment.kt | 82 -- .../screen/DecryptMethodChooserScreen.kt | 218 ---- .../DigiDoc/fragment/screen/DecryptScreen.kt | 211 +--- .../MyEidIdentificationMethodChooserScreen.kt | 218 ---- .../screen/MyEidIdentificationScreen.kt | 217 +--- .../fragment/screen/SignatureInputScreen.kt | 48 +- .../crypto/DecryptMethodChoiceButtonItem.kt | 58 -- ...EidIdentificationMethodChoiceButtonItem.kt | 58 -- .../DigiDoc/ui/component/myeid/MyEidScreen.kt | 21 - .../myeid/pinandcertificate/MyEidPinScreen.kt | 29 +- .../ui/component/signing/IdCardView.kt | 850 --------------- .../DigiDoc/ui/component/signing/NFCView.kt | 6 +- .../signing/SignatureAddRadioItem.kt | 9 - .../kotlin/ee/ria/DigiDoc/utils/Constant.kt | 2 - .../main/kotlin/ee/ria/DigiDoc/utils/Route.kt | 6 - .../ria/DigiDoc/viewmodel/IdCardViewModel.kt | 392 ------- .../viewmodel/shared/SharedMyEidViewModel.kt | 74 +- app/src/main/res/values-et/strings.xml | 2 - app/src/main/res/values/strings.xml | 2 - id-card-lib/id-lib/id-card-lib-debug.aar | Bin 44700 -> 43750 bytes id-card-lib/id-lib/id-card-lib-release.aar | Bin 42920 -> 41977 bytes .../smart-lib/smart-card-reader-lib-debug.aar | Bin 119322 -> 9105 bytes .../smart-card-reader-lib-release.aar | Bin 118389 -> 8852 bytes id-card-lib/src/main/AndroidManifest.xml | 6 +- .../ee/ria/DigiDoc/domain/di/AppModules.kt | 97 -- .../domain/service/IdCardServiceImpl.kt | 4 +- .../DigiDoc/network/utils/UserAgentUtil.kt | 11 +- 37 files changed, 130 insertions(+), 3751 deletions(-) delete mode 100644 app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModelTest.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/domain/model/crypto/DecryptMethodSetting.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/domain/model/myeid/MyEidIdentificationMethodSetting.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/fragment/DecryptMethodChooserFragment.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/fragment/MyEidIdentificationMethodChooserFragment.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptMethodChooserScreen.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationMethodChooserScreen.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/DecryptMethodChoiceButtonItem.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidIdentificationMethodChoiceButtonItem.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/IdCardView.kt delete mode 100644 app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModel.kt delete mode 100644 id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/di/AppModules.kt diff --git a/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/ConstantTest.kt b/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/ConstantTest.kt index 340f851e4..c87250030 100644 --- a/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/ConstantTest.kt +++ b/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/ConstantTest.kt @@ -44,7 +44,6 @@ class ConstantTest { assertEquals("signing_route", Constant.Routes.SIGNING_SCREEN) assertEquals("encrypt_route", Constant.Routes.ENCRYPT_SCREEN) assertEquals("decrypt_route", Constant.Routes.DECRYPT_SCREEN) - assertEquals("decrypt_method_route", Constant.Routes.DECRYPT_METHOD_SCREEN) assertEquals("accessibility_route", Constant.Routes.ACCESSIBILITY_SCREEN) assertEquals("info_route", Constant.Routes.INFO_SCREEN) assertEquals("diagnostics_route", Constant.Routes.DIAGNOSTICS_SCREEN) @@ -66,7 +65,6 @@ class ConstantTest { assertEquals("proxy_services_route", Constant.Routes.PROXY_SERVICES_SCREEN) assertEquals("container_notifications_route", Constant.Routes.CONTAINER_NOTIFICATIONS_SCREEN) assertEquals("myeid_identification_route", Constant.Routes.MYEID_IDENTIFICATION_SCREEN) - assertEquals("myeid_identification_method_route", Constant.Routes.MYEID_IDENTIFICATION_METHOD_SCREEN) assertEquals("myeid_screen_route", Constant.Routes.MYEID_SCREEN) assertEquals("myeid_pin_screen_route", Constant.Routes.MYEID_PIN_SCREEN) } diff --git a/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/RouteTest.kt b/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/RouteTest.kt index 2c4c81a4b..8eeb954ac 100644 --- a/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/RouteTest.kt +++ b/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/RouteTest.kt @@ -27,7 +27,6 @@ import ee.ria.DigiDoc.utils.Constant.Routes.CERTIFICATE_DETAIL_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.CONTAINER_NOTIFICATIONS_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.CRYPTO_FILE_CHOOSING_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.CRYPTO_SCREEN -import ee.ria.DigiDoc.utils.Constant.Routes.DECRYPT_METHOD_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.DECRYPT_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.DIAGNOSTICS_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.EID_SCREEN @@ -37,7 +36,6 @@ import ee.ria.DigiDoc.utils.Constant.Routes.ENCRYPT_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.HOME_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.INFO_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.INIT_SCREEN -import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_IDENTIFICATION_METHOD_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_IDENTIFICATION_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_PIN_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_SCREEN @@ -75,7 +73,6 @@ class RouteTest { assertEquals(SIGNING_SCREEN, Route.Signing.route) assertEquals(ENCRYPT_SCREEN, Route.Encrypt.route) assertEquals(DECRYPT_SCREEN, Route.DecryptScreen.route) - assertEquals(DECRYPT_METHOD_SCREEN, Route.DecryptMethodScreen.route) assertEquals(ACCESSIBILITY_SCREEN, Route.Accessibility.route) assertEquals(INFO_SCREEN, Route.Info.route) assertEquals(DIAGNOSTICS_SCREEN, Route.Diagnostics.route) @@ -98,7 +95,6 @@ class RouteTest { assertEquals(PROXY_SERVICES_SCREEN, Route.ProxyServicesScreen.route) assertEquals(CONTAINER_NOTIFICATIONS_SCREEN, Route.ContainerNotificationsScreen.route) assertEquals(MYEID_IDENTIFICATION_SCREEN, Route.MyEidIdentificationScreen.route) - assertEquals(MYEID_IDENTIFICATION_METHOD_SCREEN, Route.MyEidIdentificationMethodScreen.route) assertEquals(MYEID_SCREEN, Route.MyEidScreen.route) assertEquals(MYEID_PIN_SCREEN, Route.MyEidPinScreen.route) } diff --git a/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModelTest.kt b/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModelTest.kt deleted file mode 100644 index 377195801..000000000 --- a/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModelTest.kt +++ /dev/null @@ -1,969 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName") - -package ee.ria.DigiDoc.viewmodel - -import android.content.Context -import android.content.res.Resources -import androidx.activity.ComponentActivity -import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import androidx.lifecycle.Observer -import androidx.test.platform.app.InstrumentationRegistry -import ee.ria.DigiDoc.IdCardDataCreator.Companion.createMockIdCardData -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.common.certificate.CertificateService -import ee.ria.DigiDoc.common.model.EIDType -import ee.ria.DigiDoc.common.model.ExtendedCertificate -import ee.ria.DigiDoc.common.testfiles.asset.AssetFile -import ee.ria.DigiDoc.configuration.repository.ConfigurationRepository -import ee.ria.DigiDoc.cryptolib.CDOC2Settings -import ee.ria.DigiDoc.cryptolib.CryptoContainer -import ee.ria.DigiDoc.domain.model.IdCardData -import ee.ria.DigiDoc.domain.service.IdCardService -import ee.ria.DigiDoc.idcard.CodeType -import ee.ria.DigiDoc.idcard.CodeVerificationException -import ee.ria.DigiDoc.idcard.PersonalData -import ee.ria.DigiDoc.idcard.Token -import ee.ria.DigiDoc.libdigidoclib.SignedContainer -import ee.ria.DigiDoc.libdigidoclib.init.Initialization -import ee.ria.DigiDoc.libdigidoclib.init.LibdigidocLibraryLoader -import ee.ria.DigiDoc.smartcardreader.SmartCardReader -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderManager -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus -import io.reactivex.rxjava3.core.Observable -import kotlinx.coroutines.Dispatchers.Main -import kotlinx.coroutines.flow.take -import kotlinx.coroutines.flow.toList -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.test.runTest -import kotlinx.coroutines.yield -import org.bouncycastle.asn1.x509.ExtendedKeyUsage -import org.bouncycastle.asn1.x509.KeyUsage -import org.bouncycastle.cert.X509CertificateHolder -import org.bouncycastle.util.encoders.Hex -import org.junit.Assert.assertEquals -import org.junit.Assert.assertFalse -import org.junit.Assert.assertNotNull -import org.junit.Assert.assertNull -import org.junit.Assert.assertTrue -import org.junit.Assert.fail -import org.junit.Before -import org.junit.BeforeClass -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.Mock -import org.mockito.Mockito.mock -import org.mockito.Mockito.verify -import org.mockito.Mockito.`when` -import org.mockito.MockitoAnnotations -import org.mockito.junit.MockitoJUnitRunner -import org.mockito.kotlin.any -import org.mockito.kotlin.anyOrNull -import org.mockito.kotlin.atLeastOnce -import org.mockito.kotlin.eq -import java.io.File - -@RunWith(MockitoJUnitRunner::class) -class IdCardViewModelTest { - @get:Rule - val instantExecutorRule = InstantTaskExecutorRule() - - @Mock - private lateinit var mockContext: Context - - @Mock - private lateinit var resources: Resources - - @Mock - private lateinit var idCardService: IdCardService - - @Mock - private lateinit var certificateService: CertificateService - - @Mock - private lateinit var smartCardReaderManager: SmartCardReaderManager - - @Mock - private lateinit var x509CertificateHolder: X509CertificateHolder - - @Mock - private lateinit var token: Token - - @Mock - private lateinit var mockSmartCardReader: SmartCardReader - - @Mock - private lateinit var mockComponentActivity: ComponentActivity - - private lateinit var container: File - - private lateinit var context: Context - - private lateinit var viewModel: IdCardViewModel - - private lateinit var cdoc2Settings: CDOC2Settings - - private lateinit var configurationRepository: ConfigurationRepository - - companion object { - @JvmStatic - @BeforeClass - fun setupOnce() { - runBlocking { - try { - val context = InstrumentationRegistry.getInstrumentation().targetContext - val configurationRepository = mock(ConfigurationRepository::class.java) - LibdigidocLibraryLoader().init(context) - Initialization(configurationRepository).init(context) - } catch (_: Exception) { - } - } - } - } - - @Before - fun setUp() { - MockitoAnnotations.openMocks(this) - context = InstrumentationRegistry.getInstrumentation().targetContext - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.IDLE)) - `when`(mockContext.resources).thenReturn(resources) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - configurationRepository = mock(ConfigurationRepository::class.java) - cdoc2Settings = CDOC2Settings(context, configurationRepository) - viewModel = IdCardViewModel(smartCardReaderManager, idCardService, cdoc2Settings, configurationRepository) - - container = - AssetFile.getResourceFileAsFile( - context, - "example.asice", - ee.ria.DigiDoc.common.R.raw.example, - ) - } - - @Test - fun idCardViewModel_idCardStatus_success() { - runTest { - val idCardStatus = viewModel.idCardStatus.value - - assertEquals(SmartCardReaderStatus.IDLE, idCardStatus) - } - } - - @Test - fun idCardViewModel_loadPersonalData_success() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val mockIdCardData = createMockIdCardData() - val keyUsage = mock(KeyUsage::class.java) - val extendedKeyUsage = mock(ExtendedKeyUsage::class.java) - val mockSmartCardReader = mock(SmartCardReader::class.java) - - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockIdCardData.personalData) - - val testName = "Test name" - - `when`(certificateService.parseCertificate(anyOrNull())) - .thenReturn(x509CertificateHolder) - `when`(certificateService.extractEIDType(any())) - .thenReturn(EIDType.ID_CARD) - `when`(certificateService.extractFriendlyName(anyOrNull())).thenReturn(testName) - `when`(certificateService.isEllipticCurve(anyOrNull())).thenReturn(true) - `when`(certificateService.extractKeyUsage(any())).thenReturn(keyUsage) - `when`(certificateService.extractExtendedKeyUsage(any())).thenReturn(extendedKeyUsage) - - val idCardData = - IdCardData( - EIDType.ID_CARD, - mockIdCardData.personalData, - mockIdCardData.authCertificate, - mockIdCardData.signCertificate, - 3, - 3, - 3, - true, - ) - - `when`(idCardService.data(anyOrNull())).thenReturn(idCardData) - - viewModel.loadPersonalData() - - val userDataValue = viewModel.userData.value - assertEquals(mockIdCardData, userDataValue) - } - - @Test - fun idCardViewModel_loadPersonalData_resetValuesAfterException() = - runTest { - viewModel.loadPersonalData() - - assertNull(viewModel.signStatus.value) - assertNull(viewModel.dialogError.value) - assertEquals(SmartCardReaderStatus.IDLE, viewModel.idCardStatus.value) - assertNull(viewModel.userData.value) - assertNull(viewModel.errorState.value) - assertNull(viewModel.pinErrorState.value) - assertNull(viewModel.signStatus.value) - assertNull(viewModel.signedContainer.value) - } - - @Test - fun idCardViewModel_sign_success() = - runBlocking { - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - `when`(resources.getString(any())).thenReturn("Mocked String") - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val mockPersonalData = mock(PersonalData::class.java) - val keyUsage = mock(KeyUsage::class.java) - val extendedKeyUsage = mock(ExtendedKeyUsage::class.java) - val mockSmartCardReader = mock(SmartCardReader::class.java) - - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`( - idCardService.signContainer(any(), eq(signedContainer), eq(pin2), eq(null)), - ).thenReturn(signedContainer) - - val testData = byteArrayOf(1, 2, 3) - val testName = "Test name" - - `when`(certificateService.parseCertificate(anyOrNull())) - .thenReturn(x509CertificateHolder) - `when`(certificateService.extractEIDType(any())) - .thenReturn(EIDType.ID_CARD) - `when`(certificateService.extractFriendlyName(anyOrNull())).thenReturn(testName) - `when`(certificateService.isEllipticCurve(anyOrNull())).thenReturn(true) - `when`(certificateService.extractKeyUsage(any())).thenReturn(keyUsage) - `when`(certificateService.extractExtendedKeyUsage(any())).thenReturn(extendedKeyUsage) - - val certificate = ExtendedCertificate.create(testData, certificateService) - - val idCardData = - IdCardData( - EIDType.ID_CARD, - mockPersonalData, - certificate, - certificate, - 3, - 3, - 3, - true, - ) - - `when`(idCardService.data(anyOrNull())).thenReturn(idCardData) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - val signStatus = viewModel.signStatus.value - - if (signStatus != null) { - assertTrue(signStatus) - } else { - fail("signStatus is null") - } - - assertNotNull(viewModel.signedContainer.value) - } - - @Test - fun idCardViewModel_sign_handleWrongPin2Exception2Retries() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val mockPersonalData = mock(PersonalData::class.java) - val keyUsage = mock(KeyUsage::class.java) - val extendedKeyUsage = mock(ExtendedKeyUsage::class.java) - val mockSmartCardReader = mock(SmartCardReader::class.java) - - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - val testData = byteArrayOf(1, 2, 3) - val testName = "Test name" - - `when`(certificateService.parseCertificate(anyOrNull())) - .thenReturn(x509CertificateHolder) - `when`(certificateService.extractEIDType(any())) - .thenReturn(EIDType.ID_CARD) - `when`(certificateService.extractFriendlyName(anyOrNull())).thenReturn(testName) - `when`(certificateService.isEllipticCurve(anyOrNull())).thenReturn(true) - `when`(certificateService.extractKeyUsage(any())).thenReturn(keyUsage) - `when`(certificateService.extractExtendedKeyUsage(any())).thenReturn(extendedKeyUsage) - - val certificate = ExtendedCertificate.create(testData, certificateService) - - val idCardData = - IdCardData( - EIDType.ID_CARD, - mockPersonalData, - certificate, - certificate, - 3, - 2, - 3, - true, - ) - - `when`(idCardService.data(anyOrNull())).thenReturn(idCardData) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - CodeVerificationException(CodeType.PIN2, 2), - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - val signStatusValue = viewModel.signStatus.value - if (signStatusValue != null) { - assertFalse(signStatusValue) - } else { - fail("signStatusValue is null") - } - assertNull(viewModel.signedContainer.value) - assertEquals( - Triple(R.string.id_card_sign_pin_invalid, CodeType.PIN2.name, 2), - viewModel.pinErrorState.value, - ) - } - - @Test - fun idCardViewModel_sign_handleWrongPin2Exception1Retry() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val mockPersonalData = mock(PersonalData::class.java) - val keyUsage = mock(KeyUsage::class.java) - val extendedKeyUsage = mock(ExtendedKeyUsage::class.java) - val mockSmartCardReader = mock(SmartCardReader::class.java) - - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - val testData = byteArrayOf(1, 2, 3) - val testName = "Test name" - - `when`(certificateService.parseCertificate(anyOrNull())) - .thenReturn(x509CertificateHolder) - `when`(certificateService.extractEIDType(any())) - .thenReturn(EIDType.ID_CARD) - `when`(certificateService.extractFriendlyName(anyOrNull())).thenReturn(testName) - `when`(certificateService.isEllipticCurve(anyOrNull())).thenReturn(true) - `when`(certificateService.extractKeyUsage(any())).thenReturn(keyUsage) - `when`(certificateService.extractExtendedKeyUsage(any())).thenReturn(extendedKeyUsage) - - val certificate = ExtendedCertificate.create(testData, certificateService) - - val idCardData = - IdCardData( - EIDType.ID_CARD, - mockPersonalData, - certificate, - certificate, - 3, - 1, - 3, - true, - ) - - `when`(idCardService.data(anyOrNull())).thenReturn(idCardData) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - CodeVerificationException(CodeType.PIN2, 1), - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - val signStatusValue = viewModel.signStatus.value - if (signStatusValue != null) { - assertFalse(signStatusValue) - } else { - fail("signStatusValue is null") - } - assertNull(viewModel.signedContainer.value) - assertEquals( - Triple(R.string.id_card_sign_pin_invalid_final, CodeType.PIN2.name, null), - viewModel.pinErrorState.value, - ) - } - - @Test - fun idCardViewModel_sign_handleWrongPin2ExceptionPinLocked() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val mockPersonalData = mock(PersonalData::class.java) - val keyUsage = mock(KeyUsage::class.java) - val extendedKeyUsage = mock(ExtendedKeyUsage::class.java) - val mockSmartCardReader = mock(SmartCardReader::class.java) - - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - val testData = byteArrayOf(1, 2, 3) - val testName = "Test name" - - `when`(certificateService.parseCertificate(anyOrNull())) - .thenReturn(x509CertificateHolder) - `when`(certificateService.extractEIDType(any())) - .thenReturn(EIDType.ID_CARD) - `when`(certificateService.extractFriendlyName(anyOrNull())).thenReturn(testName) - `when`(certificateService.isEllipticCurve(anyOrNull())).thenReturn(true) - `when`(certificateService.extractKeyUsage(any())).thenReturn(keyUsage) - `when`(certificateService.extractExtendedKeyUsage(any())).thenReturn(extendedKeyUsage) - - val certificate = ExtendedCertificate.create(testData, certificateService) - - val idCardData = - IdCardData( - EIDType.ID_CARD, - mockPersonalData, - certificate, - certificate, - 3, - 0, - 3, - true, - ) - - `when`(idCardService.data(anyOrNull())).thenReturn(idCardData) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - CodeVerificationException(CodeType.PIN2, 0), - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - val signStatusValue = viewModel.signStatus.value - if (signStatusValue != null) { - assertFalse(signStatusValue) - } else { - fail("signStatusValue is null") - } - assertNull(viewModel.signedContainer.value) - assertEquals( - Triple(R.string.id_card_sign_pin_locked, CodeType.PIN2.name, null), - viewModel.pinErrorState.value, - ) - } - - @Test - fun idCardViewModel_sign_handlePin2NotChangedException() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("PIN2 has not been changed") - - val mockPersonalData = mock(PersonalData::class.java) - val keyUsage = mock(KeyUsage::class.java) - val extendedKeyUsage = mock(ExtendedKeyUsage::class.java) - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - val testData = byteArrayOf(1, 2, 3) - val testName = "Test name" - - `when`(certificateService.parseCertificate(anyOrNull())) - .thenReturn(x509CertificateHolder) - `when`(certificateService.extractEIDType(any())) - .thenReturn(EIDType.ID_CARD) - `when`(certificateService.extractFriendlyName(anyOrNull())).thenReturn(testName) - `when`(certificateService.isEllipticCurve(anyOrNull())).thenReturn(true) - `when`(certificateService.extractKeyUsage(any())).thenReturn(keyUsage) - `when`(certificateService.extractExtendedKeyUsage(any())).thenReturn(extendedKeyUsage) - val certificate = ExtendedCertificate.create(testData, certificateService) - val idCardData = - IdCardData( - EIDType.ID_CARD, - mockPersonalData, - certificate, - certificate, - 3, - 0, - 3, - false, - ) - - `when`(idCardService.data(anyOrNull())).thenReturn(idCardData) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.dialogError.value) - assertEquals(exception.message, viewModel.dialogError.value) - } - - @Test - fun idCardViewModel_sign_handleWrongPin2ExceptionWhenUnableToGetPinRetryCount() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - CodeVerificationException(CodeType.PIN2, 0), - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertFalse(viewModel.signStatus.value == true) - assertNull(viewModel.signedContainer.value) - assertEquals( - Triple(R.string.id_card_sign_pin_locked, CodeType.PIN2.name, null), - viewModel.pinErrorState.value, - ) - } - - @Test - fun idCardViewModel_sign_handleTooManyRequests() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("Too Many Requests") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.dialogError.value) - assertEquals(exception.message, viewModel.dialogError.value) - } - - @Test - fun idCardViewModel_sign_handleOcspResponseNotInValidTimeSlot() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("OCSP response not in valid time slot") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.dialogError.value) - assertEquals(exception.message, viewModel.dialogError.value) - } - - @Test - fun idCardViewModel_sign_handleCertificateStatusRevoked() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("Certificate status: revoked") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.errorState.value) - assertEquals( - Triple(R.string.signature_update_signature_error_message_certificate_revoked, null, null), - viewModel.errorState.value, - ) - } - - @Test - fun idCardViewModel_sign_handleFailedToConnect() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("Failed to connect") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.errorState.value) - assertEquals(Triple(R.string.no_internet_connection, null, null), viewModel.errorState.value) - } - - @Test - fun idCardViewModel_sign_handleFailedToCreateConnectionWithHost() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("Failed to create connection with host") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.errorState.value) - assertEquals(Triple(R.string.no_internet_connection, null, null), viewModel.errorState.value) - } - - @Test - fun idCardViewModel_sign_handleFailedToCreateProxyConnectionWithHost() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("Failed to create proxy connection with host") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.errorState.value) - assertEquals(Triple(R.string.main_settings_proxy_invalid_settings, null, null), viewModel.errorState.value) - } - - @Test - fun idCardViewModel_sign_handleGeneralError() = - runTest { - `when`(smartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.CARD_DETECTED)) - - val pin2 = byteArrayOf(1, 2, 3) - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - val exception = Exception("General error") - - val mockPersonalData = mock(PersonalData::class.java) - - val mockSmartCardReader = mock(SmartCardReader::class.java) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - `when`(smartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - - `when`(token.personalData()).thenReturn(mockPersonalData) - - `when`(mockComponentActivity.resources).thenReturn(resources) - `when`(resources.configuration).thenReturn(context.resources.configuration) - - `when`(idCardService.data(anyOrNull())).thenThrow(Exception()) - `when`(idCardService.signContainer(anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull())).thenThrow( - exception, - ) - - viewModel.sign(mockComponentActivity, signedContainer, pin2, null) - - assertNotNull(viewModel.errorState.value) - assertEquals(Triple(R.string.error_general_client, null, null), viewModel.errorState.value) - } - - @Test - fun idCardViewModel_removePendingSignature_success() = - runTest { - val container = - AssetFile.getResourceFileAsFile( - context, - "example.asice", - ee.ria.DigiDoc.common.R.raw.example, - ) - - val signedContainer = SignedContainer.openOrCreate(context, container, listOf(container), true) - - viewModel.removePendingSignature(signedContainer) - - assertEquals(1, signedContainer.getSignatures(Main).size) - } - - @Test - fun idCardViewModel_resetSignStatus_success() = - runTest { - val resetSignStatusObserver: Observer = mock() - viewModel.signStatus.observeForever(resetSignStatusObserver) - - viewModel.resetSignStatus() - verify(resetSignStatusObserver, atLeastOnce()).onChanged(null) - - viewModel.signStatus.removeObserver(resetSignStatusObserver) - } - - @Test - fun idCardViewModel_resetDecryptStatus_success() = - runTest { - val resetDecryptStatusObserver: Observer = mock() - viewModel.decryptStatus.observeForever(resetDecryptStatusObserver) - - viewModel.resetDecryptStatus() - verify(resetDecryptStatusObserver, atLeastOnce()).onChanged(null) - - viewModel.decryptStatus.removeObserver(resetDecryptStatusObserver) - } - - @Test - fun idCardViewModel_resetErrorState_success() = - runTest { - val errorStateObserver: Observer?> = mock() - viewModel.errorState.observeForever(errorStateObserver) - - viewModel.resetErrorState() - verify(errorStateObserver, atLeastOnce()).onChanged(null) - - viewModel.errorState.removeObserver(errorStateObserver) - } - - @Test - fun idCardViewModel_resetDialogErrorState_success() = - runTest { - val dialogErrorObserver: Observer = mock() - viewModel.dialogError.observeForever(dialogErrorObserver) - - viewModel.resetDialogErrorState() - verify(dialogErrorObserver, atLeastOnce()).onChanged(null) - - viewModel.dialogError.removeObserver(dialogErrorObserver) - } - - @Test - fun idCardViewModel_resetSignedContainer_success() = - runTest { - val signedContainerObserver: Observer = mock() - viewModel.signedContainer.observeForever(signedContainerObserver) - - viewModel.resetSignedContainer() - verify(signedContainerObserver, atLeastOnce()).onChanged(null) - - viewModel.signedContainer.removeObserver(signedContainerObserver) - } - - @Test - fun idCardViewModel_resetCryptoContainer_success() = - runTest { - val cryptoContainerObserver: Observer = mock() - viewModel.cryptoContainer.observeForever(cryptoContainerObserver) - - viewModel.resetCryptoContainer() - verify(cryptoContainerObserver, atLeastOnce()).onChanged(null) - - viewModel.cryptoContainer.removeObserver(cryptoContainerObserver) - } - - @Test - fun idCardViewModel_resetPersonalUserData_success() = - runTest { - val userDataObserver: Observer = mock() - viewModel.userData.observeForever(userDataObserver) - - viewModel.resetPersonalUserData() - verify(userDataObserver, atLeastOnce()).onChanged(null) - - viewModel.userData.removeObserver(userDataObserver) - } - - @Test - fun idCardViewModel_resetPINErrorState_success() = - runTest { - val pinErrorStateObserver: Observer?> = mock() - viewModel.pinErrorState.observeForever(pinErrorStateObserver) - - viewModel.resetPINErrorState() - verify(pinErrorStateObserver, atLeastOnce()).onChanged(null) - - viewModel.pinErrorState.removeObserver(pinErrorStateObserver) - } - - @Test - fun idCardViewModel_resetShouldHandleError_success() = - runTest { - val emittedValues = mutableListOf() - val job = - launch { - viewModel.shouldHandleError - .take(1) - .toList(emittedValues) - } - - yield() - viewModel.resetShouldHandleError() - - job.join() - - assertEquals(listOf(false), emittedValues) - } - - @Test - fun idCardViewModel_setShouldHandleError_success() = - runTest { - val emittedValues = mutableListOf() - val job = - launch { - viewModel.shouldHandleError - .take(2) - .toList(emittedValues) - } - - yield() - viewModel.setShouldHandleError(true) - - job.join() - - assertEquals(listOf(false, true), emittedValues) - } -} diff --git a/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModelTest.kt b/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModelTest.kt index 18b666ed6..2cb073703 100644 --- a/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModelTest.kt +++ b/app/src/androidTest/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModelTest.kt @@ -32,33 +32,26 @@ import ee.ria.DigiDoc.MainActivity import ee.ria.DigiDoc.R import ee.ria.DigiDoc.common.Constant import ee.ria.DigiDoc.domain.model.IdCardData -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting import ee.ria.DigiDoc.domain.model.pin.PinChangeVariant import ee.ria.DigiDoc.domain.preferences.DataStore import ee.ria.DigiDoc.domain.service.IdCardService import ee.ria.DigiDoc.idcard.CodeType import ee.ria.DigiDoc.idcard.CodeVerificationException import ee.ria.DigiDoc.idcard.Token -import ee.ria.DigiDoc.smartcardreader.SmartCardReader import ee.ria.DigiDoc.smartcardreader.SmartCardReaderException -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderManager -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus import ee.ria.DigiDoc.smartcardreader.nfc.NfcSmartCardReader import ee.ria.DigiDoc.smartcardreader.nfc.NfcSmartCardReaderManager import ee.ria.DigiDoc.ui.component.myeid.pinandcertificate.PinChangeContent import ee.ria.DigiDoc.utilsLib.date.DateUtil -import io.reactivex.rxjava3.core.Observable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain -import org.bouncycastle.util.encoders.Hex import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse -import org.junit.Assert.assertNotNull import org.junit.Assert.assertNull import org.junit.Assert.assertTrue import org.junit.Before @@ -91,9 +84,6 @@ class SharedMyEidViewModelTest { @Mock lateinit var errorStateObserver: Observer?> - @Mock - lateinit var idCardStatusObserver: Observer - @Mock lateinit var idCardDataObserver: Observer @@ -103,15 +93,6 @@ class SharedMyEidViewModelTest { @Mock lateinit var isPinBlockedObserver: Observer - @Mock - lateinit var identificationMethodObserver: Observer - - @Mock - lateinit var mockSmartCardReaderManager: SmartCardReaderManager - - @Mock - lateinit var mockSmartCardReader: SmartCardReader - @Mock lateinit var mockNfcSmartCardReader: NfcSmartCardReader @@ -137,11 +118,8 @@ class SharedMyEidViewModelTest { dataStore = DataStore(context) nfcSmartCardReaderManager = NfcSmartCardReaderManager() - `when`(mockSmartCardReaderManager.status()).thenReturn(Observable.just(SmartCardReaderStatus.IDLE)) - viewModel = SharedMyEidViewModel( - mockSmartCardReaderManager, mockIdCardService, nfcSmartCardReaderManager, dataStore, @@ -150,8 +128,6 @@ class SharedMyEidViewModelTest { viewModel.idCardData.observeForever(idCardDataObserver) viewModel.pinChangingState.observeForever(pinChangingStateObserver) viewModel.isPinBlocked.observeForever(isPinBlockedObserver) - viewModel.identificationMethod.observeForever(identificationMethodObserver) - viewModel.idCardStatus.observeForever(idCardStatusObserver) viewModel.errorState.observeForever(errorStateObserver) } @@ -160,14 +136,6 @@ class SharedMyEidViewModelTest { Dispatchers.resetMain() } - @Test - fun sharedMyEidViewModel_setIdentificationMethod_success() { - val identificationMethod = MyEidIdentificationMethodSetting.ID_CARD - viewModel.setIdentificationMethod(identificationMethod) - - assertEquals(identificationMethod, viewModel.identificationMethod.value) - } - @Test fun sharedMyEidViewModel_setIdCardData_success() { val idCardData = createMockIdCardData() @@ -609,48 +577,6 @@ class SharedMyEidViewModelTest { assertEquals("", result) } - @Test - fun sharedMyEidViewModel_getToken_success() { - viewModel.setIdentificationMethod(MyEidIdentificationMethodSetting.ID_CARD) - - `when`(mockSmartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - `when`(mockSmartCardReader.atr()).thenReturn(Hex.decode("3bdb960080b1fe451f830012233f536549440f9000f1")) - - var resultToken: Token? = null - var resultError: Exception? = null - - activityRule.scenario.onActivity { activity -> - viewModel.getToken(activity) { token, error -> - resultToken = token - resultError = error - } - } - - assertNotNull(resultToken) - assertNull(resultError) - } - - @Test - fun sharedMyEidViewModel_getToken_returnsSmartCardReaderException() { - viewModel.setIdentificationMethod(MyEidIdentificationMethodSetting.ID_CARD) - - `when`(mockSmartCardReaderManager.connectedReader()).thenReturn(mockSmartCardReader) - `when`(mockSmartCardReader.atr()).thenReturn(byteArrayOf(49, 50, 51, 52)) - - var resultToken: Token? = null - var resultError: Exception? = null - - activityRule.scenario.onActivity { activity -> - viewModel.getToken(activity) { token, error -> - resultToken = token - resultError = error - } - } - - assertNull(resultToken) - assertNotNull(resultError) - } - @Test fun sharedMyEidViewModel_resetScreenContent_success() = runTest { @@ -686,13 +612,6 @@ class SharedMyEidViewModelTest { assertFalse(viewModel.isPinBlocked.value == true) } - @Test - fun sharedMyEidViewModel_resetIdentificationMethod_success() = - runTest { - viewModel.resetIdentificationMethod() - assertNull(viewModel.identificationMethod.value) - } - @Test fun sharedMyEidViewModel_resetValues_success() = runTest { @@ -700,11 +619,9 @@ class SharedMyEidViewModelTest { viewModel.resetIsPinBlocked() viewModel.resetScreenContent() viewModel.resetPinChangingState() - viewModel.resetIdentificationMethod() assertNull(viewModel.errorState.value) assertFalse(viewModel.isPinBlocked.value == true) assertNull(viewModel.pinScreenContent.value) assertFalse(viewModel.pinChangingState.value == true) - assertNull(viewModel.identificationMethod.value) } } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt index a98320d0a..81f356ac6 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt @@ -37,7 +37,6 @@ import ee.ria.DigiDoc.fragment.AccessibilityFragment import ee.ria.DigiDoc.fragment.AdvancedSettingsFragment import ee.ria.DigiDoc.fragment.CryptoFileOpeningFragment import ee.ria.DigiDoc.fragment.DecryptFragment -import ee.ria.DigiDoc.fragment.DecryptMethodChooserFragment import ee.ria.DigiDoc.fragment.DiagnosticsFragment import ee.ria.DigiDoc.fragment.EncryptFragment import ee.ria.DigiDoc.fragment.EncryptRecipientFragment @@ -49,7 +48,6 @@ import ee.ria.DigiDoc.fragment.InitFragment import ee.ria.DigiDoc.fragment.LanguageChooserFragment import ee.ria.DigiDoc.fragment.MyEidFragment import ee.ria.DigiDoc.fragment.MyEidIdentificationFragment -import ee.ria.DigiDoc.fragment.MyEidIdentificationMethodChooserFragment import ee.ria.DigiDoc.fragment.MyEidPinFragment import ee.ria.DigiDoc.fragment.ProxyServicesSettingsFragment import ee.ria.DigiDoc.fragment.RecentDocumentsFragment @@ -190,14 +188,6 @@ fun RIADigiDocAppScreen(externalFileUris: List) { sharedContainerViewModel = sharedContainerViewModel, ) } - composable(route = Route.DecryptMethodScreen.route) { - DecryptMethodChooserFragment( - modifier = Modifier.safeDrawingPadding(), - navController = navController, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedMenuViewModel = sharedMenuViewModel, - ) - } composable(route = Route.Accessibility.route) { AccessibilityFragment( modifier = Modifier.safeDrawingPadding(), @@ -343,14 +333,6 @@ fun RIADigiDocAppScreen(externalFileUris: List) { sharedMyEidViewModel = sharedMyEidViewModel, ) } - composable(route = Route.MyEidIdentificationMethodScreen.route) { - MyEidIdentificationMethodChooserFragment( - modifier = Modifier.safeDrawingPadding(), - navController = navController, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedMenuViewModel = sharedMenuViewModel, - ) - } composable(route = Route.ContainerNotificationsScreen.route) { ContainerNotificationsFragment( modifier = Modifier.safeDrawingPadding(), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/crypto/DecryptMethodSetting.kt b/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/crypto/DecryptMethodSetting.kt deleted file mode 100644 index 7fa684c65..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/crypto/DecryptMethodSetting.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName") - -package ee.ria.DigiDoc.domain.model.crypto - -import androidx.annotation.StringRes -import ee.ria.DigiDoc.R - -enum class DecryptMethodSetting( - val methodName: String, - @param:StringRes val label: Int, -) { - NFC("NFC", R.string.signature_update_signature_add_method_nfc), - ID_CARD("IDCard", R.string.signature_update_signature_add_method_id_card), - ; - - companion object { - fun fromMethod(mode: String): DecryptMethodSetting = entries.find { it.methodName == mode } ?: NFC - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/methods/SigningMethod.kt b/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/methods/SigningMethod.kt index 0714fcbf7..715cc35da 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/methods/SigningMethod.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/methods/SigningMethod.kt @@ -29,7 +29,6 @@ enum class SigningMethod( @param:StringRes val label: Int, ) { NFC("NFC", R.string.signature_update_signature_add_method_nfc), - ID_CARD("IDCard", R.string.signature_update_signature_add_method_id_card), MOBILE_ID("MobileId", R.string.signature_update_signature_add_method_mobile_id), SMART_ID("SmartId", R.string.signature_update_signature_add_method_smart_id), } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/myeid/MyEidIdentificationMethodSetting.kt b/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/myeid/MyEidIdentificationMethodSetting.kt deleted file mode 100644 index 29bfc23c3..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/domain/model/myeid/MyEidIdentificationMethodSetting.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName") - -package ee.ria.DigiDoc.domain.model.myeid - -import androidx.annotation.StringRes -import ee.ria.DigiDoc.R - -enum class MyEidIdentificationMethodSetting( - val methodName: String, - @param:StringRes val label: Int, -) { - NFC("NFC", R.string.signature_update_signature_add_method_nfc), - ID_CARD("IDCard", R.string.signature_update_signature_add_method_id_card), - ; - - companion object { - fun fromMethod(mode: String): MyEidIdentificationMethodSetting = entries.find { it.methodName == mode } ?: NFC - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/domain/preferences/DataStore.kt b/app/src/main/kotlin/ee/ria/DigiDoc/domain/preferences/DataStore.kt index ca29ff3a4..f9b142dc7 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/domain/preferences/DataStore.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/domain/preferences/DataStore.kt @@ -27,16 +27,12 @@ import android.content.res.Resources import androidx.core.content.edit import androidx.preference.PreferenceManager import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.common.Constant.Crypto.DECRYPT_METHOD_SETTING import ee.ria.DigiDoc.common.Constant.Defaults.DEFAULT_UUID_VALUE import ee.ria.DigiDoc.common.Constant.IS_CRASH_SENDING_ALWAYS_ENABLED import ee.ria.DigiDoc.common.Constant.KEY_LOCALE -import ee.ria.DigiDoc.common.Constant.MyEID.IDENTIFICATION_METHOD_SETTING import ee.ria.DigiDoc.common.Constant.Theme.THEME_SETTING import ee.ria.DigiDoc.common.preferences.EncryptedPreferences -import ee.ria.DigiDoc.domain.model.crypto.DecryptMethodSetting import ee.ria.DigiDoc.domain.model.methods.SigningMethod -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting import ee.ria.DigiDoc.domain.model.settings.CDOCSetting import ee.ria.DigiDoc.domain.model.settings.TSASetting import ee.ria.DigiDoc.domain.model.settings.UUIDSetting @@ -74,7 +70,6 @@ class DataStore arrayOf( SigningMethod.MOBILE_ID.methodName, SigningMethod.SMART_ID.methodName, - SigningMethod.ID_CARD.methodName, SigningMethod.NFC.methodName, ) if (!listOf(*signatureAddMethods).contains(signatureAddMethod)) { @@ -752,26 +747,6 @@ class DataStore preferences.edit { putString(THEME_SETTING, themeSetting.mode) } } - fun getDecryptMethodSetting(): DecryptMethodSetting = - DecryptMethodSetting.fromMethod( - preferences.getString(DECRYPT_METHOD_SETTING, DecryptMethodSetting.NFC.methodName) - ?: DecryptMethodSetting.NFC.methodName, - ) - - fun setDecryptMethodSetting(decryptMethodSetting: DecryptMethodSetting) { - preferences.edit { putString(DECRYPT_METHOD_SETTING, decryptMethodSetting.methodName) } - } - - fun getIdentificationMethodSetting(): MyEidIdentificationMethodSetting = - MyEidIdentificationMethodSetting.fromMethod( - preferences.getString(IDENTIFICATION_METHOD_SETTING, MyEidIdentificationMethodSetting.NFC.methodName) - ?: MyEidIdentificationMethodSetting.NFC.methodName, - ) - - fun setIdentificationMethodSetting(myEidIdentificationMethodSetting: MyEidIdentificationMethodSetting) { - preferences.edit { putString(IDENTIFICATION_METHOD_SETTING, myEidIdentificationMethodSetting.methodName) } - } - private fun getEncryptedPreferences(context: Context): SharedPreferences? = try { EncryptedPreferences.getEncryptedPreferences(context) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/DecryptMethodChooserFragment.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/DecryptMethodChooserFragment.kt deleted file mode 100644 index 0fd4de9b0..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/DecryptMethodChooserFragment.kt +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.fragment - -import android.content.res.Configuration -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.runtime.Composable -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.semantics.testTagsAsResourceId -import androidx.compose.ui.tooling.preview.Preview -import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.navigation.NavHostController -import androidx.navigation.compose.rememberNavController -import ee.ria.DigiDoc.fragment.screen.DecryptMethodChooserScreen -import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel -import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel - -@OptIn(ExperimentalComposeUiApi::class) -@Composable -fun DecryptMethodChooserFragment( - modifier: Modifier = Modifier, - navController: NavHostController, - sharedSettingsViewModel: SharedSettingsViewModel, - sharedMenuViewModel: SharedMenuViewModel, -) { - Surface( - modifier = - modifier - .fillMaxSize() - .background(MaterialTheme.colorScheme.background) - .semantics { - testTagsAsResourceId = true - }.testTag("decryptMethodChooserFragment"), - color = MaterialTheme.colorScheme.background, - ) { - DecryptMethodChooserScreen( - modifier = modifier, - navController = navController, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedMenuViewModel = sharedMenuViewModel, - ) - } -} - -@Preview(showBackground = true) -@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun DecryptMethodFragmentPreview() { - RIADigiDocTheme { - DecryptMethodChooserFragment( - navController = rememberNavController(), - sharedSettingsViewModel = hiltViewModel(), - sharedMenuViewModel = hiltViewModel(), - ) - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/MyEidIdentificationMethodChooserFragment.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/MyEidIdentificationMethodChooserFragment.kt deleted file mode 100644 index efdda93f4..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/MyEidIdentificationMethodChooserFragment.kt +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.fragment - -import android.content.res.Configuration -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.runtime.Composable -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.semantics.testTagsAsResourceId -import androidx.compose.ui.tooling.preview.Preview -import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.navigation.NavHostController -import androidx.navigation.compose.rememberNavController -import ee.ria.DigiDoc.fragment.screen.MyEidIdentificationMethodChooserScreen -import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel -import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel - -@OptIn(ExperimentalComposeUiApi::class) -@Composable -fun MyEidIdentificationMethodChooserFragment( - modifier: Modifier = Modifier, - navController: NavHostController, - sharedSettingsViewModel: SharedSettingsViewModel, - sharedMenuViewModel: SharedMenuViewModel, -) { - Surface( - modifier = - modifier - .fillMaxSize() - .background(MaterialTheme.colorScheme.background) - .semantics { - testTagsAsResourceId = true - }.testTag("identificationMethodChooserFragment"), - color = MaterialTheme.colorScheme.background, - ) { - MyEidIdentificationMethodChooserScreen( - modifier = modifier, - navController = navController, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedMenuViewModel = sharedMenuViewModel, - ) - } -} - -@Preview(showBackground = true) -@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun MyEidIdentificationMethodFragmentPreview() { - RIADigiDocTheme { - MyEidIdentificationMethodChooserFragment( - navController = rememberNavController(), - sharedSettingsViewModel = hiltViewModel(), - sharedMenuViewModel = hiltViewModel(), - ) - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptMethodChooserScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptMethodChooserScreen.kt deleted file mode 100644 index 718110143..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptMethodChooserScreen.kt +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.fragment.screen - -import android.content.res.Configuration -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.RadioButton -import androidx.compose.material3.Scaffold -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.semantics.contentDescription -import androidx.compose.ui.semantics.heading -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.semantics.testTagsAsResourceId -import androidx.compose.ui.tooling.preview.Preview -import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.navigation.NavHostController -import androidx.navigation.compose.rememberNavController -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.domain.model.crypto.DecryptMethodSetting -import ee.ria.DigiDoc.ui.component.crypto.DecryptMethodChoiceButtonItem -import ee.ria.DigiDoc.ui.component.shared.TopBar -import ee.ria.DigiDoc.ui.theme.Dimensions.MSPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding -import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.utils.extensions.notAccessible -import ee.ria.DigiDoc.utils.snackbar.SnackBarManager -import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel -import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel -import kotlinx.coroutines.launch - -@OptIn(ExperimentalComposeUiApi::class) -@Composable -fun DecryptMethodChooserScreen( - modifier: Modifier = Modifier, - navController: NavHostController, - sharedMenuViewModel: SharedMenuViewModel, - sharedSettingsViewModel: SharedSettingsViewModel, -) { - val snackBarHostState = remember { SnackbarHostState() } - val snackBarScope = rememberCoroutineScope() - - val messages by SnackBarManager.messages.collectAsState(emptyList()) - - val currentDecryptMethod = sharedSettingsViewModel.dataStore.getDecryptMethodSetting() - var selectedOption by remember { - mutableStateOf( - DecryptMethodSetting.entries.find { it.methodName == currentDecryptMethod.methodName }, - ) - } - - val identificationMethodText = stringResource(id = R.string.crypto_decrypt_method) - val identificationMethodSelectedText = stringResource(id = R.string.crypto_decrypt_method_selected) - - LaunchedEffect(messages) { - messages.forEach { message -> - snackBarScope.launch { - snackBarHostState.showSnackbar(message) - } - SnackBarManager.removeMessage(message) - } - } - - Scaffold( - snackbarHost = { - SnackbarHost( - modifier = modifier.padding(vertical = SPadding), - hostState = snackBarHostState, - ) - }, - topBar = { - TopBar( - modifier = modifier, - sharedMenuViewModel = sharedMenuViewModel, - title = null, - onLeftButtonClick = { - navController.navigateUp() - }, - ) - }, - ) { paddingValues -> - Column( - modifier = - modifier - .fillMaxSize() - .padding(paddingValues) - .padding(SPadding) - .verticalScroll(rememberScrollState()), - verticalArrangement = Arrangement.spacedBy(MSPadding), - ) { - Text( - modifier = - modifier - .padding(XSPadding) - .padding(bottom = SPadding) - .semantics { - heading() - }, - text = stringResource(R.string.crypto_decrypt_method_title), - color = MaterialTheme.colorScheme.onBackground, - style = MaterialTheme.typography.headlineMedium, - ) - - DecryptMethodChoiceButtonItem().radioItems().forEachIndexed { _, option -> - Row( - modifier = - modifier - .fillMaxWidth() - .padding(start = XSPadding) - .clickable { selectedOption = option.setting }, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = stringResource(id = option.label), - modifier = - modifier - .weight(1f) - .notAccessible(), - ) - RadioButton( - modifier = - modifier - .semantics { - testTagsAsResourceId = true - this.contentDescription = - if (option.setting == selectedOption) { - "${option.contentDescription} $identificationMethodSelectedText" - } else { - "$identificationMethodText ${option.contentDescription}" - } - }.testTag(option.testTag), - selected = selectedOption == option.setting, - onClick = { selectedOption = option.setting }, - ) - } - HorizontalDivider() - } - - Button( - onClick = { - sharedSettingsViewModel.dataStore.setDecryptMethodSetting( - selectedOption ?: DecryptMethodSetting.NFC, - ) - navController.navigateUp() - }, - modifier = - modifier - .fillMaxWidth() - .padding(vertical = MSPadding), - colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.primary), - ) { - Text( - text = stringResource(R.string.signature_update_method_save_button), - color = MaterialTheme.colorScheme.surface, - ) - } - } - } -} - -@Preview(showBackground = true) -@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun DecryptMethodChooserScreenPreview() { - RIADigiDocTheme { - DecryptMethodChooserScreen( - navController = rememberNavController(), - sharedMenuViewModel = hiltViewModel(), - sharedSettingsViewModel = hiltViewModel(), - ) - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptScreen.kt index 2f12b3365..a46a5ae65 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DecryptScreen.kt @@ -24,24 +24,18 @@ package ee.ria.DigiDoc.fragment.screen import android.app.Activity import android.content.res.Configuration import androidx.activity.compose.LocalActivity -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.focusable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost @@ -51,7 +45,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -59,11 +52,8 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource -import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics @@ -74,19 +64,15 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import ee.ria.DigiDoc.R import ee.ria.DigiDoc.domain.model.IdentityAction -import ee.ria.DigiDoc.domain.model.crypto.DecryptMethodSetting import ee.ria.DigiDoc.ui.component.menu.SettingsMenuBottomSheet import ee.ria.DigiDoc.ui.component.settings.SettingsSwitchItem import ee.ria.DigiDoc.ui.component.shared.InvisibleElement import ee.ria.DigiDoc.ui.component.shared.TopBar -import ee.ria.DigiDoc.ui.component.signing.IdCardView import ee.ria.DigiDoc.ui.component.signing.NFCView import ee.ria.DigiDoc.ui.theme.Dimensions.MSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.utils.Route import ee.ria.DigiDoc.utils.extensions.notAccessible import ee.ria.DigiDoc.utils.snackbar.SnackBarManager import ee.ria.DigiDoc.viewmodel.shared.SharedContainerViewModel @@ -105,29 +91,20 @@ fun DecryptScreen( val context = LocalActivity.current as Activity val isSettingsMenuBottomSheetVisible = rememberSaveable { mutableStateOf(false) } var rememberMe by rememberSaveable { mutableStateOf(true) } - var isIdCardProcessStarted by rememberSaveable { mutableStateOf(false) } var isDecrypting by rememberSaveable { mutableStateOf(false) } - val chosenMethod by remember { - mutableStateOf( - DecryptMethodSetting.entries.find { - it.methodName == sharedSettingsViewModel.dataStore.getDecryptMethodSetting().methodName - } ?: DecryptMethodSetting.NFC, - ) - } - val chosenMethodName by remember { mutableIntStateOf(chosenMethod.label) } var isValidToDecrypt by remember { mutableStateOf(false) } var decryptAction by remember { mutableStateOf<() -> Unit>({}) } var cancelDecryptAction by remember { mutableStateOf<() -> Unit>({}) } + var nfcSupported by remember { mutableStateOf(false) } val snackBarHostState = remember { SnackbarHostState() } val snackBarScope = rememberCoroutineScope() val messages by SnackBarManager.messages.collectAsState(emptyList()) - val chosenMethodNameText = stringResource(chosenMethodName) val identificationMethodText = stringResource(R.string.crypto_decrypt_method) + val chosenMethodNameText = stringResource(R.string.signature_update_signature_add_method_nfc) val rememberMeText = stringResource(R.string.signature_update_remember_me) - var nfcSupported by remember { mutableStateOf(false) } LaunchedEffect(messages) { messages.forEach { message -> @@ -195,13 +172,14 @@ fun DecryptScreen( style = MaterialTheme.typography.headlineMedium, ) - if (!isDecrypting && !isIdCardProcessStarted) { + if (!isDecrypting) { Column( modifier = modifier .fillMaxWidth() .padding(vertical = XSPadding), horizontalAlignment = Alignment.Start, + verticalArrangement = Arrangement.spacedBy(XSPadding), ) { Text( text = identificationMethodText, @@ -215,146 +193,69 @@ fun DecryptScreen( style = MaterialTheme.typography.labelLarge, ) - Row( + Text( modifier = modifier - .fillMaxWidth() - .background(Color.Transparent) - .clickable { - navController.navigate( - Route.DecryptMethodScreen.route, - ) + .semantics { + contentDescription = "$identificationMethodText $chosenMethodNameText" }, - horizontalArrangement = Arrangement.Start, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - modifier = - modifier - .semantics { - contentDescription = "$identificationMethodText $chosenMethodNameText" - }, - text = chosenMethodNameText, - color = MaterialTheme.colorScheme.onSurface, - textAlign = TextAlign.Start, - ) - - Spacer(modifier = modifier.weight(1f)) - Icon( - imageVector = ImageVector.vectorResource(R.drawable.ic_m3_arrow_right_48dp_wght400), - contentDescription = null, - modifier = - modifier - .padding(MSPadding) - .size(iconSizeXXS) - .wrapContentHeight(align = Alignment.CenterVertically) - .notAccessible(), - ) - } + text = chosenMethodNameText, + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Start, + ) } } - when (chosenMethod) { - DecryptMethodSetting.ID_CARD -> - IdCardView( - modifier = modifier, - activity = context, - onError = { - isDecrypting = false - isIdCardProcessStarted = false - cancelDecryptAction() - navController.navigateUp() - }, - onSuccess = { - isDecrypting = false - navController.navigateUp() - }, - isStarted = { started -> - if (started) { - isIdCardProcessStarted = true - } - }, - isSigning = false, - isDecrypting = isDecrypting, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedContainerViewModel = sharedContainerViewModel, - isValidToDecrypt = { isValid -> - isValidToDecrypt = isValid - }, - decryptAction = { action -> - decryptAction = { - isDecrypting = true - action() - } - }, - cancelAction = { action -> - isDecrypting = false - cancelDecryptAction = action - }, - isAddingRoleAndAddress = false, - isAuthenticated = { _, _ -> {} }, - identityAction = IdentityAction.DECRYPT, - ) + NFCView( + modifier = modifier, + activity = context, + onError = { + isDecrypting = false + cancelDecryptAction() + }, + onSuccess = { + isDecrypting = false + navController.navigateUp() + }, + isDecrypting = isDecrypting, + rememberMe = rememberMe, + sharedSettingsViewModel = sharedSettingsViewModel, + sharedContainerViewModel = sharedContainerViewModel, + isSupported = { supported -> + nfcSupported = supported + }, + isValidToDecrypt = { isValid -> + isValidToDecrypt = isValid + }, + decryptAction = { action -> + decryptAction = action + }, + cancelDecryptAction = { action -> + cancelDecryptAction = action + }, + identityAction = IdentityAction.DECRYPT, + ) - DecryptMethodSetting.NFC -> - NFCView( - modifier = modifier, - activity = context, - onError = { - isDecrypting = false - cancelDecryptAction() - }, - onSuccess = { - isDecrypting = false - navController.navigateUp() - }, - isSigning = false, - isDecrypting = isDecrypting, - rememberMe = rememberMe, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedContainerViewModel = sharedContainerViewModel, - isSupported = { supported -> - nfcSupported = supported - }, - isValidToDecrypt = { isValid -> - isValidToDecrypt = isValid - }, - decryptAction = { action -> - decryptAction = action - }, - cancelDecryptAction = { action -> - cancelDecryptAction = action - }, - isAddingRoleAndAddress = false, - identityAction = IdentityAction.DECRYPT, - isAuthenticating = false, - isAuthenticated = { _, _ -> {} }, - isValidToAuthenticate = {}, - ) - } + if (!isDecrypting && nfcSupported) { + SettingsSwitchItem( + modifier = modifier, + checked = rememberMe, + onCheckedChange = { + rememberMe = it + }, + title = rememberMeText, + contentDescription = rememberMeText, + testTag = "myEidRememberMeSwitch", + ) - if (!isDecrypting && (chosenMethod != DecryptMethodSetting.NFC || nfcSupported)) { - if (chosenMethod != DecryptMethodSetting.ID_CARD) { - SettingsSwitchItem( - modifier = modifier, - checked = rememberMe, - onCheckedChange = { - rememberMe = it - }, - title = rememberMeText, - contentDescription = rememberMeText, - testTag = "myEidRememberMeSwitch", + if (rememberMe) { + Text( + text = stringResource(R.string.signature_update_remember_me_message), ) - - if (rememberMe) { - Text( - text = stringResource(R.string.signature_update_remember_me_message), - ) - } - - Spacer(modifier = modifier.height(SPadding)) } + Spacer(modifier = modifier.height(SPadding)) + Button( onClick = { isDecrypting = true diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationMethodChooserScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationMethodChooserScreen.kt deleted file mode 100644 index 6f850f2fa..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationMethodChooserScreen.kt +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.fragment.screen - -import android.content.res.Configuration -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.RadioButton -import androidx.compose.material3.Scaffold -import androidx.compose.material3.SnackbarHost -import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.semantics.contentDescription -import androidx.compose.ui.semantics.heading -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.semantics.testTagsAsResourceId -import androidx.compose.ui.tooling.preview.Preview -import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.navigation.NavHostController -import androidx.navigation.compose.rememberNavController -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting -import ee.ria.DigiDoc.ui.component.myeid.MyEidIdentificationMethodChoiceButtonItem -import ee.ria.DigiDoc.ui.component.shared.TopBar -import ee.ria.DigiDoc.ui.theme.Dimensions.MSPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding -import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.utils.extensions.notAccessible -import ee.ria.DigiDoc.utils.snackbar.SnackBarManager -import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel -import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel -import kotlinx.coroutines.launch - -@OptIn(ExperimentalComposeUiApi::class) -@Composable -fun MyEidIdentificationMethodChooserScreen( - modifier: Modifier = Modifier, - navController: NavHostController, - sharedMenuViewModel: SharedMenuViewModel, - sharedSettingsViewModel: SharedSettingsViewModel, -) { - val snackBarHostState = remember { SnackbarHostState() } - val snackBarScope = rememberCoroutineScope() - - val messages by SnackBarManager.messages.collectAsState(emptyList()) - - val currentIdentificationMethod = sharedSettingsViewModel.dataStore.getIdentificationMethodSetting() - var selectedOption by remember { - mutableStateOf( - MyEidIdentificationMethodSetting.entries.find { it.methodName == currentIdentificationMethod.methodName }, - ) - } - - val identificationMethodText = stringResource(id = R.string.myeid_identification_method) - val identificationMethodSelectedText = stringResource(id = R.string.myeid_identification_method_selected) - - LaunchedEffect(messages) { - messages.forEach { message -> - snackBarScope.launch { - snackBarHostState.showSnackbar(message) - } - SnackBarManager.removeMessage(message) - } - } - - Scaffold( - snackbarHost = { - SnackbarHost( - modifier = modifier.padding(vertical = SPadding), - hostState = snackBarHostState, - ) - }, - topBar = { - TopBar( - modifier = modifier, - sharedMenuViewModel = sharedMenuViewModel, - title = null, - onLeftButtonClick = { - navController.navigateUp() - }, - ) - }, - ) { paddingValues -> - Column( - modifier = - modifier - .fillMaxSize() - .padding(paddingValues) - .padding(SPadding) - .verticalScroll(rememberScrollState()), - verticalArrangement = Arrangement.spacedBy(MSPadding), - ) { - Text( - modifier = - modifier - .padding(XSPadding) - .padding(bottom = SPadding) - .semantics { - heading() - }, - text = stringResource(R.string.myeid_identification_method_title), - color = MaterialTheme.colorScheme.onBackground, - style = MaterialTheme.typography.headlineMedium, - ) - - MyEidIdentificationMethodChoiceButtonItem().radioItems().forEachIndexed { _, option -> - Row( - modifier = - modifier - .fillMaxWidth() - .padding(start = XSPadding) - .clickable { selectedOption = option.setting }, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = stringResource(id = option.label), - modifier = - modifier - .weight(1f) - .notAccessible(), - ) - RadioButton( - modifier = - modifier - .semantics { - testTagsAsResourceId = true - this.contentDescription = - if (option.setting == selectedOption) { - "${option.contentDescription} $identificationMethodSelectedText" - } else { - "$identificationMethodText ${option.contentDescription}" - } - }.testTag(option.testTag), - selected = selectedOption == option.setting, - onClick = { selectedOption = option.setting }, - ) - } - HorizontalDivider() - } - - Button( - onClick = { - sharedSettingsViewModel.dataStore.setIdentificationMethodSetting( - selectedOption ?: MyEidIdentificationMethodSetting.NFC, - ) - navController.navigateUp() - }, - modifier = - modifier - .fillMaxWidth() - .padding(vertical = MSPadding), - colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.primary), - ) { - Text( - text = stringResource(R.string.signature_update_method_save_button), - color = MaterialTheme.colorScheme.surface, - ) - } - } - } -} - -@Preview(showBackground = true) -@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun MyEidIdentificationMethodChooserScreenPreview() { - RIADigiDocTheme { - MyEidIdentificationMethodChooserScreen( - navController = rememberNavController(), - sharedMenuViewModel = hiltViewModel(), - sharedSettingsViewModel = hiltViewModel(), - ) - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationScreen.kt index c4f133c16..fdf121202 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/MyEidIdentificationScreen.kt @@ -24,24 +24,18 @@ package ee.ria.DigiDoc.fragment.screen import android.app.Activity import android.content.res.Configuration import androidx.activity.compose.LocalActivity -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.focusable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost @@ -51,7 +45,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope @@ -61,11 +54,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource -import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics @@ -77,20 +67,16 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import ee.ria.DigiDoc.R import ee.ria.DigiDoc.domain.model.IdentityAction -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting import ee.ria.DigiDoc.ui.component.menu.SettingsMenuBottomSheet import ee.ria.DigiDoc.ui.component.settings.SettingsSwitchItem import ee.ria.DigiDoc.ui.component.shared.InvisibleElement import ee.ria.DigiDoc.ui.component.shared.TopBar -import ee.ria.DigiDoc.ui.component.signing.IdCardView import ee.ria.DigiDoc.ui.component.signing.NFCView import ee.ria.DigiDoc.ui.theme.Dimensions.MSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.utils.Route -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled import ee.ria.DigiDoc.utils.extensions.notAccessible import ee.ria.DigiDoc.utils.snackbar.SnackBarManager import ee.ria.DigiDoc.viewmodel.shared.SharedContainerViewModel @@ -112,28 +98,19 @@ fun MyEidIdentificationScreen( val context = LocalActivity.current as Activity val isSettingsMenuBottomSheetVisible = rememberSaveable { mutableStateOf(false) } var rememberMe by rememberSaveable { mutableStateOf(true) } - var isIdCardProcessStarted by rememberSaveable { mutableStateOf(false) } var isAuthenticating by rememberSaveable { mutableStateOf(false) } - val chosenMethod by remember { - mutableStateOf( - MyEidIdentificationMethodSetting.entries.find { - it.methodName == sharedSettingsViewModel.dataStore.getIdentificationMethodSetting().methodName - } ?: MyEidIdentificationMethodSetting.NFC, - ) - } - val chosenMethodName by remember { mutableIntStateOf(chosenMethod.label) } var isValidToAuthenticate by remember { mutableStateOf(false) } var cancelAction by remember { mutableStateOf<() -> Unit>({}) } + var nfcSupported by remember { mutableStateOf(false) } val snackBarHostState = remember { SnackbarHostState() } val snackBarScope = rememberCoroutineScope() val messages by SnackBarManager.messages.collectAsState(emptyList()) - val chosenMethodNameText = stringResource(chosenMethodName) val identificationMethodText = stringResource(R.string.myeid_identification_method) + val chosenMethodNameText = stringResource(R.string.signature_update_signature_add_method_nfc) val rememberMeText = stringResource(R.string.signature_update_remember_me) - var nfcSupported by remember { mutableStateOf(false) } LaunchedEffect(messages) { messages.forEach { message -> @@ -144,10 +121,6 @@ fun MyEidIdentificationScreen( } } - LaunchedEffect(chosenMethod) { - sharedMyEidViewModel.setIdentificationMethod(chosenMethod) - } - Scaffold( snackbarHost = { SnackbarHost( @@ -211,14 +184,9 @@ fun MyEidIdentificationScreen( modifier .fillMaxWidth() .padding(vertical = XSPadding) - .alpha( - if (!isAuthenticating && !isIdCardProcessStarted) { - 1f - } else { - 0.001f - }, - ), + .alpha(if (!isAuthenticating) 1f else 0.001f), horizontalAlignment = Alignment.Start, + verticalArrangement = Arrangement.spacedBy(XSPadding), ) { Text( text = identificationMethodText, @@ -232,144 +200,57 @@ fun MyEidIdentificationScreen( style = MaterialTheme.typography.labelLarge, ) - Row( + Text( modifier = modifier - .fillMaxWidth() - .background(Color.Transparent) - .clickable( - enabled = !isAuthenticating && !isIdCardProcessStarted, - ) { - navController.navigate( - Route.MyEidIdentificationMethodScreen.route, - ) - }.then( - if (isAuthenticating || isIdCardProcessStarted && isTalkBackEnabled(context)) { - modifier.notAccessible() - } else { - modifier - }, - ), - horizontalArrangement = Arrangement.Start, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - modifier = - modifier - .semantics { - contentDescription = "$identificationMethodText $chosenMethodNameText" - testTagsAsResourceId = true - }.testTag("myEidChosenMethodNameTitle"), - text = chosenMethodNameText, - color = MaterialTheme.colorScheme.onSurface, - textAlign = TextAlign.Start, - ) - - Spacer(modifier = modifier.weight(1f)) - Icon( - imageVector = ImageVector.vectorResource(R.drawable.ic_m3_arrow_right_48dp_wght400), - contentDescription = null, - modifier = - modifier - .padding(MSPadding) - .size(iconSizeXXS) - .wrapContentHeight(align = Alignment.CenterVertically) - .notAccessible(), - ) - } + .semantics { + contentDescription = "$identificationMethodText $chosenMethodNameText" + testTagsAsResourceId = true + }.testTag("myEidChosenMethodNameTitle"), + text = chosenMethodNameText, + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Start, + ) } - when (chosenMethod) { - MyEidIdentificationMethodSetting.ID_CARD -> - IdCardView( - modifier = modifier, - activity = context, - onError = { - isAuthenticating = false - isIdCardProcessStarted = false - cancelAction() - }, - onSuccess = { - isAuthenticating = false - navController.navigateUp() - }, - isStarted = { started -> - if (started) { - isIdCardProcessStarted = true - } - }, - isSigning = false, - isAuthenticating = true, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedContainerViewModel = sharedContainerViewModel, - isValidToSign = { isValid -> - isValidToAuthenticate = isValid - }, - signAction = {}, - cancelAction = { action -> - isAuthenticating = false - cancelAction = action - }, - isAddingRoleAndAddress = false, - isAuthenticated = { authenticated, personalData -> - if (authenticated) { - sharedMyEidViewModel.setIdCardData(personalData) - - navController.navigate( - Route.MyEidScreen.route, - ) - } - }, - identityAction = IdentityAction.AUTH, - ) - - MyEidIdentificationMethodSetting.NFC -> - NFCView( - modifier = modifier, - activity = context, - onError = { - isAuthenticating = false - cancelAction() - }, - onSuccess = { - isAuthenticating = false - navController.navigateUp() - }, - isSigning = false, - isAuthenticating = isAuthenticating, - rememberMe = rememberMe, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedContainerViewModel = sharedContainerViewModel, - showPinField = false, - isSupported = { supported -> - nfcSupported = supported - }, - isValidToSign = {}, - signAction = {}, - cancelAction = { action -> - cancelAction = action - }, - isAddingRoleAndAddress = false, - isAuthenticated = { authenticated, idCardData -> - if (authenticated) { - sharedMyEidViewModel.setIdCardData(idCardData) + NFCView( + modifier = modifier, + activity = context, + onError = { + isAuthenticating = false + cancelAction() + }, + onSuccess = { + isAuthenticating = false + navController.navigateUp() + }, + isAuthenticating = isAuthenticating, + rememberMe = rememberMe, + sharedSettingsViewModel = sharedSettingsViewModel, + sharedContainerViewModel = sharedContainerViewModel, + showPinField = false, + isSupported = { supported -> + nfcSupported = supported + }, + cancelAction = { action -> + cancelAction = action + }, + isAuthenticated = { authenticated, idCardData -> + if (authenticated) { + sharedMyEidViewModel.setIdCardData(idCardData) - navController.navigate( - Route.MyEidScreen.route, - ) - } - }, - isValidToAuthenticate = { isValid -> - isValidToAuthenticate = isValid - }, - identityAction = IdentityAction.AUTH, - ) - } + navController.navigate( + Route.MyEidScreen.route, + ) + } + }, + isValidToAuthenticate = { isValid -> + isValidToAuthenticate = isValid + }, + identityAction = IdentityAction.AUTH, + ) - if (!isAuthenticating && - chosenMethod != MyEidIdentificationMethodSetting.ID_CARD && - (chosenMethod != MyEidIdentificationMethodSetting.NFC || nfcSupported) - ) { + if (!isAuthenticating && nfcSupported) { SettingsSwitchItem( modifier = modifier, checked = rememberMe, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/SignatureInputScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/SignatureInputScreen.kt index 2173c468a..41eaeb286 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/SignatureInputScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/SignatureInputScreen.kt @@ -84,7 +84,6 @@ import ee.ria.DigiDoc.ui.component.settings.SettingsSwitchItem import ee.ria.DigiDoc.ui.component.shared.InvisibleElement import ee.ria.DigiDoc.ui.component.shared.TopBar import ee.ria.DigiDoc.ui.component.shared.notificationPermissionRequester -import ee.ria.DigiDoc.ui.component.signing.IdCardView import ee.ria.DigiDoc.ui.component.signing.MobileIdView import ee.ria.DigiDoc.ui.component.signing.NFCView import ee.ria.DigiDoc.ui.component.signing.SmartIdView @@ -121,7 +120,6 @@ fun SignatureInputScreen( val isSettingsMenuBottomSheetVisible = rememberSaveable { mutableStateOf(false) } val getIsAskRoleAndAddressRequested = sharedSettingsViewModel.dataStore::getSettingsAskRoleAndAddress var rememberMe by rememberSaveable { mutableStateOf(true) } - var isIdCardProcessStarted by rememberSaveable { mutableStateOf(false) } var isSigning by rememberSaveable { mutableStateOf(false) } var isAddingRoleAndAddress by rememberSaveable { mutableStateOf(false) } val chosenMethod by remember { @@ -216,7 +214,7 @@ fun SignatureInputScreen( style = MaterialTheme.typography.headlineMedium, ) - if (!isSigning && !isIdCardProcessStarted && !isAddingRoleAndAddress) { + if (!isSigning && !isAddingRoleAndAddress) { Column( modifier = modifier @@ -341,48 +339,6 @@ fun SignatureInputScreen( }, ) - SigningMethod.ID_CARD -> - IdCardView( - modifier = modifier, - activity = context, - onError = { - isSigning = false - isAddingRoleAndAddress = false - cancelAction() - }, - onSuccess = { - isSigning = false - isAddingRoleAndAddress = false - navController.navigateUp() - }, - isStarted = { started -> - if (started) { - isIdCardProcessStarted = true - } - }, - isSigning = isSigning, - isAddingRoleAndAddress = isAddingRoleAndAddress, - isAuthenticating = false, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedContainerViewModel = sharedContainerViewModel, - isValidToSign = { isValid -> - isValidToSign = isValid - }, - signAction = { action -> - signAction = { - isSigning = true - action() - } - }, - cancelAction = { action -> - isSigning = false - isAddingRoleAndAddress = false - cancelAction = action - }, - isAuthenticated = { _, _ -> {} }, - identityAction = IdentityAction.SIGN, - ) - SigningMethod.NFC -> NFCView( modifier = modifier, @@ -423,7 +379,7 @@ fun SignatureInputScreen( } if (!isSigning && (chosenMethod != SigningMethod.NFC || nfcSupported)) { - if (chosenMethod != SigningMethod.ID_CARD && !isAddingRoleAndAddress) { + if (!isAddingRoleAndAddress) { SettingsSwitchItem( modifier = modifier, checked = rememberMe, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/DecryptMethodChoiceButtonItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/DecryptMethodChoiceButtonItem.kt deleted file mode 100644 index 4b81d52b9..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/DecryptMethodChoiceButtonItem.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.ui.component.crypto - -import androidx.annotation.StringRes -import androidx.compose.runtime.Composable -import androidx.compose.ui.res.stringResource -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.domain.model.crypto.DecryptMethodSetting - -data class DecryptMethodChoiceButtonItem( - @param:StringRes val label: Int = 0, - val setting: DecryptMethodSetting = DecryptMethodSetting.NFC, - val contentDescription: String = "", - val testTag: String = "", -) { - @Composable - fun radioItems(): List = - listOf( - DecryptMethodChoiceButtonItem( - label = R.string.signature_update_signature_add_method_nfc, - setting = DecryptMethodSetting.NFC, - contentDescription = - stringResource( - id = R.string.signature_update_signature_add_method_nfc_accessibility, - ).lowercase(), - testTag = "decryptMethodNFCSetting", - ), - DecryptMethodChoiceButtonItem( - label = R.string.signature_update_signature_add_method_id_card, - setting = DecryptMethodSetting.ID_CARD, - contentDescription = - stringResource( - id = R.string.signature_update_signature_add_method_id_card_accessibility, - ).lowercase(), - testTag = "decryptMethodIdCardSetting", - ), - ) -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidIdentificationMethodChoiceButtonItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidIdentificationMethodChoiceButtonItem.kt deleted file mode 100644 index 44bfb45fe..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidIdentificationMethodChoiceButtonItem.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.ui.component.myeid - -import androidx.annotation.StringRes -import androidx.compose.runtime.Composable -import androidx.compose.ui.res.stringResource -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting - -data class MyEidIdentificationMethodChoiceButtonItem( - @param:StringRes val label: Int = 0, - val setting: MyEidIdentificationMethodSetting = MyEidIdentificationMethodSetting.NFC, - val contentDescription: String = "", - val testTag: String = "", -) { - @Composable - fun radioItems(): List = - listOf( - MyEidIdentificationMethodChoiceButtonItem( - label = R.string.signature_update_signature_add_method_nfc, - setting = MyEidIdentificationMethodSetting.NFC, - contentDescription = - stringResource( - id = R.string.signature_update_signature_add_method_nfc_accessibility, - ).lowercase(), - testTag = "identificationMethodNFCSetting", - ), - MyEidIdentificationMethodChoiceButtonItem( - label = R.string.signature_update_signature_add_method_id_card, - setting = MyEidIdentificationMethodSetting.ID_CARD, - contentDescription = - stringResource( - id = R.string.signature_update_signature_add_method_id_card_accessibility, - ).lowercase(), - testTag = "identificationMethodIdCardSetting", - ), - ) -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt index 5f0510438..a4060d57b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/MyEidScreen.kt @@ -72,7 +72,6 @@ import ee.ria.DigiDoc.domain.model.pin.PinChangeVariant import ee.ria.DigiDoc.idcard.CardType import ee.ria.DigiDoc.idcard.CodeType import ee.ria.DigiDoc.idcard.DateOfBirthUtil -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus import ee.ria.DigiDoc.ui.component.menu.SettingsMenuBottomSheet import ee.ria.DigiDoc.ui.component.myeid.mydata.MyEidMyDataView import ee.ria.DigiDoc.ui.component.myeid.pinandcertificate.MyEidPinAndCertificateView @@ -109,8 +108,6 @@ fun MyEidScreen( val isSettingsMenuBottomSheetVisible = rememberSaveable { mutableStateOf(false) } - val idCardStatus by sharedMyEidViewModel.idCardStatus.asFlow().collectAsState(SmartCardReaderStatus.IDLE) - val idCardData by sharedMyEidViewModel.idCardData.asFlow().collectAsState(null) val isPin1Blocked = idCardData?.pin1RetryCount == 0 @@ -226,24 +223,6 @@ fun MyEidScreen( } } - LaunchedEffect(idCardStatus) { - idCardStatus?.let { status -> - if (idCardData?.personalData != null) { - when (status) { - SmartCardReaderStatus.CARD_DETECTED -> {} - else -> { - navController.navigate(Route.MyEidIdentificationScreen.route) { - popUpTo(Route.Home.route) { - inclusive = false - } - launchSingleTop = true - } - } - } - } - } - } - Scaffold( snackbarHost = { SnackbarHost( diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt index ba56162a0..fc9b84ace 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt @@ -81,11 +81,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavHostController import ee.ria.DigiDoc.R import ee.ria.DigiDoc.common.Constant -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting import ee.ria.DigiDoc.idcard.CodeType import ee.ria.DigiDoc.idcard.PaceTunnelException import ee.ria.DigiDoc.smartcardreader.ApduResponseException -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus import ee.ria.DigiDoc.ui.component.menu.SettingsMenuBottomSheet import ee.ria.DigiDoc.ui.component.shared.PrimaryOutlinedButton import ee.ria.DigiDoc.ui.component.shared.SecurePinTextField @@ -96,7 +94,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeM import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS -import ee.ria.DigiDoc.utils.Route import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent @@ -133,12 +130,8 @@ fun MyEidPinScreen( val isSettingsMenuBottomSheetVisible = rememberSaveable { mutableStateOf(false) } - val idCardStatus by sharedMyEidViewModel.idCardStatus.asFlow().collectAsState(SmartCardReaderStatus.IDLE) - val idCardData by sharedMyEidViewModel.idCardData.asFlow().collectAsState(null) - val identificationMethod by sharedMyEidViewModel.identificationMethod.asFlow().collectAsState(null) - val content by sharedMyEidViewModel.pinScreenContent.collectAsState() val currentPinState = remember { mutableStateOf(byteArrayOf()) } @@ -370,24 +363,6 @@ fun MyEidPinScreen( } } - LaunchedEffect(idCardStatus) { - idCardStatus?.let { status -> - if (idCardData?.personalData != null) { - when (status) { - SmartCardReaderStatus.CARD_DETECTED -> {} - else -> { - navController.navigate(Route.MyEidIdentificationScreen.route) { - popUpTo(Route.Home.route) { - inclusive = false - } - launchSingleTop = true - } - } - } - } - } - } - BackHandler { if (showNewRepeatPinField.value) { newPinRepeatedState.value = byteArrayOf() @@ -472,9 +447,7 @@ fun MyEidPinScreen( contentColor = MaterialTheme.colorScheme.surface, enabled = isNewRepeatedPinValid, ) { - if (identificationMethod == MyEidIdentificationMethodSetting.NFC) { - showNFCScreen.value = true - } + showNFCScreen.value = true scope.launch(IO) { if (activity == null) { diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/IdCardView.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/IdCardView.kt deleted file mode 100644 index 8282cbf71..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/IdCardView.kt +++ /dev/null @@ -1,850 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName", "FunctionName") - -package ee.ria.DigiDoc.ui.component.signing - -import android.app.Activity -import android.content.res.Configuration -import androidx.activity.compose.BackHandler -import androidx.activity.compose.LocalActivity -import androidx.compose.foundation.background -import androidx.compose.foundation.focusable -import androidx.compose.foundation.gestures.detectTapGestures -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.imePadding -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.BasicAlertDialog -import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.focus.FocusRequester -import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalFocusManager -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.semantics.LiveRegionMode -import androidx.compose.ui.semantics.contentDescription -import androidx.compose.ui.semantics.liveRegion -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.semantics.testTagsAsResourceId -import androidx.compose.ui.semantics.traversalIndex -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.zIndex -import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import androidx.lifecycle.asFlow -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.common.Constant.NFCConstants.PIN1_MIN_LENGTH -import ee.ria.DigiDoc.common.Constant.NFCConstants.PIN2_MIN_LENGTH -import ee.ria.DigiDoc.common.Constant.NFCConstants.PIN_MAX_LENGTH -import ee.ria.DigiDoc.domain.model.IdCardData -import ee.ria.DigiDoc.domain.model.IdentityAction -import ee.ria.DigiDoc.idcard.CodeType -import ee.ria.DigiDoc.libdigidoclib.domain.model.RoleData -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus -import ee.ria.DigiDoc.ui.component.shared.CancelAndOkButtonRow -import ee.ria.DigiDoc.ui.component.shared.HrefMessageDialog -import ee.ria.DigiDoc.ui.component.shared.InvisibleElement -import ee.ria.DigiDoc.ui.component.shared.RoleDataView -import ee.ria.DigiDoc.ui.component.shared.SecurePinTextField -import ee.ria.DigiDoc.ui.theme.Dimensions.LPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.MSPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding -import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXL -import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS -import ee.ria.DigiDoc.ui.theme.Dimensions.loadingBarSize -import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.ui.theme.buttonRoundCornerShape -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.formatNumbers -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled -import ee.ria.DigiDoc.utils.extensions.notAccessible -import ee.ria.DigiDoc.utils.pin.PinCodeUtil.shouldShowPINCodeError -import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage -import ee.ria.DigiDoc.utilsLib.container.NameUtil.formatName -import ee.ria.DigiDoc.viewmodel.IdCardViewModel -import ee.ria.DigiDoc.viewmodel.shared.SharedContainerViewModel -import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel -import kotlinx.coroutines.Dispatchers.IO -import kotlinx.coroutines.Dispatchers.Main -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.filterNotNull -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext - -@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) -@Composable -fun IdCardView( - activity: Activity, - modifier: Modifier = Modifier, - identityAction: IdentityAction, - isSigning: Boolean = false, - isDecrypting: Boolean = false, - isAuthenticating: Boolean = false, - isStarted: (Boolean) -> Unit = {}, - onError: () -> Unit = {}, - onSuccess: () -> Unit = {}, - isAddingRoleAndAddress: Boolean = false, - sharedContainerViewModel: SharedContainerViewModel, - sharedSettingsViewModel: SharedSettingsViewModel, - idCardViewModel: IdCardViewModel = hiltViewModel(), - isValidToSign: (Boolean) -> Unit = {}, - isAuthenticated: (Boolean, IdCardData) -> Unit, - isValidToDecrypt: (Boolean) -> Unit = {}, - signAction: (() -> Unit) -> Unit = {}, - decryptAction: (() -> Unit) -> Unit = {}, - cancelAction: (() -> Unit) -> Unit = {}, - cancelDecryptAction: (() -> Unit) -> Unit = {}, -) { - val context = LocalContext.current - val scope = rememberCoroutineScope() - - val loading by remember { mutableStateOf(true) } - - val idCardStatus by idCardViewModel.idCardStatus.asFlow().collectAsState(SmartCardReaderStatus.IDLE) - val idCardData by idCardViewModel.userData.asFlow().collectAsState(null) - val dialogError by idCardViewModel.dialogError.asFlow().collectAsState(null) - - val idCardStatusInitialMessage = stringResource(id = R.string.id_card_status_initial_message) - val idCardStatusMessage = remember { mutableStateOf(idCardStatusInitialMessage) } - val idCardStatusReaderDetectedMessage = stringResource(id = R.string.id_card_status_reader_detected_message) - val idCardStatusCardDetectedMessage = stringResource(id = R.string.id_card_status_card_detected_message) - val idCardStatusSigningMessage = - if (identityAction == IdentityAction.SIGN) { - stringResource(id = R.string.id_card_progress_message_signing) - } else if (identityAction == IdentityAction.DECRYPT) { - stringResource(id = R.string.id_card_progress_message_decrypt) - } else { - "" - } - val idCardStatusReadyToSignMessage = - if (identityAction == IdentityAction.SIGN) { - stringResource(R.string.id_card_sign_message) - } else if (identityAction == IdentityAction.DECRYPT) { - stringResource(R.string.id_card_decrypt_message) - } else { - "" - } - - val idCardStatusReadyToSign = idCardData?.personalData != null && !isSigning && !isAuthenticating && !isDecrypting - - val shouldHandleError by idCardViewModel.shouldHandleError.collectAsState() - val showErrorDialog = rememberSaveable { mutableStateOf(false) } - var isDataLoadingStarted by rememberSaveable { mutableStateOf(false) } - var showLoadingIndicator by rememberSaveable { mutableStateOf(false) } - - val signedContainer by sharedContainerViewModel.signedContainer.asFlow().collectAsState(null) - val cryptoContainer by sharedContainerViewModel.cryptoContainer.asFlow().collectAsState(null) - - val codeType = - if (identityAction == IdentityAction.SIGN) { - CodeType.PIN2 - } else { - CodeType.PIN1 - } - - val pinTypeMessage = - if (codeType == CodeType.PIN2) { - stringResource(id = R.string.signature_id_card_pin2) - } else { - stringResource(id = R.string.signature_id_card_pin1) - } - - val pinMinLength = - if (identityAction == IdentityAction.SIGN) { - PIN2_MIN_LENGTH - } else { - PIN1_MIN_LENGTH - } - - val pinText = stringResource(R.string.id_card_identity_pin, pinTypeMessage) - val pinCode = remember { mutableStateOf(byteArrayOf()) } - - var roleDataRequest: RoleData? by remember { mutableStateOf(null) } - val getSettingsAskRoleAndAddress = sharedSettingsViewModel.dataStore::getSettingsAskRoleAndAddress - var errorText by remember { mutableStateOf("") } - var pinErrorText by remember { mutableStateOf("") } - val pinCodeTextEdited = rememberSaveable { mutableStateOf(false) } - val pinCodeLengthErrorText = - if (pinCodeTextEdited.value && pinCode.value.isNotEmpty()) { - if (shouldShowPINCodeError( - pinCode.value, - codeType, - ) - ) { - String.format( - stringResource(id = R.string.id_card_sign_pin_invalid_length), - pinTypeMessage, - pinMinLength, - PIN_MAX_LENGTH.toString(), - ) - } else { - "" - } - } else { - "" - } - val focusManager = LocalFocusManager.current - val statusMessageFocusRequester = remember { FocusRequester() } - val readyToSignFocusRequester = remember { FocusRequester() } - val pinCodeFocusRequester = remember { FocusRequester() } - - var isValid by rememberSaveable { mutableStateOf(false) } - - val clearButtonText = stringResource(R.string.clear_text) - val buttonName = stringResource(id = R.string.button_name) - - BackHandler { - if (isSigning || isDecrypting || isAuthenticating) { - isDataLoadingStarted = false - showLoadingIndicator = false - onError() - } else { - onSuccess() - } - } - - LaunchedEffect(Unit) { - pinCode.value = byteArrayOf() - idCardViewModel.resetPINErrorState() - idCardViewModel.resetPersonalUserData() - } - - LaunchedEffect(idCardStatus) { - idCardStatus?.let { status -> - when (status) { - SmartCardReaderStatus.IDLE -> { - showLoadingIndicator = false - isDataLoadingStarted = false - idCardStatusMessage.value = idCardStatusInitialMessage - } - - SmartCardReaderStatus.READER_DETECTED -> { - showLoadingIndicator = false - isDataLoadingStarted = false - idCardStatusMessage.value = idCardStatusReaderDetectedMessage - } - - SmartCardReaderStatus.CARD_DETECTED -> { - showLoadingIndicator = true - isDataLoadingStarted = true - withContext(IO) { - idCardViewModel.loadPersonalData() - } - idCardStatusMessage.value = idCardStatusCardDetectedMessage - } - } - - if (idCardStatus != SmartCardReaderStatus.CARD_DETECTED) { - idCardViewModel.resetPersonalUserData() - pinCode.value.fill(0) - } - } ?: run { - idCardStatusMessage.value = idCardStatusInitialMessage - } - } - - LaunchedEffect(idCardViewModel.signStatus) { - idCardViewModel.signStatus - .asFlow() - .filterNotNull() - .collect { signStatus -> - sharedContainerViewModel.setSignedIDCardStatus(signStatus) - idCardViewModel.resetSignStatus() - pinCode.value.fill(0) - idCardViewModel.resetPINErrorState() - pinCode.value = byteArrayOf() - } - } - - LaunchedEffect(idCardViewModel.decryptStatus) { - idCardViewModel.decryptStatus - .asFlow() - .filterNotNull() - .collect { decryptStatus -> - sharedContainerViewModel.setDecryptIDCardStatus(decryptStatus) - idCardViewModel.resetDecryptStatus() - pinCode.value.fill(0) - idCardViewModel.resetPINErrorState() - pinCode.value = byteArrayOf() - } - } - - LaunchedEffect(idCardViewModel.errorState) { - idCardViewModel.errorState - .asFlow() - .filterNotNull() - .collect { errorState -> - withContext(IO) { - idCardViewModel.resetPersonalUserData() - idCardViewModel.resetErrorState() - } - withContext(Main) { - if (errorState.first != 0) { - errorText = - context.getString( - errorState.first, - errorState.second, - errorState.third, - ) - } - - pinCode.value = byteArrayOf() - - isDataLoadingStarted = false - showLoadingIndicator = true - // Navigating away dismisses the notification. - // Waiting to show message before dismissing. - delay(4000L) - idCardStatusMessage.value = idCardStatusInitialMessage - isValidToSign(false) - isValidToDecrypt(false) - showLoadingIndicator = false - onError() - } - } - } - - LaunchedEffect(idCardViewModel.pinErrorState) { - idCardViewModel.pinErrorState - .asFlow() - .filterNotNull() - .collect { pinErrorState -> - withContext(IO) { - idCardViewModel.resetErrorState() - idCardViewModel.resetDialogErrorState() - } - withContext(Main) { - pinCode.value = byteArrayOf() - pinErrorText = - context.getString( - pinErrorState.first, - pinErrorState.second, - pinErrorState.third, - ) - - if (pinErrorText.isNotEmpty()) { - showMessage(pinErrorText) - } - - if (shouldHandleError) { - // Navigating away dismisses the notification. - // Waiting to show message before dismissing. - delay(4000L) - onError() - } - } - } - } - - LaunchedEffect(idCardViewModel.dialogError) { - idCardViewModel.dialogError - .asFlow() - .filterNotNull() - .collect { - withContext(Main) { - pinCode.value.fill(0) - idCardViewModel.resetErrorState() - idCardViewModel.resetPINErrorState() - pinCode.value = byteArrayOf() - showErrorDialog.value = true - } - } - } - - LaunchedEffect(idCardViewModel.signedContainer) { - idCardViewModel.signedContainer - .asFlow() - .filterNotNull() - .collect { signedContainer -> - sharedContainerViewModel.setSignedContainer(signedContainer) - idCardViewModel.resetSignedContainer() - onSuccess() - } - } - - LaunchedEffect(idCardViewModel.cryptoContainer) { - idCardViewModel.cryptoContainer - .asFlow() - .filterNotNull() - .collect { cryptoContainer -> - sharedContainerViewModel.setCryptoContainer(cryptoContainer, true) - idCardViewModel.resetCryptoContainer() - onSuccess() - } - } - - LaunchedEffect(Unit, idCardData, isValid, isSigning, isDecrypting, isAuthenticating, idCardStatusMessage) { - if (idCardData?.personalData == null || - (isValid && isSigning) || - (isValid && isDecrypting) || - isAuthenticating - ) { - statusMessageFocusRequester.requestFocus() - } - } - - LaunchedEffect(Unit, idCardData, isSigning, isAuthenticating, isDecrypting) { - if (idCardData?.personalData != null && !isSigning && !isAuthenticating && !isDecrypting) { - delay(500) - readyToSignFocusRequester.requestFocus() - } - } - - LaunchedEffect(Unit, idCardData, isAuthenticating) { - if (idCardData?.personalData != null && isAuthenticating && !isSigning) { - idCardData?.let { data -> - isAuthenticated(true, data) - idCardViewModel.resetPersonalUserData() - } - } - } - - if (errorText.isNotEmpty()) { - showMessage(errorText) - errorText = "" - } - - if (showErrorDialog.value) { - var text1 = 0 - var text1Arg: Int? = null - val text2 = null - var linkText = 0 - var linkUrl = 0 - if (dialogError?.contains("Too Many Requests") == true) { - text1 = R.string.too_many_requests_message - text1Arg = R.string.id_card_conditional_speech - linkText = R.string.additional_information - linkUrl = R.string.too_many_requests_url - } else if (dialogError?.contains("OCSP response not in valid time slot") == true) { - text1 = R.string.invalid_time_slot_message - linkText = R.string.additional_information - linkUrl = R.string.invalid_time_slot_url - } else if (dialogError?.contains("PIN2 has not been changed") == true) { - text1 = R.string.sign_blocked_pin2_unchanged_message - linkText = R.string.additional_information - linkUrl = R.string.sign_blocked_pin2_unchanged_url - } - Box(modifier = modifier.fillMaxSize()) { - BasicAlertDialog( - modifier = - modifier - .clip(buttonRoundCornerShape) - .background(MaterialTheme.colorScheme.surface), - onDismissRequest = { - showErrorDialog.value = false - idCardViewModel.resetDialogErrorState() - }, - ) { - Surface( - modifier = - modifier - .padding(SPadding) - .wrapContentHeight() - .wrapContentWidth() - .verticalScroll(rememberScrollState()), - ) { - Column( - modifier = - modifier - .semantics { - testTagsAsResourceId = true - }.testTag("idCardErrorContainer"), - ) { - HrefMessageDialog( - modifier = modifier, - text1 = text1, - text1Arg = text1Arg, - text2 = text2, - linkText = linkText, - linkUrl = linkUrl, - newLineBeforeLink = true, - ) - - CancelAndOkButtonRow( - okButtonTestTag = "hrefMessageDialogOkButton", - cancelButtonTestTag = "hrefMessageDialogCancelButton", - cancelButtonClick = {}, - okButtonClick = { - showErrorDialog.value = false - idCardViewModel.resetDialogErrorState() - }, - cancelButtonTitle = R.string.cancel_button, - okButtonTitle = R.string.ok_button, - cancelButtonContentDescription = stringResource(id = R.string.cancel_button).lowercase(), - okButtonContentDescription = stringResource(id = R.string.ok_button).lowercase(), - showCancelButton = false, - ) - } - } - } - InvisibleElement(modifier = modifier) - } - } - - Column( - modifier = - modifier - .fillMaxHeight() - .imePadding() - .pointerInput(Unit) { - detectTapGestures(onTap = { - focusManager.clearFocus() - }) - }.semantics { - testTagsAsResourceId = true - }.testTag("signatureUpdateIdCard"), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - if (isAddingRoleAndAddress) { - RoleDataView(modifier, sharedSettingsViewModel, onError) - } else { - isValid = pinCode.value.size in pinMinLength..PIN_MAX_LENGTH - - LaunchedEffect(isValid) { - isValidToSign(isValid) - } - - LaunchedEffect(isValid) { - isValidToDecrypt(isValid) - } - - LaunchedEffect(Unit, isValid) { - if (isValid) { - signAction { - if (getSettingsAskRoleAndAddress()) { - val roles = sharedSettingsViewModel.dataStore.getRoles() - val rolesList = - roles - .split(",") - .map { it.trim() } - .filter { it.isNotEmpty() } - .toList() - val city = sharedSettingsViewModel.dataStore.getRoleCity() - val state = sharedSettingsViewModel.dataStore.getRoleState() - val country = sharedSettingsViewModel.dataStore.getRoleCountry() - val zip = sharedSettingsViewModel.dataStore.getRoleZip() - - roleDataRequest = - RoleData( - roles = rolesList, - city = city, - state = state, - country = country, - zip = zip, - ) - } - - scope.launch(IO) { - idCardViewModel.sign( - activity, - signedContainer!!, - pinCode.value, - roleDataRequest, - ) - pinCode.value.fill(0) - } - } - decryptAction { - scope.launch(IO) { - idCardViewModel.decrypt( - activity, - context, - cryptoContainer!!, - pinCode.value, - ) - pinCode.value.fill(0) - } - } - } - cancelAction { - scope.launch(IO) { - signedContainer?.let { idCardViewModel.removePendingSignature(it) } - } - } - cancelDecryptAction { - scope.launch(IO) { - signedContainer?.let { idCardViewModel.removePendingSignature(it) } - } - } - } - - LaunchedEffect(isDataLoadingStarted) { - if (isDataLoadingStarted) { - isStarted(true) - } - } - - if (idCardData?.personalData != null && isSigning) { - idCardStatusMessage.value = idCardStatusSigningMessage - } - - if (idCardData?.personalData != null && isDecrypting) { - idCardStatusMessage.value = idCardStatusSigningMessage - } - - if (idCardData?.personalData == null || - (isValid && isSigning) || - (isValid && isDecrypting) || - isAuthenticating - ) { - if (!showLoadingIndicator) { - Icon( - modifier = - modifier - .fillMaxWidth() - .size(iconSizeXXL) - .notAccessible(), - imageVector = ImageVector.vectorResource(R.drawable.ic_m3_smart_card_reader_48dp_wght400), - contentDescription = null, - ) - } else { - CircularProgressIndicator( - modifier = - modifier - .padding(vertical = LPadding) - .size(loadingBarSize) - .testTag("activityIndicator") - .notAccessible(), - color = MaterialTheme.colorScheme.secondary, - trackColor = MaterialTheme.colorScheme.surfaceVariant, - ) - } - - Row( - modifier = - modifier - .fillMaxWidth() - .padding(vertical = SPadding), - horizontalArrangement = Arrangement.Center, - ) { - Text( - text = idCardStatusMessage.value, - style = MaterialTheme.typography.titleLarge, - modifier = - modifier - .focusRequester(statusMessageFocusRequester) - .focusable() - .semantics { - liveRegion = LiveRegionMode.Assertive - }.testTag("idCardStatusMessage"), - textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.onSurface, - ) - } - } - - if (idCardStatusReadyToSign) { - Column( - modifier = - modifier - .fillMaxWidth() - .padding(top = SPadding) - .semantics { - testTagsAsResourceId = true - }.testTag("signatureUpdateIdCardContainer"), - horizontalAlignment = Alignment.Start, - verticalArrangement = Arrangement.spacedBy(SPadding), - ) { - Text( - modifier = - modifier - .zIndex(1f) - .focusRequester(readyToSignFocusRequester) - .focusable() - .semantics { - traversalIndex = 1f - testTagsAsResourceId = true - }.testTag("idCardReadyToSignMessage"), - text = idCardStatusReadyToSignMessage, - textAlign = TextAlign.Start, - style = MaterialTheme.typography.labelLarge, - color = MaterialTheme.colorScheme.onSurfaceVariant, - ) - - val personalData = idCardData?.personalData - - val nameText = - formatName( - "${personalData?.surname()},${personalData?.givenNames()},${personalData?.personalCode()}", - ) - - StyledNameText( - modifier = - modifier - .zIndex(2f) - .focusable(false) - .semantics { - traversalIndex = 2f - testTagsAsResourceId = true - contentDescription = formatNumbers(nameText) - }.testTag("idCardSignerNameText"), - nameText, - ) - - Column( - modifier = - modifier - .fillMaxWidth() - .semantics { - testTagsAsResourceId = true - }.testTag("idCardContainer"), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(MSPadding), - ) { - Row( - modifier = - modifier - .fillMaxWidth() - .padding(top = MSPadding), - horizontalArrangement = Arrangement.Start, - verticalAlignment = Alignment.CenterVertically, - ) { - SecurePinTextField( - modifier = - modifier - .weight(1f) - .zIndex(3f) - .semantics { - traversalIndex = 3f - testTagsAsResourceId = true - }.testTag("idCardPinTextField"), - pin = pinCode, - pinCodeLabel = pinText, - pinNumberFocusRequester = pinCodeFocusRequester, - previousFocusRequester = readyToSignFocusRequester, - pinCodeTextEdited = pinCodeTextEdited, - trailingIconContentDescription = "$clearButtonText $buttonName", - isError = - pinCodeTextEdited.value && - shouldShowPINCodeError( - pinCode.value, - codeType, - ), - ) - if (isTalkBackEnabled(context) && pinCode.value.isNotEmpty()) { - IconButton( - modifier = - modifier - .zIndex(4f) - .align(Alignment.CenterVertically) - .semantics { - traversalIndex = 4f - testTagsAsResourceId = true - }.testTag("idCardPinRemoveButton"), - onClick = { - pinCode.value = byteArrayOf() - scope.launch(Main) { - pinCodeFocusRequester.requestFocus() - focusManager.clearFocus() - delay(200) - pinCodeFocusRequester.requestFocus() - } - }, - ) { - Icon( - modifier = - modifier - .size(iconSizeXXS) - .semantics { - testTagsAsResourceId = true - }.testTag("idCardPinRemoveIconButton"), - imageVector = ImageVector.vectorResource(R.drawable.ic_icon_remove), - contentDescription = "$clearButtonText $buttonName", - ) - } - } - } - - if (pinCodeLengthErrorText.isNotEmpty()) { - Text( - modifier = - modifier - .padding(bottom = MSPadding) - .fillMaxWidth() - .focusable(true) - .semantics { contentDescription = pinCodeLengthErrorText } - .testTag("idCardPinError"), - text = pinCodeLengthErrorText, - textAlign = TextAlign.Start, - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.error, - ) - } - } - } - } - } - } - - InvisibleElement(modifier = modifier) - - if (!loading) return -} - -@Preview(showBackground = true) -@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES) -@Composable -fun IdCardViewPreview() { - RIADigiDocTheme { - val sharedContainerViewModel: SharedContainerViewModel = hiltViewModel() - val sharedSettingsViewModel: SharedSettingsViewModel = hiltViewModel() - IdCardView( - activity = LocalActivity.current as Activity, - sharedSettingsViewModel = sharedSettingsViewModel, - sharedContainerViewModel = sharedContainerViewModel, - identityAction = IdentityAction.SIGN, - isAuthenticating = false, - isAuthenticated = { _, _ -> {} }, - ) - } -} diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/NFCView.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/NFCView.kt index 70f8f0142..ce57f793d 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/NFCView.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/NFCView.kt @@ -138,7 +138,7 @@ fun NFCView( identityAction: IdentityAction, isSigning: Boolean = false, isDecrypting: Boolean = false, - isAuthenticating: Boolean, + isAuthenticating: Boolean = false, onError: () -> Unit = {}, onSuccess: () -> Unit = {}, isAddingRoleAndAddress: Boolean = false, @@ -150,12 +150,12 @@ fun NFCView( isValidToSign: (Boolean) -> Unit = {}, isValidToDecrypt: (Boolean) -> Unit = {}, showPinField: Boolean = true, - isValidToAuthenticate: (Boolean) -> Unit, + isValidToAuthenticate: (Boolean) -> Unit = {}, signAction: (() -> Unit) -> Unit = {}, decryptAction: (() -> Unit) -> Unit = {}, cancelAction: (() -> Unit) -> Unit = {}, cancelDecryptAction: (() -> Unit) -> Unit = {}, - isAuthenticated: (Boolean, IdCardData) -> Unit, + isAuthenticated: (Boolean, IdCardData) -> Unit = { _, _ -> }, ) { val context = LocalContext.current val scope = rememberCoroutineScope() diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureAddRadioItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureAddRadioItem.kt index 67bc36c38..c9e3ae300 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureAddRadioItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureAddRadioItem.kt @@ -49,15 +49,6 @@ data class SignatureAddRadioItem( ).lowercase(), testTag = "signatureUpdateSignatureAddMethodNFC", ), - SignatureAddRadioItem( - label = R.string.signature_update_signature_add_method_id_card, - method = SigningMethod.ID_CARD, - contentDescription = - stringResource( - id = R.string.signature_update_signature_add_method_id_card_accessibility, - ).lowercase(), - testTag = "signatureUpdateSignatureAddMethodIdCard", - ), SignatureAddRadioItem( label = R.string.signature_update_signature_add_method_mobile_id, method = SigningMethod.MOBILE_ID, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/utils/Constant.kt b/app/src/main/kotlin/ee/ria/DigiDoc/utils/Constant.kt index ca77097ce..fb08e9940 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/utils/Constant.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/utils/Constant.kt @@ -41,7 +41,6 @@ object Constant { const val SIGNING_SCREEN = "signing_route" const val ENCRYPT_SCREEN = "encrypt_route" const val DECRYPT_SCREEN = "decrypt_route" - const val DECRYPT_METHOD_SCREEN = "decrypt_method_route" const val ACCESSIBILITY_SCREEN = "accessibility_route" const val INFO_SCREEN = "info_route" const val DIAGNOSTICS_SCREEN = "diagnostics_route" @@ -64,7 +63,6 @@ object Constant { const val PROXY_SERVICES_SCREEN = "proxy_services_route" const val CONTAINER_NOTIFICATIONS_SCREEN = "container_notifications_route" const val MYEID_IDENTIFICATION_SCREEN = "myeid_identification_route" - const val MYEID_IDENTIFICATION_METHOD_SCREEN = "myeid_identification_method_route" const val MYEID_SCREEN = "myeid_screen_route" const val MYEID_PIN_SCREEN = "myeid_pin_screen_route" } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/utils/Route.kt b/app/src/main/kotlin/ee/ria/DigiDoc/utils/Route.kt index e416c9bb8..710146a06 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/utils/Route.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/utils/Route.kt @@ -27,7 +27,6 @@ import ee.ria.DigiDoc.utils.Constant.Routes.CERTIFICATE_DETAIL_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.CONTAINER_NOTIFICATIONS_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.CRYPTO_FILE_CHOOSING_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.CRYPTO_SCREEN -import ee.ria.DigiDoc.utils.Constant.Routes.DECRYPT_METHOD_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.DECRYPT_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.DIAGNOSTICS_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.EID_SCREEN @@ -37,7 +36,6 @@ import ee.ria.DigiDoc.utils.Constant.Routes.ENCRYPT_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.HOME_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.INFO_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.INIT_SCREEN -import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_IDENTIFICATION_METHOD_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_IDENTIFICATION_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_PIN_SCREEN import ee.ria.DigiDoc.utils.Constant.Routes.MYEID_SCREEN @@ -84,8 +82,6 @@ sealed class Route( data object DecryptScreen : Route(DECRYPT_SCREEN) - data object DecryptMethodScreen : Route(DECRYPT_METHOD_SCREEN) - data object Accessibility : Route(ACCESSIBILITY_SCREEN) data object Info : Route(INFO_SCREEN) @@ -130,8 +126,6 @@ sealed class Route( data object MyEidIdentificationScreen : Route(MYEID_IDENTIFICATION_SCREEN) - data object MyEidIdentificationMethodScreen : Route(MYEID_IDENTIFICATION_METHOD_SCREEN) - data object MyEidScreen : Route(MYEID_SCREEN) data object MyEidPinScreen : Route(MYEID_PIN_SCREEN) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModel.kt b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModel.kt deleted file mode 100644 index efba76a66..000000000 --- a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/IdCardViewModel.kt +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName") - -package ee.ria.DigiDoc.viewmodel - -import android.app.Activity -import android.content.Context -import android.content.pm.ActivityInfo -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import dagger.hilt.android.lifecycle.HiltViewModel -import ee.ria.DigiDoc.R -import ee.ria.DigiDoc.configuration.repository.ConfigurationRepository -import ee.ria.DigiDoc.cryptolib.CDOC2Settings -import ee.ria.DigiDoc.cryptolib.CryptoContainer -import ee.ria.DigiDoc.domain.model.IdCardData -import ee.ria.DigiDoc.domain.service.IdCardService -import ee.ria.DigiDoc.idcard.CodeVerificationException -import ee.ria.DigiDoc.idcard.Token -import ee.ria.DigiDoc.libdigidoclib.SignedContainer -import ee.ria.DigiDoc.libdigidoclib.domain.model.RoleData -import ee.ria.DigiDoc.libdigidoclib.domain.model.ValidatorInterface -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderManager -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus -import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.debugLog -import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers.IO -import kotlinx.coroutines.Dispatchers.Main -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.launch -import kotlinx.coroutines.rx3.asFlow -import kotlinx.coroutines.withContext -import java.util.Arrays -import java.util.Base64 -import javax.inject.Inject - -@HiltViewModel -class IdCardViewModel - @Inject - constructor( - private val smartCardReaderManager: SmartCardReaderManager, - private val idCardService: IdCardService, - private val cdoc2Settings: CDOC2Settings, - private val configurationRepository: ConfigurationRepository, - ) : ViewModel() { - private val logTag = javaClass.simpleName - - private val _idCardStatus = MutableLiveData(SmartCardReaderStatus.IDLE) - val idCardStatus: LiveData = _idCardStatus - - private val _userData = MutableLiveData(null) - val userData: LiveData = _userData - - private val _signStatus = MutableLiveData(null) - val signStatus: LiveData = _signStatus - - private val _decryptStatus = MutableLiveData(null) - val decryptStatus: LiveData = _decryptStatus - - private val _signedContainer = MutableLiveData(null) - val signedContainer: LiveData = _signedContainer - - private val _cryptoContainer = MutableLiveData(null) - val cryptoContainer: LiveData = _cryptoContainer - - private val _errorState = MutableLiveData?>(null) - val errorState: LiveData?> = _errorState - - private val _pinErrorState = MutableLiveData?>(null) - val pinErrorState: LiveData?> = _pinErrorState - - private val _shouldHandleError = MutableStateFlow(false) - val shouldHandleError: StateFlow = _shouldHandleError - - private val _dialogError = MutableLiveData(null) - val dialogError: LiveData = _dialogError - - init { - CoroutineScope(Main).launch { - smartCardReaderManager.status().asFlow().distinctUntilChanged().collect { status -> - _idCardStatus.postValue(status) - } - } - } - - suspend fun loadPersonalData() = - withContext(IO) { - try { - val token = - withContext(IO) { - Token.create(smartCardReaderManager.connectedReader()) - } - - val data = idCardService.data(token) - - _userData.postValue(data) - } catch (e: Exception) { - _signStatus.postValue(false) - _decryptStatus.postValue(false) - - showGeneralError(e) - errorLog(logTag, "Unable to get ID-card personal data: ${e.message}", e) - - resetValues() - } - } - - suspend fun sign( - activity: Activity, - signedContainer: SignedContainer, - pin2Code: ByteArray, - roleData: RoleData?, - ) { - activity.requestedOrientation = activity.resources.configuration.orientation - - try { - val token: Token = - withContext(Main) { - Token.create(smartCardReaderManager.connectedReader()) - } - - val signedContainerResult: SignedContainer = - idCardService.signContainer(token, signedContainer, pin2Code, roleData) - - if (pin2Code.isNotEmpty()) { - Arrays.fill(pin2Code, 0.toByte()) - } - - withContext(Main) { - _signStatus.postValue(true) - _signedContainer.postValue(signedContainerResult) - } - } catch (e: Exception) { - handleSigningError(e, signedContainer) - } finally { - activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED - } - } - - suspend fun decrypt( - activity: Activity, - context: Context, - container: CryptoContainer?, - pin1Code: ByteArray, - ) { - activity.requestedOrientation = activity.resources.configuration.orientation - if (container != null) { - try { - val token: Token = - withContext(Main) { - Token.create(smartCardReaderManager.connectedReader()) - } - - val authCert = idCardService.data(token).authCertificate.data - - debugLog( - logTag, - "Auth certificate: " + Base64.getEncoder().encodeToString(authCert), - ) - val decryptedContainer = - CryptoContainer.decrypt( - context, - container.file, - container.recipients, - authCert, - pin1Code, - token, - cdoc2Settings, - configurationRepository, - ) - if (pin1Code.isNotEmpty()) { - Arrays.fill(pin1Code, 0.toByte()) - } - - withContext(Main) { - _decryptStatus.postValue(true) - _cryptoContainer.postValue(decryptedContainer) - } - } catch (e: Exception) { - handleDecryptError(e) - } finally { - activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED - } - } else { - withContext(Main) { - _decryptStatus.postValue(false) - _errorState.postValue(Triple(R.string.error_general_client, null, null)) - errorLog(logTag, "Unable to get container value. Container is 'null'") - } - } - } - - suspend fun removePendingSignature(signedContainer: SignedContainer) { - val signatures = signedContainer.getSignatures(Main) - if (signatures.isNotEmpty()) { - val lastSignatureStatus = signatures.last().validator.status - if (lastSignatureStatus == ValidatorInterface.Status.Invalid || - lastSignatureStatus == ValidatorInterface.Status.Unknown - ) { - signedContainer.removeSignature(signatures.last()) - } - } - } - - private fun handleIdentityError(e: Exception) { - val message = e.message ?: "" - - when { - e is CodeVerificationException -> handlePinError(e) - message.contains("PIN2 has not been changed") -> - showErrorDialog( - e, - "Unable to sign with ID-card - PIN2 has not been changed", - ) - message.contains("Too Many Requests") -> - showErrorDialog( - e, - "Unable to sign with ID-card - Too Many Requests", - ) - message.contains("OCSP response not in valid time slot") -> - showErrorDialog( - e, - "Unable to sign with ID-card - OCSP response not in valid time slot", - ) - message.contains("Certificate status: revoked") -> showRevokedCertificateError(e) - message.contains("Certificate status: unknown") -> showUnknownCertificateError(e) - message.contains("Failed to connect") || - message.contains("Failed to create connection with host") -> - showNetworkError(e) - message.contains("Failed to create proxy connection with host") -> showProxyError(e) - message.contains("No lock found with certificate key") -> showNoLockFoundError(e) - else -> showGeneralError(e) - } - } - - private fun handleDecryptError(e: Exception) { - _decryptStatus.postValue(false) - - handleIdentityError(e) - } - - private suspend fun handleSigningError( - e: Exception, - signedContainer: SignedContainer, - ) { - removePendingSignature(signedContainer) - _signStatus.postValue(false) - - handleIdentityError(e) - } - - private fun handlePinError(e: CodeVerificationException) { - val pinRetryCount = e.retries - val pinErrorMessage = - when (pinRetryCount) { - 2 -> Triple(R.string.id_card_sign_pin_invalid, e.type.name, pinRetryCount) - 1 -> Triple(R.string.id_card_sign_pin_invalid_final, e.type.name, null) - 0 -> Triple(R.string.id_card_sign_pin_locked, e.type.name, null) - else -> Triple(R.string.id_card_sign_pin_wrong, e.type.name, null) - } - setShouldHandleError(pinRetryCount == 0) - _pinErrorState.postValue(pinErrorMessage) - errorLog(logTag, "Unable to sign / decrypt with ID-card: ${e.message}", e) - } - - private fun showErrorDialog( - e: Exception, - logMessage: String, - ) { - _dialogError.postValue(e.message) - errorLog(logTag, logMessage, e) - } - - private fun showRevokedCertificateError(e: Exception) { - _errorState.postValue( - Triple( - R.string.signature_update_signature_error_message_certificate_revoked, - null, - null, - ), - ) - errorLog(logTag, "Unable to sign with ID-card - Certificate status: revoked", e) - } - - private fun showUnknownCertificateError(e: Exception) { - _errorState.postValue( - Triple( - R.string.signature_update_signature_error_message_certificate_unknown, - null, - null, - ), - ) - errorLog(logTag, "Unable to sign with ID-card - Certificate status: unknown", e) - } - - private fun showNetworkError(e: Exception) { - _errorState.postValue(Triple(R.string.no_internet_connection, null, null)) - errorLog(logTag, "Unable to sign with ID-card - Unable to connect to Internet", e) - } - - private fun showProxyError(e: Exception) { - _errorState.postValue(Triple(R.string.main_settings_proxy_invalid_settings, null, null)) - errorLog(logTag, "Unable to sign with ID-card - Unable to create proxy connection with host", e) - } - - private fun showGeneralError(e: Exception) { - _errorState.postValue(Triple(R.string.error_general_client, null, null)) - errorLog(logTag, "Unable to sign with ID-card: ${e.message}", e) - } - - fun setShouldHandleError(value: Boolean) { - _shouldHandleError.value = value - } - - private fun showNoLockFoundError(e: Exception) { - _errorState.postValue(Triple(R.string.no_lock_found, null, null)) - errorLog(logTag, "Unable to decrypt with ID-card - No lock found with certificate key", e) - } - - fun resetSignStatus() { - _signStatus.postValue(null) - } - - fun resetDecryptStatus() { - _decryptStatus.postValue(null) - } - - fun resetErrorState() { - _errorState.postValue(null) - } - - fun resetDialogErrorState() { - _dialogError.postValue(null) - } - - fun resetSignedContainer() { - _signedContainer.postValue(null) - } - - fun resetCryptoContainer() { - _cryptoContainer.postValue(null) - } - - fun resetPersonalUserData() { - _userData.postValue(null) - } - - private fun resetIdCardStatus() { - _idCardStatus.postValue(null) - } - - fun resetPINErrorState() { - _pinErrorState.postValue(null) - } - - fun resetShouldHandleError() { - _shouldHandleError.value = false - } - - private fun resetValues() { - resetDialogErrorState() - resetIdCardStatus() - resetPersonalUserData() - resetErrorState() - resetPINErrorState() - resetSignStatus() - resetSignedContainer() - resetShouldHandleError() - } - } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt index 1bc5b77cd..d22737647 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt @@ -25,12 +25,10 @@ import android.app.Activity import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import ee.ria.DigiDoc.R import ee.ria.DigiDoc.common.Constant import ee.ria.DigiDoc.domain.model.IdCardData -import ee.ria.DigiDoc.domain.model.myeid.MyEidIdentificationMethodSetting import ee.ria.DigiDoc.domain.model.pin.PinChangeVariant import ee.ria.DigiDoc.domain.preferences.DataStore import ee.ria.DigiDoc.domain.service.IdCardService @@ -40,19 +38,13 @@ import ee.ria.DigiDoc.idcard.DateOfBirthUtil import ee.ria.DigiDoc.idcard.Token import ee.ria.DigiDoc.idcard.TokenWithPace import ee.ria.DigiDoc.smartcardreader.SmartCardReaderException -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderManager -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderStatus import ee.ria.DigiDoc.smartcardreader.nfc.NfcSmartCardReader import ee.ria.DigiDoc.smartcardreader.nfc.NfcSmartCardReaderManager import ee.ria.DigiDoc.ui.component.myeid.pinandcertificate.PinChangeContent import ee.ria.DigiDoc.utilsLib.date.DateUtil import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog -import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.launch -import kotlinx.coroutines.rx3.asFlow import java.security.cert.X509Certificate import java.text.SimpleDateFormat import java.time.ZoneId @@ -66,7 +58,6 @@ import kotlin.math.abs class SharedMyEidViewModel @Inject constructor( - private val smartCardReaderManager: SmartCardReaderManager, private val idCardService: IdCardService, private val nfcSmartCardReaderManager: NfcSmartCardReaderManager, private val dataStore: DataStore, @@ -76,9 +67,6 @@ class SharedMyEidViewModel private val _pinScreenContent = MutableStateFlow(null) val pinScreenContent: StateFlow = _pinScreenContent - private val _idCardStatus = MutableLiveData(SmartCardReaderStatus.IDLE) - val idCardStatus: LiveData = _idCardStatus - private val _idCardData = MutableLiveData(null) val idCardData: LiveData = _idCardData @@ -91,21 +79,6 @@ class SharedMyEidViewModel private val _isPinBlocked = MutableLiveData(false) val isPinBlocked: LiveData = _isPinBlocked - private val _identificationMethod = MutableLiveData(null) - val identificationMethod: LiveData = _identificationMethod - - init { - viewModelScope.launch(Main) { - smartCardReaderManager.status().asFlow().distinctUntilChanged().collect { status -> - _idCardStatus.postValue(status) - } - } - } - - fun setIdentificationMethod(identificationMethod: MyEidIdentificationMethodSetting) { - _identificationMethod.postValue(identificationMethod) - } - fun setIdCardData(idCardData: IdCardData) { _idCardData.postValue(idCardData) } @@ -355,37 +328,23 @@ class SharedMyEidViewModel onResult: (Token?, Exception?) -> Unit, ) { try { - when (identificationMethod.value) { - MyEidIdentificationMethodSetting.NFC -> { - nfcSmartCardReaderManager.startDiscovery(activity) { reader, error -> - if (error != null) { - onResult(null, error) - return@startDiscovery - } - - if (reader == null) { - onResult( - null, - SmartCardReaderException( - activity.getString(R.string.error_general_client), - ), - ) - return@startDiscovery - } - - handleNfcToken(reader, onResult) - } + nfcSmartCardReaderManager.startDiscovery(activity) { reader, error -> + if (error != null) { + onResult(null, error) + return@startDiscovery } - else -> { - try { - val reader = smartCardReaderManager.connectedReader() - val token = Token.create(reader) - onResult(token, null) - } catch (e: Exception) { - onResult(null, e) - } + if (reader == null) { + onResult( + null, + SmartCardReaderException( + activity.getString(R.string.error_general_client), + ), + ) + return@startDiscovery } + + handleNfcToken(reader, onResult) } } catch (e: Exception) { onResult(null, e) @@ -424,10 +383,6 @@ class SharedMyEidViewModel _isPinBlocked.postValue(false) } - fun resetIdentificationMethod() { - _identificationMethod.postValue(null) - } - fun resetValues() { resetErrorState() resetIsPinBlocked() @@ -437,7 +392,6 @@ class SharedMyEidViewModel fun handleBackButton() { resetValues() - resetIdentificationMethod() resetIdCardData() } } diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index bb14e4803..fe8481bab 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -198,8 +198,6 @@ mobiil-ID Smart-ID - ID-kaart kaardilugeja abil - ID-kaart kaardilugeja abil ID-kaart NFC abil ID-kaart N F C abil Allkiri lisatud diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bf64e3f8b..802e6abc5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -198,8 +198,6 @@ mobile-ID Smart-ID - ID-card via USB - ID-card via U S B ID-card via NFC ID-card via N F C Signature added diff --git a/id-card-lib/id-lib/id-card-lib-debug.aar b/id-card-lib/id-lib/id-card-lib-debug.aar index c3df9294afffd77a9b89a5258ea1fb82b4a69e6d..74738850e86ad155aec0faf0b75590b2e9f0ebb7 100644 GIT binary patch delta 43383 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%0Dgmf393`|%YR(whs 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 delta 44350 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 Ola;DV26C+c0001NYnHkI diff --git a/id-card-lib/id-lib/id-card-lib-release.aar b/id-card-lib/id-lib/id-card-lib-release.aar index 9ae349e844f300614423afb33b709b61131b7b29..fb6de8e05209675bf09fac72c3253833c6d6ada5 100644 GIT binary patch delta 41605 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 Z004oilMJUx0tup%SEow`&!PYT004HP$ejQH delta 42548 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 literal 119322 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⁣wa$j+O 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 diff --git a/id-card-lib/smart-lib/smart-card-reader-lib-release.aar b/id-card-lib/smart-lib/smart-card-reader-lib-release.aar index c65d9600e742c006196515473b4ec63f5de92b74..f0c86dce49a356a4a0973bc333876152f618d090 100644 GIT binary patch delta 8447 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 literal 118389 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

fEb* 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

A1bBc(U)cY)B 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 diff --git a/id-card-lib/src/main/AndroidManifest.xml b/id-card-lib/src/main/AndroidManifest.xml index 3d2e21e5a..8bdb7e14b 100644 --- a/id-card-lib/src/main/AndroidManifest.xml +++ b/id-card-lib/src/main/AndroidManifest.xml @@ -1,8 +1,4 @@ - - - \ No newline at end of file + diff --git a/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/di/AppModules.kt b/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/di/AppModules.kt deleted file mode 100644 index 7f1a0ad49..000000000 --- a/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/di/AppModules.kt +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2017 - 2026 Riigi Infosüsteemi Amet - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -@file:Suppress("PackageName") - -package ee.ria.DigiDoc.domain.di - -import android.app.Application -import android.content.Context -import android.hardware.usb.UsbManager -import com.google.common.collect.ImmutableList -import dagger.Binds -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.android.qualifiers.ApplicationContext -import dagger.hilt.components.SingletonComponent -import ee.ria.DigiDoc.smartcardreader.SmartCardReaderManager -import ee.ria.DigiDoc.smartcardreader.usb.AcsUsbSmartCardReader -import ee.ria.DigiDoc.smartcardreader.usb.IdentivUsbSmartCardReader -import ee.ria.DigiDoc.smartcardreader.usb.UsbSmartCardReader -import ee.ria.DigiDoc.smartcardreader.usb.UsbSmartCardReaderManager -import javax.inject.Qualifier -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -class AppModules { - @Provides - @Singleton - fun provideUsbSmartCardReaderManager( - @ApplicationContext context: Context, - usbManager: UsbManager, - readers: ImmutableList, - ): SmartCardReaderManager = UsbSmartCardReaderManager(context, usbManager, readers) - - @Provides - @Singleton - fun provideUsbManager( - @ApplicationContext context: Context, - ): UsbManager = (context.getSystemService(Context.USB_SERVICE) as UsbManager) - - @Provides - fun provideUsbSmartCardReaderList( - acsSmartCardReader: AcsUsbSmartCardReader, - identivSmartCardReader: IdentivUsbSmartCardReader, - ): ImmutableList = ImmutableList.of(acsSmartCardReader, identivSmartCardReader) - - @Provides - @Singleton - fun provideAcsUsbSmartCardReader(usbManager: UsbManager): AcsUsbSmartCardReader = AcsUsbSmartCardReader(usbManager) - - @Provides - @Singleton - fun provideIdentivUsbSmartCardReader( - application: Application, - usbManager: UsbManager, - ): IdentivUsbSmartCardReader = IdentivUsbSmartCardReader(application, usbManager) -} - -@Module -@InstallIn(SingletonComponent::class) -abstract class SmartCardReaderModule { - @Qualifier - @Retention(AnnotationRetention.BINARY) - annotation class AcsReader - - @Qualifier - @Retention(AnnotationRetention.BINARY) - annotation class IdentivReader - - @Binds - @Singleton - @AcsReader - abstract fun bindAcsUsbSmartCardReader(acsSmartCardReader: AcsUsbSmartCardReader): UsbSmartCardReader - - @Binds - @Singleton - @IdentivReader - abstract fun bindIdentivUsbSmartCardReader(identivSmartCardReader: IdentivUsbSmartCardReader): UsbSmartCardReader -} diff --git a/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/service/IdCardServiceImpl.kt b/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/service/IdCardServiceImpl.kt index 734c785fd..bd2796da8 100644 --- a/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/service/IdCardServiceImpl.kt +++ b/id-card-lib/src/main/kotlin/ee/ria/DigiDoc/domain/service/IdCardServiceImpl.kt @@ -73,7 +73,7 @@ class IdCardServiceImpl val pin1RetryCounter = token.codeRetryCounter(CodeType.PIN1) val pin2RetryCounter = token.codeRetryCounter(CodeType.PIN2) val pukRetryCounter = token.codeRetryCounter(CodeType.PUK) - val pin2CodeChanged = token.pinChangedFlag() + val pin2CodeChanged = token.pinChangedFlag(CodeType.PIN2) val authCertificate = ExtendedCertificate.create(authenticationCertificateData, certificateService) val signCertificate = ExtendedCertificate.create(signingCertificateData, certificateService) @@ -126,7 +126,7 @@ class IdCardServiceImpl val signer = ExternalSigner(signCertificateData) signer.setProfile(SIGNATURE_PROFILE_TS) - signer.setUserAgent(UserAgentUtil.getUserAgent(context, SendDiagnostics.Devices)) + signer.setUserAgent(UserAgentUtil.getUserAgent(context, SendDiagnostics.NFC)) dataToSign = containerWrapper.prepareSignature( diff --git a/networking-lib/src/main/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtil.kt b/networking-lib/src/main/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtil.kt index e1170fbe3..b1849491c 100644 --- a/networking-lib/src/main/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtil.kt +++ b/networking-lib/src/main/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtil.kt @@ -33,7 +33,6 @@ import ee.ria.DigiDoc.common.BuildVersionProvider import ee.ria.DigiDoc.common.BuildVersionProviderImpl import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog import java.util.Locale -import java.util.Objects import java.util.stream.Collectors enum class SendDiagnostics { @@ -90,18 +89,12 @@ object UserAgentUtil { deviceNameFilters .stream() .anyMatch { charSequence: String -> - Objects - .requireNonNull(value.productName) - .contains( - charSequence, - ) + value.productName?.contains(charSequence) == true } || deviceNameFilters .stream() .anyMatch { charSequence: String -> - value.deviceName.contains( - charSequence, - ) + value.deviceName.contains(charSequence) } }.collect( Collectors.toMap, String, UsbDevice>(