Add support for a localPermissionsManager (#628)

This commit is contained in:
David Perez 2024-01-15 18:09:13 -06:00 committed by Álison Fernandes
parent f0e2548f65
commit ff9c4ecb67
9 changed files with 22 additions and 16 deletions

View file

@ -1,4 +1,4 @@
package com.x8bit.bitwarden.ui.platform.base.util
package com.x8bit.bitwarden.ui.platform.manager.permissions
import androidx.activity.compose.ManagedActivityResultLauncher
import androidx.compose.runtime.Composable

View file

@ -1,4 +1,4 @@
package com.x8bit.bitwarden.ui.platform.base.util
package com.x8bit.bitwarden.ui.platform.manager.permissions
import android.app.Activity
import android.content.pm.PackageManager

View file

@ -22,6 +22,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManagerImpl
/**
* The overall application theme. This can be configured to support a [darkTheme] and
@ -66,6 +68,7 @@ fun BitwardenTheme(
CompositionLocalProvider(
LocalNonMaterialColors provides nonMaterialColors,
LocalNonMaterialTypography provides nonMaterialTypography,
LocalPermissionsManager provides PermissionsManagerImpl(context as Activity),
) {
// Set overall theme based on color scheme and typography settings
MaterialTheme(
@ -152,6 +155,13 @@ private fun lightColorScheme(context: Context): ColorScheme =
private fun Int.toColor(context: Context): Color =
Color(context.getColor(this))
/**
* Provides access to non material theme typography throughout the app.
*/
val LocalPermissionsManager: ProvidableCompositionLocal<PermissionsManager> = compositionLocalOf {
error("CompositionLocal LocalPermissionsManager not present")
}
/**
* Provides access to non material theme typography throughout the app.
*/

View file

@ -12,7 +12,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.PermissionsManager
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
import com.x8bit.bitwarden.ui.platform.components.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.BitwardenMultiSelectButton
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCardTypeHandlers

View file

@ -1,6 +1,5 @@
package com.x8bit.bitwarden.ui.vault.feature.addedit
import android.app.Activity
import android.widget.Toast
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.imePadding
@ -20,8 +19,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
import com.x8bit.bitwarden.ui.platform.base.util.PermissionsManager
import com.x8bit.bitwarden.ui.platform.base.util.PermissionsManagerImpl
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.platform.components.BasicDialogState
import com.x8bit.bitwarden.ui.platform.components.BitwardenBasicDialog
@ -32,6 +29,8 @@ import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.BitwardenTextButton
import com.x8bit.bitwarden.ui.platform.components.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
import com.x8bit.bitwarden.ui.platform.theme.LocalPermissionsManager
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCardTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCommonHandlers
@ -48,8 +47,7 @@ fun VaultAddEditScreen(
onNavigateBack: () -> Unit,
onNavigateToQrCodeScanScreen: () -> Unit,
viewModel: VaultAddEditViewModel = hiltViewModel(),
permissionsManager: PermissionsManager =
PermissionsManagerImpl(LocalContext.current as Activity),
permissionsManager: PermissionsManager = LocalPermissionsManager.current,
onNavigateToManualCodeEntryScreen: () -> Unit,
onNavigateToGeneratorModal: (GeneratorMode.Modal) -> Unit,
) {

View file

@ -1,7 +1,6 @@
package com.x8bit.bitwarden.ui.vault.feature.manualcodeentry
import android.Manifest
import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.provider.Settings
@ -34,14 +33,14 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
import com.x8bit.bitwarden.ui.platform.base.util.IntentHandler
import com.x8bit.bitwarden.ui.platform.base.util.PermissionsManager
import com.x8bit.bitwarden.ui.platform.base.util.PermissionsManagerImpl
import com.x8bit.bitwarden.ui.platform.base.util.toAnnotatedString
import com.x8bit.bitwarden.ui.platform.components.BitwardenFilledTonalButton
import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
import com.x8bit.bitwarden.ui.platform.theme.LocalPermissionsManager
/**
* The screen to manually add a totp code.
@ -54,8 +53,7 @@ fun ManualCodeEntryScreen(
onNavigateToQrCodeScreen: () -> Unit,
viewModel: ManualCodeEntryViewModel = hiltViewModel(),
intentHandler: IntentHandler = IntentHandler(LocalContext.current),
permissionsManager: PermissionsManager =
PermissionsManagerImpl(LocalContext.current as Activity),
permissionsManager: PermissionsManager = LocalPermissionsManager.current,
) {
var shouldShowPermissionDialog by rememberSaveable { mutableStateOf(false) }
val state by viewModel.stateFlow.collectAsStateWithLifecycle()

View file

@ -1,4 +1,4 @@
package com.x8bit.bitwarden.ui.platform.base.util
package com.x8bit.bitwarden.ui.platform.manager.permissions
import androidx.activity.compose.ManagedActivityResultLauncher
import androidx.compose.runtime.Composable

View file

@ -29,8 +29,8 @@ import androidx.compose.ui.test.performTextInput
import androidx.compose.ui.test.performTouchInput
import com.x8bit.bitwarden.data.platform.repository.util.bufferedMutableSharedFlow
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
import com.x8bit.bitwarden.ui.platform.base.util.FakePermissionManager
import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
import com.x8bit.bitwarden.ui.util.isProgressBar
import com.x8bit.bitwarden.ui.util.onAllNodesWithContentDescriptionAfterScroll

View file

@ -17,8 +17,8 @@ import androidx.compose.ui.test.performTextInput
import androidx.test.core.app.ApplicationProvider
import com.x8bit.bitwarden.data.platform.repository.util.bufferedMutableSharedFlow
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
import com.x8bit.bitwarden.ui.platform.base.util.FakePermissionManager
import com.x8bit.bitwarden.ui.platform.base.util.IntentHandler
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
import io.mockk.every
import io.mockk.mockk
import io.mockk.slot