diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f47f76b2ed..21221c8a78 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -37,14 +37,15 @@ android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" + android:intentMatchingFlags="enforceIntentFilter" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/LaunchTheme" - android:intentMatchingFlags="enforceIntentFilter" + tools:ignore="CredentialDependency" tools:replace="appComponentFactory" - tools:targetApi="33"> + tools:targetApi="36"> - when (event) { - is MainEvent.CompleteAccessibilityAutofill -> { - handleCompleteAccessibilityAutofill(event) - } - - is MainEvent.CompleteAutofill -> handleCompleteAutofill(event) - MainEvent.Recreate -> handleRecreate() - MainEvent.NavigateToDebugMenu -> navController.navigateToDebugMenuScreen() - is MainEvent.ShowToast -> { - Toast - .makeText( - baseContext, - event.message.invoke(resources), - Toast.LENGTH_SHORT, - ) - .show() - } - - is MainEvent.UpdateAppLocale -> { - AppCompatDelegate.setApplicationLocales( - LocaleListCompat.forLanguageTags(event.localeName), - ) - } - - is MainEvent.UpdateAppTheme -> { - AppCompatDelegate.setDefaultNightMode(event.osTheme) - } - } - } + SetupEventsEffect(navController = navController) + val state by mainViewModel.stateFlow.collectAsStateWithLifecycle() updateScreenCapture(isScreenCaptureAllowed = state.isScreenCaptureAllowed) LocalManagerProvider(featureFlagsState = state.featureFlagsState) { ObserveScreenDataEffect( onDataUpdate = remember(mainViewModel) { - { - mainViewModel.trySendAction( - MainAction.ResumeScreenDataReceived(it), - ) - } + { mainViewModel.trySendAction(MainAction.ResumeScreenDataReceived(it)) } }, ) BitwardenTheme( @@ -148,11 +112,7 @@ class MainActivity : AppCompatActivity() { override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) - mainViewModel.trySendAction( - action = MainAction.ReceiveNewIntent( - intent = intent, - ), - ) + mainViewModel.trySendAction(action = MainAction.ReceiveNewIntent(intent = intent)) } override fun onResume() { @@ -199,6 +159,34 @@ class MainActivity : AppCompatActivity() { .takeIf { it } ?: super.dispatchKeyEvent(event) + @Composable + private fun SetupEventsEffect(navController: NavController) { + EventsEffect(viewModel = mainViewModel) { event -> + when (event) { + is MainEvent.CompleteAccessibilityAutofill -> { + handleCompleteAccessibilityAutofill(event) + } + + is MainEvent.CompleteAutofill -> handleCompleteAutofill(event) + MainEvent.Recreate -> handleRecreate() + MainEvent.NavigateToDebugMenu -> navController.navigateToDebugMenuScreen() + is MainEvent.ShowToast -> { + Toast + .makeText(baseContext, event.message.invoke(resources), Toast.LENGTH_SHORT) + .show() + } + + is MainEvent.UpdateAppLocale -> { + AppCompatDelegate.setApplicationLocales( + LocaleListCompat.forLanguageTags(event.localeName), + ) + } + + is MainEvent.UpdateAppTheme -> AppCompatDelegate.setDefaultNightMode(event.osTheme) + } + } + } + private fun sendOpenDebugMenuEvent() { mainViewModel.trySendAction(MainAction.OpenDebugMenu) } diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/util/CipherViewExtensions.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/util/CipherViewExtensions.kt index f46c7f2ea8..a98c3d39c4 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/util/CipherViewExtensions.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/util/CipherViewExtensions.kt @@ -28,6 +28,7 @@ import com.x8bit.bitwarden.ui.vault.model.VaultLinkedFieldType import com.x8bit.bitwarden.ui.vault.model.findVaultCardBrandWithNameOrNull import kotlinx.collections.immutable.ImmutableList import java.time.Clock +import java.util.Locale private const val LAST_UPDATED_DATE_TIME_PATTERN: String = "M/d/yy hh:mm a" private const val FIDO2_CREDENTIAL_CREATION_DATE_PATTERN: String = "M/d/yy" @@ -332,7 +333,9 @@ private val IdentityView.identityName: String? get() = listOfNotNull( title ?.lowercase() - ?.capitalize(), + ?.replaceFirstChar { + if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() + }, firstName, middleName, lastName, diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 4ae391cbeb..67cf371647 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -8,7 +8,7 @@ false true true - default + always @dimen/dialogDimBackgroundAmount diff --git a/authenticator/src/main/AndroidManifest.xml b/authenticator/src/main/AndroidManifest.xml index 3e1aa450ce..16b2c1432c 100644 --- a/authenticator/src/main/AndroidManifest.xml +++ b/authenticator/src/main/AndroidManifest.xml @@ -19,13 +19,13 @@ android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" + android:intentMatchingFlags="enforceIntentFilter" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:taskAffinity="" android:theme="@style/LaunchTheme" - android:intentMatchingFlags="enforceIntentFilter" - tools:targetApi="31"> + tools:targetApi="36">