diff --git a/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtilTest.kt b/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtilTest.kt index a3c5e368e..08507a016 100644 --- a/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtilTest.kt +++ b/app/src/androidTest/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtilTest.kt @@ -56,6 +56,6 @@ class AccessibilityUtilTest { @Test fun accessibilityUtilTest_sendAccessibilityEvent_success() { // This is a void method, so we're just testing that it doesn't throw an exception - sendAccessibilityEvent(context, 0, "Test") + sendAccessibilityEvent(context, "Test") } } diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/debug/res/mipmap-anydpi/ic_launcher.xml similarity index 100% rename from app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml rename to app/src/debug/res/mipmap-anydpi/ic_launcher.xml diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/debug/res/mipmap-anydpi/ic_launcher_round.xml similarity index 100% rename from app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to app/src/debug/res/mipmap-anydpi/ic_launcher_round.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e0cbb26f..02839ccb3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,13 +4,10 @@ - - - @@ -155,7 +154,7 @@ fun DiagnosticsScreen( diagnosticsViewModel.dataStore.setIsLogFileGenerationEnabled(false) diagnosticsViewModel.dataStore.setIsLogFileGenerationRunning(false) diagnosticsViewModel.resetLogs(context) - sendAccessibilityEvent(context, getAccessibilityEventType(), settingValueChanged) + sendAccessibilityEvent(context, settingValueChanged) sharedSettingsViewModel.recreateActivity(true) } } @@ -287,7 +286,6 @@ fun DiagnosticsScreen( diagnosticsViewModel.resetLogs(context) sendAccessibilityEvent( context, - getAccessibilityEventType(), settingValueChanged, ) sharedSettingsViewModel.recreateActivity(true) @@ -628,7 +626,6 @@ fun DiagnosticsScreen( closeRestartConfirmationDialog() sendAccessibilityEvent( context, - getAccessibilityEventType(), settingValueChanged, ) sharedSettingsViewModel.recreateActivity(true) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptRecipientScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptRecipientScreen.kt index 672b46385..5951de38b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptRecipientScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptRecipientScreen.kt @@ -100,7 +100,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.invisibleElementHeight import ee.ria.DigiDoc.ui.theme.Dimensions.zeroPadding import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.utils.Route -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utils.extensions.reachedBottom import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage @@ -173,7 +172,7 @@ fun EncryptRecipientScreen( } val dismissRemoveRecipientDialog = { closeRecipientDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), recipientRemovalCancelled) + sendAccessibilityEvent(context, recipientRemovalCancelled) } val encryptViewModel: EncryptViewModel = @@ -209,7 +208,6 @@ fun EncryptRecipientScreen( .getContainerRecipientList(sharedContainerViewModel) sendAccessibilityEvent( context, - getAccessibilityEventType(), recipientAddedSuccessText, ) encryptRecipientViewModel.handleIsRecipientAdded(false) @@ -225,7 +223,6 @@ fun EncryptRecipientScreen( containerEncryptedSuccess.value = true sendAccessibilityEvent( context, - getAccessibilityEventType(), containerEncryptedSuccessText, ) delay(2000) @@ -427,7 +424,7 @@ fun EncryptRecipientScreen( } closeRecipientDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), recipientRemoved) + sendAccessibilityEvent(context, recipientRemoved) }, ) } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/RecentDocumentsScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/RecentDocumentsScreen.kt index ec14f25eb..79199bf33 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/RecentDocumentsScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/RecentDocumentsScreen.kt @@ -94,7 +94,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.invisibleElementHeight import ee.ria.DigiDoc.ui.theme.Dimensions.zeroPadding import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.utils.Route -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utils.extensions.reachedBottom import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage @@ -179,7 +178,7 @@ fun RecentDocumentsScreen( } val dismissRemoveDocumentDialog = { closeDocumentDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), documentRemovalCancelled) + sendAccessibilityEvent(context, documentRemovalCancelled) } val listState = rememberLazyListState() @@ -553,7 +552,7 @@ fun RecentDocumentsScreen( recentDocumentList.value = recentDocumentsViewModel.getRecentDocumentList(fileOpeningMethod) dismissSearch() closeDocumentDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), documentRemoved) + sendAccessibilityEvent(context, documentRemoved) }, ) } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/ThemeChooserScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/ThemeChooserScreen.kt index 01be208dc..7e7c7497b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/ThemeChooserScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/ThemeChooserScreen.kt @@ -56,7 +56,6 @@ import ee.ria.DigiDoc.ui.component.shared.TopBar 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.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel @@ -120,7 +119,6 @@ fun ThemeChooserScreen( setThemeSetting(sharedSettingsViewModel, themeItem.setting) sendAccessibilityEvent( context, - getAccessibilityEventType(), themeChanged, ) }, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/CryptoFileOpeningNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/CryptoFileOpeningNavigation.kt index 216919c95..ff2b5c8b3 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/CryptoFileOpeningNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/CryptoFileOpeningNavigation.kt @@ -41,7 +41,6 @@ import androidx.navigation.NavHostController import ee.ria.DigiDoc.R import ee.ria.DigiDoc.ui.component.shared.LoadingScreen import ee.ria.DigiDoc.utils.Route -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage import ee.ria.DigiDoc.viewmodel.CryptoFileOpeningViewModel @@ -135,7 +134,6 @@ fun CryptoFileOpeningNavigation( sendAccessibilityEvent( context, - getAccessibilityEventType(), announcementText, ) delay(1000) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt index fc1fba6f9..f65bc132c 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/EncryptNavigation.kt @@ -113,7 +113,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.loadingBarSize import ee.ria.DigiDoc.ui.theme.Dimensions.screenViewLargePadding import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.utils.Route -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utils.extensions.reachedBottom import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage @@ -196,7 +195,6 @@ fun EncryptNavigation( closeRemoveFileDialog() sendAccessibilityEvent( context, - getAccessibilityEventType(), fileRemovalCancelled, ) } @@ -212,7 +210,6 @@ fun EncryptNavigation( openEditContainerNameDialog.value = false sendAccessibilityEvent( context, - getAccessibilityEventType(), containerNameChangeCancelled, ) } @@ -246,7 +243,6 @@ fun EncryptNavigation( closeRecipientDialog() sendAccessibilityEvent( context, - getAccessibilityEventType(), recipientRemovalCancelled, ) } @@ -446,7 +442,6 @@ fun EncryptNavigation( containerEncryptedSuccess.value = true sendAccessibilityEvent( context, - getAccessibilityEventType(), containerEncryptedSuccessText, ) delay(2000) @@ -478,7 +473,7 @@ fun EncryptNavigation( showRecipientsLoadingIndicator.value = false val newTime = System.currentTimeMillis() if (newTime >= (pastTime + 2 * 1000)) { - sendAccessibilityEvent(context, getAccessibilityEventType(), recipientsLoaded) + sendAccessibilityEvent(context, recipientsLoaded) } } } @@ -513,7 +508,6 @@ fun EncryptNavigation( containerDecryptedSuccess.value = true sendAccessibilityEvent( context, - getAccessibilityEventType(), containerDecryptedSuccessText, ) containerDecryptedSuccess.value = false @@ -533,7 +527,6 @@ fun EncryptNavigation( containerDecryptedSuccess.value = true sendAccessibilityEvent( context, - getAccessibilityEventType(), containerDecryptedSuccessText, ) containerDecryptedSuccess.value = false @@ -908,7 +901,6 @@ fun EncryptNavigation( openEditContainerNameDialog.value = false sendAccessibilityEvent( context, - getAccessibilityEventType(), containerNameChanged, ) }, @@ -972,7 +964,7 @@ fun EncryptNavigation( } } closeRemoveFileDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), fileRemoved) + sendAccessibilityEvent(context, fileRemoved) }, ) InvisibleElement(modifier = modifier) @@ -1016,7 +1008,7 @@ fun EncryptNavigation( ) } closeRecipientDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), recipientRemoved) + sendAccessibilityEvent(context, recipientRemoved) }, ) InvisibleElement(modifier = modifier) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageChoiceButtonGroup.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageChoiceButtonGroup.kt index cd4d5c546..c328433a7 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageChoiceButtonGroup.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/menu/LanguageChoiceButtonGroup.kt @@ -42,7 +42,6 @@ import ee.ria.DigiDoc.ui.theme.BlueBackground import ee.ria.DigiDoc.ui.theme.Dimensions.MPadding import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utilsLib.locale.LocaleUtil.getLocale import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel @@ -86,7 +85,6 @@ fun LanguageChoiceButtonGroup( sharedSettingsViewModel.recreateActivity() sendAccessibilityEvent( context, - getAccessibilityEventType(), languageChanged, ) onClickAction() 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 ed4823c4f..c8855cbf2 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 @@ -88,7 +88,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.MPadding 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.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.isTalkBackEnabled import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utils.extensions.notAccessible @@ -269,7 +268,6 @@ fun MyEidPinScreen( if (isTalkBackEnabled(context) && pinErrorText.value.isNotEmpty()) { sendAccessibilityEvent( context, - getAccessibilityEventType(), pinErrorText.value.lowercase(), ) } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryTextField.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryTextField.kt index 638325c1f..ff86e4694 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryTextField.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/PrimaryTextField.kt @@ -71,7 +71,6 @@ import ee.ria.DigiDoc.R import ee.ria.DigiDoc.ui.theme.Dimensions.MSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.addInvisibleElement -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 import ee.ria.DigiDoc.utils.extensions.notAccessible @@ -120,7 +119,7 @@ fun PrimaryTextField( LaunchedEffect(errorText) { if (errorText.isNotEmpty()) { - sendAccessibilityEvent(context, getAccessibilityEventType(), errorText) + sendAccessibilityEvent(context, errorText) } } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/RadioButtonItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/RadioButtonItem.kt index f51b0595e..093122107 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/RadioButtonItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/RadioButtonItem.kt @@ -36,7 +36,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.testTagsAsResourceId -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent @OptIn(ExperimentalComposeUiApi::class) @@ -75,7 +74,6 @@ fun RadioButtonItem( onSelect() sendAccessibilityEvent( context, - getAccessibilityEventType(), changedText, ) }, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/FileOpeningNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/FileOpeningNavigation.kt index f8218dba1..009647035 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/FileOpeningNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/FileOpeningNavigation.kt @@ -47,7 +47,6 @@ import ee.ria.DigiDoc.common.model.FileOpeningMethod import ee.ria.DigiDoc.ui.component.shared.LoadingScreen import ee.ria.DigiDoc.ui.component.shared.dialog.SivaConfirmationDialog import ee.ria.DigiDoc.utils.Route -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage import ee.ria.DigiDoc.viewmodel.FileOpeningViewModel @@ -210,7 +209,6 @@ fun FileOpeningNavigation( sendAccessibilityEvent( context, - getAccessibilityEventType(), announcementText, ) fileOpeningViewModel.resetFilesAdded() diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt index 0c239671f..e62ddd9a3 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt @@ -123,7 +123,6 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.invisibleElementHeight import ee.ria.DigiDoc.ui.theme.Dimensions.loadingBarSize import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme 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 import ee.ria.DigiDoc.utils.extensions.reachedBottom @@ -230,7 +229,6 @@ fun SigningNavigation( closeRemoveFileDialog() sendAccessibilityEvent( context, - getAccessibilityEventType(), fileRemovalCancelled, ) } @@ -246,7 +244,6 @@ fun SigningNavigation( openEditContainerNameDialog.value = false sendAccessibilityEvent( context, - getAccessibilityEventType(), containerNameChangeCancelled, ) } @@ -273,7 +270,6 @@ fun SigningNavigation( closeSignatureDialog() sendAccessibilityEvent( context, - getAccessibilityEventType(), signatureRemovalCancelled, ) } @@ -612,7 +608,7 @@ fun SigningNavigation( } val newTime = System.currentTimeMillis() if (newTime >= (pastTime + 2 * 1000)) { - sendAccessibilityEvent(context, getAccessibilityEventType(), signaturesLoaded) + sendAccessibilityEvent(context, signaturesLoaded) } } } @@ -638,7 +634,6 @@ fun SigningNavigation( isSignaturesCountLoaded = true sendAccessibilityEvent( context, - getAccessibilityEventType(), announcementText, ) } @@ -1062,7 +1057,6 @@ fun SigningNavigation( openEditContainerNameDialog.value = false sendAccessibilityEvent( context, - getAccessibilityEventType(), containerNameChanged, ) }, @@ -1123,7 +1117,7 @@ fun SigningNavigation( } } closeRemoveFileDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), fileRemoved) + sendAccessibilityEvent(context, fileRemoved) }, ) InvisibleElement(modifier = modifier) @@ -1167,7 +1161,7 @@ fun SigningNavigation( ) } closeSignatureDialog() - sendAccessibilityEvent(context, getAccessibilityEventType(), signatureRemoved) + sendAccessibilityEvent(context, signatureRemoved) }, ) InvisibleElement(modifier = modifier) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtil.kt b/app/src/main/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtil.kt index dd175897b..67f41643b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtil.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/utils/accessibility/AccessibilityUtil.kt @@ -22,25 +22,16 @@ package ee.ria.DigiDoc.utils.accessibility import android.content.Context -import android.os.Build import android.view.accessibility.AccessibilityEvent -import android.view.accessibility.AccessibilityEvent.TYPE_ANNOUNCEMENT import android.view.accessibility.AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED import android.view.accessibility.AccessibilityManager class AccessibilityUtil { companion object { - fun getAccessibilityEventType(): Int = - if (Build.VERSION.SDK_INT >= 34) { - TYPE_VIEW_ACCESSIBILITY_FOCUSED - } else { - TYPE_ANNOUNCEMENT - } - fun sendAccessibilityEvent( context: Context, - eventType: Int, eventText: CharSequence, + eventType: Int = TYPE_VIEW_ACCESSIBILITY_FOCUSED, ) { val accessibilityManager = context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/DiagnosticsViewModel.kt b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/DiagnosticsViewModel.kt index f00d3edd1..603a83eaa 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/DiagnosticsViewModel.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/DiagnosticsViewModel.kt @@ -42,7 +42,6 @@ import ee.ria.DigiDoc.configuration.utils.TSLUtil import ee.ria.DigiDoc.domain.model.settings.CDOCSetting import ee.ria.DigiDoc.domain.preferences.DataStore import ee.ria.DigiDoc.network.proxy.ProxySetting -import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.getAccessibilityEventType import ee.ria.DigiDoc.utils.accessibility.AccessibilityUtil.Companion.sendAccessibilityEvent import ee.ria.DigiDoc.utilsLib.date.DateUtil import ee.ria.DigiDoc.utilsLib.file.FileUtil @@ -102,7 +101,6 @@ class DiagnosticsViewModel } sendAccessibilityEvent( context, - getAccessibilityEventType(), context.getString(messageResId), ) } diff --git a/commons-lib/src/main/kotlin/ee/ria/DigiDoc/common/BuildVersionProvider.kt b/commons-lib/src/main/kotlin/ee/ria/DigiDoc/common/BuildVersionProvider.kt deleted file mode 100644 index dd196686a..000000000 --- a/commons-lib/src/main/kotlin/ee/ria/DigiDoc/common/BuildVersionProvider.kt +++ /dev/null @@ -1,26 +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.common - -interface BuildVersionProvider { - fun getSDKInt(): Int -} diff --git a/commons-lib/src/main/kotlin/ee/ria/DigiDoc/common/BuildVersionProviderImpl.kt b/commons-lib/src/main/kotlin/ee/ria/DigiDoc/common/BuildVersionProviderImpl.kt deleted file mode 100644 index 62f399d04..000000000 --- a/commons-lib/src/main/kotlin/ee/ria/DigiDoc/common/BuildVersionProviderImpl.kt +++ /dev/null @@ -1,28 +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.common - -import android.os.Build - -class BuildVersionProviderImpl : BuildVersionProvider { - override fun getSDKInt(): Int = Build.VERSION.SDK_INT -} diff --git a/config-lib/src/test/kotlin/ee/ria/DigiDoc/configuration/service/CentralConfigurationServiceImplTest.kt b/config-lib/src/test/kotlin/ee/ria/DigiDoc/configuration/service/CentralConfigurationServiceImplTest.kt index 35f05149f..cf9a8b6d9 100644 --- a/config-lib/src/test/kotlin/ee/ria/DigiDoc/configuration/service/CentralConfigurationServiceImplTest.kt +++ b/config-lib/src/test/kotlin/ee/ria/DigiDoc/configuration/service/CentralConfigurationServiceImplTest.kt @@ -44,10 +44,13 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Before import org.junit.Test -import org.mockito.ArgumentMatchers.anyInt +import org.mockito.ArgumentMatchers.anyLong import org.mockito.ArgumentMatchers.anyString +import org.mockito.MockedStatic import org.mockito.Mockito.mock +import org.mockito.Mockito.mockStatic import org.mockito.Mockito.`when` +import org.mockito.kotlin.any @ExperimentalCoroutinesApi class CentralConfigurationServiceImplTest { @@ -62,6 +65,8 @@ class CentralConfigurationServiceImplTest { private lateinit var context: Context private lateinit var property: ConfigurationProperty + private lateinit var packageInfoFlags: MockedStatic + @Before fun setup() { val packageManager = mock(PackageManager::class.java) @@ -70,7 +75,12 @@ class CentralConfigurationServiceImplTest { `when`(context.packageName).thenReturn("test") val packageInfo = mock(PackageInfo::class.java) `when`(packageInfo.longVersionCode).thenReturn(0L) - `when`(packageManager.getPackageInfo(anyString(), anyInt())).thenReturn(packageInfo) + packageInfoFlags = mockStatic(PackageManager.PackageInfoFlags::class.java) + packageInfoFlags + .`when` { PackageManager.PackageInfoFlags.of(anyLong()) } + .thenReturn(mock(PackageManager.PackageInfoFlags::class.java)) + `when`(packageManager.getPackageInfo(anyString(), any())) + .thenReturn(packageInfo) Dispatchers.setMain(testDispatcher) @@ -123,6 +133,7 @@ class CentralConfigurationServiceImplTest { @After fun tearDown() { + packageInfoFlags.close() Dispatchers.resetMain() mockWebServer.shutdown() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ba8db4c0..159dfe871 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] compileSdkVersion = "37" -minSdkVersion = "33" +minSdkVersion = "34" targetSdkVersion = "37" versionCode = "1" # Updated via CodeMagic pipeline. versionName = "3.1.0" 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 0014ec90d..1ca25ba03 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 @@ -27,8 +27,6 @@ import android.content.pm.PackageManager import android.hardware.usb.UsbDevice import android.hardware.usb.UsbManager import android.os.Build -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.stream.Collectors @@ -55,11 +53,10 @@ object UserAgentUtil { fun getAppInfo( context: Context, sendDiagnostics: SendDiagnostics = SendDiagnostics.None, - buildVersionProvider: BuildVersionProvider = BuildVersionProviderImpl(), ): String { val sb = StringBuilder() - sb.append("riadigidoc/").append(getAppVersion(context, buildVersionProvider)) + sb.append("riadigidoc/").append(getAppVersion(context)) sb.append(" (schema=1") sb.append("; os=Android ").append(Build.VERSION.RELEASE) @@ -95,7 +92,6 @@ object UserAgentUtil { fun getUserAgent( context: Context, sendDiagnostics: SendDiagnostics = SendDiagnostics.None, - buildVersionProvider: BuildVersionProvider = BuildVersionProviderImpl(), ): String { val sb = StringBuilder() @@ -105,7 +101,7 @@ object UserAgentUtil { sb.append(" (").append(arch).append(") ") } - sb.append("APP ").append(getAppInfo(context, sendDiagnostics, buildVersionProvider)) + sb.append("APP ").append(getAppInfo(context, sendDiagnostics)) return sb.toString() } @@ -161,12 +157,9 @@ object UserAgentUtil { return ArrayList(smartDevices.values) } - private fun getAppVersion( - context: Context, - buildVersionProvider: BuildVersionProvider, - ): String = + private fun getAppVersion(context: Context): String = try { - val info = getPackageInfo(context, buildVersionProvider) + val info = getPackageInfo(context) "${info.versionName}.${info.longVersionCode}" } catch (e: PackageManager.NameNotFoundException) { errorLog(LOG_TAG, "Failed getting app version from package info", e) @@ -174,15 +167,7 @@ object UserAgentUtil { } @Throws(PackageManager.NameNotFoundException::class) - private fun getPackageInfo( - context: Context, - buildVersionProvider: BuildVersionProvider, - ): PackageInfo = - if (buildVersionProvider.getSDKInt() >= Build.VERSION_CODES.TIRAMISU) { - context.packageManager - .getPackageInfo(context.packageName, PackageManager.PackageInfoFlags.of(0)) - } else { - context.packageManager - .getPackageInfo(context.packageName, 0) - } + private fun getPackageInfo(context: Context): PackageInfo = + context.packageManager + .getPackageInfo(context.packageName, PackageManager.PackageInfoFlags.of(0)) } diff --git a/networking-lib/src/test/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtilTest.kt b/networking-lib/src/test/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtilTest.kt index 6ddfb7a8d..910e908b3 100644 --- a/networking-lib/src/test/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtilTest.kt +++ b/networking-lib/src/test/kotlin/ee/ria/DigiDoc/network/utils/UserAgentUtilTest.kt @@ -29,7 +29,6 @@ import android.content.res.Resources import android.hardware.usb.UsbDevice import android.hardware.usb.UsbManager import android.os.Build -import ee.ria.DigiDoc.common.BuildVersionProvider import ee.ria.DigiDoc.network.utils.UserAgentUtil.getAppInfo import ee.ria.DigiDoc.network.utils.UserAgentUtil.getUserAgent import junit.framework.TestCase.assertEquals @@ -38,10 +37,13 @@ import junit.framework.TestCase.assertTrue import org.junit.After import org.junit.Before import org.junit.Test -import org.mockito.ArgumentMatchers.anyInt +import org.mockito.ArgumentMatchers.anyLong import org.mockito.ArgumentMatchers.anyString +import org.mockito.MockedStatic import org.mockito.Mockito.mock +import org.mockito.Mockito.mockStatic import org.mockito.Mockito.`when` +import org.mockito.kotlin.any import java.util.Locale class UserAgentUtilTest { @@ -50,7 +52,8 @@ class UserAgentUtilTest { private lateinit var usbDevice: UsbDevice private lateinit var packageManager: PackageManager private lateinit var packageInfo: PackageInfo - private lateinit var buildVersionProvider: BuildVersionProvider + + private lateinit var packageInfoFlags: MockedStatic private val expectedDeviceModel = Build.MODEL @@ -73,11 +76,15 @@ class UserAgentUtilTest { packageInfo.versionName = "1.2.3" `when`(packageInfo.longVersionCode).thenReturn(1234L) - buildVersionProvider = mock(BuildVersionProvider::class.java) + packageInfoFlags = mockStatic(PackageManager.PackageInfoFlags::class.java) + packageInfoFlags + .`when` { PackageManager.PackageInfoFlags.of(anyLong()) } + .thenReturn(mock(PackageManager.PackageInfoFlags::class.java)) } @After fun tearDown() { + packageInfoFlags.close() Locale.setDefault(originalLocale) } @@ -86,7 +93,7 @@ class UserAgentUtilTest { mockPackageManagerHandling() mockUsbManagerHandling() - val result = getUserAgent(context, buildVersionProvider = buildVersionProvider) + val result = getUserAgent(context) assertEquals( "APP riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel)", @@ -99,7 +106,7 @@ class UserAgentUtilTest { mockPackageManagerHandling() mockUsbManagerHandling() - val result = getUserAgent(context, SendDiagnostics.None, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.None) assertFalse(result.contains("devices=")) } @@ -121,7 +128,7 @@ class UserAgentUtilTest { } } ?: "unknown" - val result = getUserAgent(context, buildVersionProvider = buildVersionProvider) + val result = getUserAgent(context) assertEquals( "LIB libdigidocpp/4.5.6.40 ($expectedArch) APP riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel)", @@ -140,7 +147,7 @@ class UserAgentUtilTest { `when`(resources.configuration).thenReturn(configuration) `when`(context.resources).thenReturn(resources) - val result = getUserAgent(context, buildVersionProvider = buildVersionProvider) + val result = getUserAgent(context) assertTrue(result.contains("devicetype=tablet/")) } @@ -149,12 +156,11 @@ class UserAgentUtilTest { fun userAgentUtil_getUserAgent_returnUnknownAppVersionOnPackageNotFound() { `when`(context.packageManager).thenReturn(packageManager) `when`(context.packageName).thenReturn("App") - `when`(packageManager.getPackageInfo(anyString(), anyInt())) + `when`(packageManager.getPackageInfo(anyString(), any())) .thenThrow(PackageManager.NameNotFoundException()) mockUsbManagerHandling() - `when`(buildVersionProvider.getSDKInt()).thenReturn(Build.VERSION.SDK_INT) - val result = getUserAgent(context, buildVersionProvider = buildVersionProvider) + val result = getUserAgent(context) assertTrue(result.contains("APP riadigidoc/unknown ")) } @@ -167,7 +173,7 @@ class UserAgentUtilTest { mockUsbManagerHandling(devices) `when`(usbDevice.productName).thenReturn("Smart Card Reader 1") - val result = getUserAgent(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.Devices) assertEquals( "APP riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel; devices=Smart Card Reader 1)", @@ -180,7 +186,7 @@ class UserAgentUtilTest { mockPackageManagerHandling() mockUsbManagerHandling() - val result = getUserAgent(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.Devices) assertFalse(result.contains("devices=")) } @@ -194,7 +200,7 @@ class UserAgentUtilTest { `when`(usbDevice.productName).thenReturn("Keyboard") `when`(usbDevice.deviceName).thenReturn("/dev/bus/usb/001/001") - val result = getUserAgent(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.Devices) assertFalse(result.contains("devices=")) } @@ -207,7 +213,7 @@ class UserAgentUtilTest { mockUsbManagerHandling(devices) `when`(usbDevice.productName).thenReturn("Smart;Card(Reader)\r\n1") - val result = getUserAgent(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.Devices) assertTrue(result.contains("devices=SmartCardReader1)")) assertFalse(result.contains("\r")) @@ -222,7 +228,7 @@ class UserAgentUtilTest { mockUsbManagerHandling(devices) `when`(usbDevice.deviceName).thenReturn("/dev/bus/usb/001/Card-Reader") - val result = getUserAgent(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.Devices) assertTrue(result.contains("devices=")) } @@ -240,7 +246,7 @@ class UserAgentUtilTest { `when`(usbDevice2.productName).thenReturn("Smart Card Reader 2") `when`(usbDevice2.deviceName).thenReturn("/dev/bus/usb/001/002") - val result = getUserAgent(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.Devices) assertTrue(result.contains("Some Card Reader")) assertTrue(result.contains("Smart Card Reader 2")) @@ -251,7 +257,7 @@ class UserAgentUtilTest { mockPackageManagerHandling() mockUsbManagerHandling() - val result = getUserAgent(context, SendDiagnostics.NFC, buildVersionProvider) + val result = getUserAgent(context, SendDiagnostics.NFC) assertEquals( "APP riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel; nfc=true)", @@ -264,7 +270,7 @@ class UserAgentUtilTest { mockPackageManagerHandling() mockUsbManagerHandling() - val result = getAppInfo(context, buildVersionProvider = buildVersionProvider) + val result = getAppInfo(context) assertEquals( "riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel)", @@ -278,7 +284,7 @@ class UserAgentUtilTest { mockUsbManagerHandling() UserAgentUtil.setLibdigidocppVersion("4.5.6.40") - val result = getAppInfo(context, buildVersionProvider = buildVersionProvider) + val result = getAppInfo(context) // "LIB" and "APP" prefixes must not appear — libdigidocpp adds it itself assertFalse(result.contains("LIB ")) @@ -293,7 +299,7 @@ class UserAgentUtilTest { mockUsbManagerHandling(devices) `when`(usbDevice.productName).thenReturn("Smart Card Reader 1") - val result = getAppInfo(context, SendDiagnostics.Devices, buildVersionProvider) + val result = getAppInfo(context, SendDiagnostics.Devices) assertEquals( "riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel; devices=Smart Card Reader 1)", @@ -306,7 +312,7 @@ class UserAgentUtilTest { mockPackageManagerHandling() mockUsbManagerHandling() - val result = getAppInfo(context, SendDiagnostics.NFC, buildVersionProvider) + val result = getAppInfo(context, SendDiagnostics.NFC) assertEquals( "riadigidoc/1.2.3.1234 (schema=1; os=Android ${Build.VERSION.RELEASE}; lang=en; devicetype=mobile/$expectedDeviceModel; nfc=true)", @@ -314,11 +320,11 @@ class UserAgentUtilTest { ) } - private fun mockPackageManagerHandling(sdkInt: Int = Build.VERSION.SDK_INT) { + private fun mockPackageManagerHandling() { `when`(context.packageManager).thenReturn(packageManager) `when`(context.packageName).thenReturn("App") - `when`(packageManager.getPackageInfo(anyString(), anyInt())).thenReturn(packageInfo) - `when`(buildVersionProvider.getSDKInt()).thenReturn(sdkInt) + `when`(packageManager.getPackageInfo(anyString(), any())) + .thenReturn(packageInfo) } private fun mockUsbManagerHandling(devices: HashMap = hashMapOf()) { diff --git a/smart-id-lib/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/smart-id-lib/src/main/res/mipmap-anydpi/ic_launcher.xml similarity index 100% rename from smart-id-lib/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to smart-id-lib/src/main/res/mipmap-anydpi/ic_launcher.xml diff --git a/utils-lib/src/main/kotlin/ee/ria/DigiDoc/utilsLib/container/ContainerUtil.kt b/utils-lib/src/main/kotlin/ee/ria/DigiDoc/utilsLib/container/ContainerUtil.kt index 367912c27..224324582 100644 --- a/utils-lib/src/main/kotlin/ee/ria/DigiDoc/utilsLib/container/ContainerUtil.kt +++ b/utils-lib/src/main/kotlin/ee/ria/DigiDoc/utilsLib/container/ContainerUtil.kt @@ -351,7 +351,8 @@ object ContainerUtil { // Remove app from "Share" and "Open with" menu val excludedExtraComponents = ArrayList() val packageManager: PackageManager = context.packageManager - val resolveInfos: List = packageManager.queryIntentActivities(shareIntent, 0) + val resolveInfos: List = + packageManager.queryIntentActivities(shareIntent, PackageManager.ResolveInfoFlags.of(0L)) val appPackageName = context.packageName resolveInfos.forEach { resolveInfo ->