mirror of
https://github.com/bitwarden/android.git
synced 2026-04-28 20:08:27 -05:00
[PM-21676] Relocate Authenticator local manager providers (#5206)
This commit is contained in:
@@ -15,6 +15,7 @@ import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.bitwarden.authenticator.data.platform.util.isSuspicious
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalManagerProvider
|
||||
import com.bitwarden.authenticator.ui.platform.feature.debugmenu.manager.DebugMenuLaunchManager
|
||||
import com.bitwarden.authenticator.ui.platform.feature.debugmenu.navigateToDebugMenuScreen
|
||||
import com.bitwarden.authenticator.ui.platform.feature.rootnav.RootNavScreen
|
||||
@@ -53,14 +54,16 @@ class MainActivity : AppCompatActivity() {
|
||||
val state by mainViewModel.stateFlow.collectAsStateWithLifecycle()
|
||||
val navController = rememberNavController()
|
||||
observeViewModelEvents(navController)
|
||||
AuthenticatorTheme(
|
||||
theme = state.theme,
|
||||
) {
|
||||
RootNavScreen(
|
||||
navController = navController,
|
||||
onSplashScreenRemoved = { shouldShowSplashScreen = false },
|
||||
onExitApplication = { finishAffinity() },
|
||||
)
|
||||
LocalManagerProvider {
|
||||
AuthenticatorTheme(
|
||||
theme = state.theme,
|
||||
) {
|
||||
RootNavScreen(
|
||||
navController = navController,
|
||||
onSplashScreenRemoved = { shouldShowSplashScreen = false },
|
||||
onExitApplication = { finishAffinity() },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@ import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenBasicD
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenLoadingDialog
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.LoadingDialogState
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalBiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalBiometricsManager
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.util.asText
|
||||
|
||||
|
||||
@@ -70,10 +70,10 @@ import com.bitwarden.authenticator.ui.platform.components.header.BitwardenListHe
|
||||
import com.bitwarden.authenticator.ui.platform.components.model.IconResource
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.components.util.rememberVectorPainter
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalPermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalPermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.Typography
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
|
||||
@@ -44,10 +44,10 @@ import com.bitwarden.authenticator.ui.platform.components.dialog.LoadingDialogSt
|
||||
import com.bitwarden.authenticator.ui.platform.components.field.BitwardenPasswordField
|
||||
import com.bitwarden.authenticator.ui.platform.components.field.BitwardenTextField
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalPermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalPermissionsManager
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
@file:OmitFromCoverage
|
||||
|
||||
package com.bitwarden.authenticator.ui.platform.composition
|
||||
|
||||
import android.app.Activity
|
||||
import androidx.activity.compose.LocalActivity
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocal
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.ProvidableCompositionLocal
|
||||
import androidx.compose.runtime.compositionLocalOf
|
||||
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManagerImpl
|
||||
import com.bitwarden.authenticator.ui.platform.manager.exit.ExitManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.exit.ExitManagerImpl
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManagerImpl
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManagerImpl
|
||||
import com.bitwarden.core.annotation.OmitFromCoverage
|
||||
|
||||
/**
|
||||
* Helper [Composable] that wraps a [content] and provides manager classes via [CompositionLocal].
|
||||
*/
|
||||
@Composable
|
||||
fun LocalManagerProvider(
|
||||
activity: Activity = requireNotNull(LocalActivity.current),
|
||||
content: @Composable () -> Unit,
|
||||
) {
|
||||
CompositionLocalProvider(
|
||||
LocalPermissionsManager provides PermissionsManagerImpl(activity),
|
||||
LocalIntentManager provides IntentManagerImpl(activity),
|
||||
LocalExitManager provides ExitManagerImpl(activity),
|
||||
LocalBiometricsManager provides BiometricsManagerImpl(activity),
|
||||
content = content,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the intent manager throughout the app.
|
||||
*/
|
||||
val LocalIntentManager: ProvidableCompositionLocal<IntentManager> = compositionLocalOf {
|
||||
error("CompositionLocal LocalIntentManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the biometrics manager throughout the app.
|
||||
*/
|
||||
val LocalBiometricsManager: ProvidableCompositionLocal<BiometricsManager> = compositionLocalOf {
|
||||
error("CompositionLocal BiometricsManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the exit manager throughout the app.
|
||||
*/
|
||||
val LocalExitManager: ProvidableCompositionLocal<ExitManager> = compositionLocalOf {
|
||||
error("CompositionLocal ExitManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the permission manager throughout the app.
|
||||
*/
|
||||
val LocalPermissionsManager: ProvidableCompositionLocal<PermissionsManager> = compositionLocalOf {
|
||||
error("CompositionLocal LocalPermissionsManager not present")
|
||||
}
|
||||
@@ -58,12 +58,12 @@ import com.bitwarden.authenticator.ui.platform.components.row.BitwardenTextRow
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.components.toggle.BitwardenWideSwitch
|
||||
import com.bitwarden.authenticator.ui.platform.components.util.rememberVectorPainter
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalBiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption
|
||||
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.AuthenticatorTheme
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalBiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.util.displayLabel
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
|
||||
@@ -38,9 +38,9 @@ import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenTwoBut
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.LoadingDialogState
|
||||
import com.bitwarden.authenticator.ui.platform.components.dropdown.BitwardenMultiSelectButton
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.feature.settings.export.model.ExportVaultFormat
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.util.displayLabel
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
@@ -35,8 +35,8 @@ import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenTwoBut
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.LoadingDialogState
|
||||
import com.bitwarden.authenticator.ui.platform.components.dropdown.BitwardenMultiSelectButton
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.composition.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.LocalIntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.util.displayLabel
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
@@ -20,14 +20,6 @@ import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalView
|
||||
import androidx.core.view.WindowCompat
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManagerImpl
|
||||
import com.bitwarden.authenticator.ui.platform.manager.exit.ExitManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.exit.ExitManagerImpl
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManagerImpl
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManagerImpl
|
||||
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
|
||||
/**
|
||||
@@ -47,7 +39,6 @@ fun AuthenticatorTheme(
|
||||
|
||||
// Get the current scheme
|
||||
val context = LocalContext.current
|
||||
val activity = context as Activity
|
||||
val colorScheme = when {
|
||||
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
|
||||
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
|
||||
@@ -79,10 +70,6 @@ fun AuthenticatorTheme(
|
||||
CompositionLocalProvider(
|
||||
LocalNonMaterialColors provides nonMaterialColors,
|
||||
LocalNonMaterialTypography provides nonMaterialTypography,
|
||||
LocalPermissionsManager provides PermissionsManagerImpl(activity),
|
||||
LocalIntentManager provides IntentManagerImpl(context),
|
||||
LocalExitManager provides ExitManagerImpl(activity),
|
||||
LocalBiometricsManager provides BiometricsManagerImpl(activity),
|
||||
) {
|
||||
// Set overall theme based on color scheme and typography settings
|
||||
MaterialTheme(
|
||||
@@ -171,34 +158,6 @@ private fun lightColorScheme(context: Context): ColorScheme =
|
||||
private fun Int.toColor(context: Context): Color =
|
||||
Color(context.getColor(this))
|
||||
|
||||
/**
|
||||
* Provides access to the biometrics manager throughout the app.
|
||||
*/
|
||||
val LocalBiometricsManager: ProvidableCompositionLocal<BiometricsManager> = compositionLocalOf {
|
||||
error("CompositionLocal BiometricsManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the exit manager throughout the app.
|
||||
*/
|
||||
val LocalExitManager: ProvidableCompositionLocal<ExitManager> = compositionLocalOf {
|
||||
error("CompositionLocal ExitManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the intent manager throughout the app.
|
||||
*/
|
||||
val LocalIntentManager: ProvidableCompositionLocal<IntentManager> = compositionLocalOf {
|
||||
error("CompositionLocal LocalIntentManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the permission manager throughout the app.
|
||||
*/
|
||||
val LocalPermissionsManager: ProvidableCompositionLocal<PermissionsManager> = compositionLocalOf {
|
||||
error("CompositionLocal LocalPermissionsManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to non material theme typography throughout the app.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user