From 9bd5b9022b7bd25f23d293b22c7646ade9b8b99e Mon Sep 17 00:00:00 2001 From: Marten Rebane Date: Thu, 16 Apr 2026 17:57:21 +0300 Subject: [PATCH] Fix resetting screenshot settings --- .../fragment/screen/AdvancedSettingsScreen.kt | 42 +++++++------------ .../shared/SharedSettingsViewModel.kt | 32 ++++++++++++-- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AdvancedSettingsScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AdvancedSettingsScreen.kt index f9a73639..2d287130 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AdvancedSettingsScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AdvancedSettingsScreen.kt @@ -51,7 +51,6 @@ 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 @@ -105,18 +104,9 @@ fun AdvancedSettingsScreen( val isSettingsMenuBottomSheetVisible = rememberSaveable { mutableStateOf(false) } - val getIsRoleAskingEnabled = sharedSettingsViewModel.dataStore::getSettingsAskRoleAndAddress - val setIsRoleAskingEnabled = sharedSettingsViewModel.dataStore::setSettingsAskRoleAndAddress - - val getAllowScreenshotsEnabled = sharedSettingsViewModel.dataStore::getSettingsAllowScreenshots - val setAllowScreenshotsEnabled = sharedSettingsViewModel.dataStore::setSettingsAllowScreenshots - - val getOpenAllFileTypesEnabled = sharedSettingsViewModel.dataStore::getSettingsOpenAllFileTypes - val setOpenAllFileTypesEnabled = sharedSettingsViewModel.dataStore::setSettingsOpenAllFileTypes - - var checkedAskRoleAndAddress by remember { mutableStateOf(getIsRoleAskingEnabled()) } - var checkedAllowScreenshots by remember { mutableStateOf(getAllowScreenshotsEnabled()) } - var checkedAllowOpeningAllFileTypes by remember { mutableStateOf(getOpenAllFileTypesEnabled()) } + val checkedAskRoleAndAddress by sharedSettingsViewModel.enableRoleAsking.collectAsState() + val checkedAllowScreenshots by sharedSettingsViewModel.allowScreenshots.collectAsState() + val checkedAllowOpeningAllFileTypes by sharedSettingsViewModel.enableOpenAllFileTypes.collectAsState() val askRoleAndAddressTitleText = stringResource(R.string.main_settings_ask_role_and_address_title) val allowScreenshotsTitleText = stringResource(R.string.main_settings_allow_screenshots_title) @@ -191,8 +181,7 @@ fun AdvancedSettingsScreen( modifier .fillMaxWidth() .clickable { - checkedAskRoleAndAddress = !checkedAskRoleAndAddress - setIsRoleAskingEnabled(checkedAskRoleAndAddress) + sharedSettingsViewModel.setSettingsAskRoleAndAddress(!checkedAskRoleAndAddress) }, verticalAlignment = Alignment.CenterVertically, ) { @@ -213,8 +202,7 @@ fun AdvancedSettingsScreen( }, checked = checkedAskRoleAndAddress, onCheckedChange = { - checkedAskRoleAndAddress = it - setIsRoleAskingEnabled(it) + sharedSettingsViewModel.setSettingsAskRoleAndAddress(it) }, ) } @@ -224,8 +212,7 @@ fun AdvancedSettingsScreen( modifier .fillMaxWidth() .clickable { - checkedAllowScreenshots = !checkedAllowScreenshots - setAllowScreenshotsEnabled(checkedAllowScreenshots) + sharedSettingsViewModel.setAllowScreenshots(!checkedAllowScreenshots) secureUtil.markAsSecure(activity) }, verticalAlignment = Alignment.CenterVertically, @@ -247,8 +234,7 @@ fun AdvancedSettingsScreen( }, checked = checkedAllowScreenshots, onCheckedChange = { - checkedAllowScreenshots = it - setAllowScreenshotsEnabled(it) + sharedSettingsViewModel.setAllowScreenshots(it) secureUtil.markAsSecure(activity) }, ) @@ -259,8 +245,7 @@ fun AdvancedSettingsScreen( modifier .fillMaxWidth() .clickable { - checkedAllowOpeningAllFileTypes = !checkedAllowOpeningAllFileTypes - setOpenAllFileTypesEnabled(checkedAllowOpeningAllFileTypes) + sharedSettingsViewModel.setSettingsOpenAllFileTypes(!checkedAllowOpeningAllFileTypes) sharedSettingsViewModel.recreateActivity() }, verticalAlignment = Alignment.CenterVertically, @@ -282,8 +267,7 @@ fun AdvancedSettingsScreen( }, checked = checkedAllowOpeningAllFileTypes, onCheckedChange = { - checkedAllowOpeningAllFileTypes = it - setOpenAllFileTypesEnabled(it) + sharedSettingsViewModel.setSettingsOpenAllFileTypes(it) sharedSettingsViewModel.recreateActivity() }, ) @@ -325,10 +309,12 @@ fun AdvancedSettingsScreen( verticalAlignment = Alignment.CenterVertically, ) { TextButton(onClick = { - checkedAskRoleAndAddress = false - checkedAllowScreenshots = false - checkedAllowOpeningAllFileTypes = true + sharedSettingsViewModel.setSettingsAskRoleAndAddress(false) + sharedSettingsViewModel.setAllowScreenshots(false) + sharedSettingsViewModel.setSettingsOpenAllFileTypes(true) sharedSettingsViewModel.resetToDefaultSettings() + secureUtil.markAsSecure(activity) + sharedSettingsViewModel.recreateActivity() showMessage(context, R.string.main_settings_use_default_settings_message) }) { Text( diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedSettingsViewModel.kt b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedSettingsViewModel.kt index fafa8c80..4a8d1453 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedSettingsViewModel.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedSettingsViewModel.kt @@ -57,6 +57,8 @@ import ee.ria.DigiDoc.utilsLib.signing.CertificateUtil import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import okhttp3.OkHttpClient import okhttp3.Request @@ -126,6 +128,15 @@ class SharedSettingsViewModel private val _errorState = MutableLiveData(null) val errorState: LiveData = _errorState + private val _allowScreenshots = MutableStateFlow(dataStore.getSettingsAllowScreenshots()) + val allowScreenshots = _allowScreenshots.asStateFlow() + + private val _enableRoleAsking = MutableStateFlow(dataStore.getSettingsAskRoleAndAddress()) + val enableRoleAsking = _enableRoleAsking.asStateFlow() + + private val _enableOpenAllFileTypes = MutableStateFlow(dataStore.getSettingsOpenAllFileTypes()) + val enableOpenAllFileTypes = _enableOpenAllFileTypes.asStateFlow() + init { CoroutineScope(Main).launch { configurationRepository.observeConfigurationUpdates { newConfig -> @@ -134,6 +145,21 @@ class SharedSettingsViewModel } } + fun setSettingsAskRoleAndAddress(value: Boolean) { + dataStore.setSettingsAskRoleAndAddress(value) + _enableRoleAsking.value = value + } + + fun setAllowScreenshots(value: Boolean) { + dataStore.setSettingsAllowScreenshots(value) + _allowScreenshots.value = value + } + + fun setSettingsOpenAllFileTypes(value: Boolean) { + dataStore.setSettingsOpenAllFileTypes(value) + _enableOpenAllFileTypes.value = value + } + fun resetToDefaultSettings() { resetSigningSettings() resetRightsSettings() @@ -188,8 +214,8 @@ class SharedSettingsViewModel } private fun resetRightsSettings() { - dataStore.setSettingsOpenAllFileTypes(true) - dataStore.setSettingsAllowScreenshots(false) + setSettingsOpenAllFileTypes(true) + setAllowScreenshots(false) } private fun resetSigningSettings() { @@ -197,7 +223,7 @@ class SharedSettingsViewModel dataStore.setTsaSetting(TSASetting.DEFAULT) dataStore.setSettingsUUID(DEFAULT_UUID_VALUE) dataStore.setSettingsTSAUrl(updatedConfiguration.value?.tsaUrl ?: "") - dataStore.setSettingsAskRoleAndAddress(false) + setSettingsAskRoleAndAddress(false) dataStore.setIsTsaCertificateViewVisible(false) val certFile = FileUtil.getCertFile(context, dataStore.getTSACertName(), DIR_TSA_CERT)