mirror of
https://github.com/bitwarden/android.git
synced 2026-03-09 03:33:36 -05:00
[PM-21357] Migrate ModifierExtensions to ui module (#5215)
This commit is contained in:
@@ -21,11 +21,11 @@ import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.authenticator.feature.search.handlers.SearchHandlers
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.bottomDivider
|
||||
import com.bitwarden.authenticator.ui.platform.components.appbar.BitwardenSearchTopAppBar
|
||||
import com.bitwarden.authenticator.ui.platform.components.appbar.NavigationIcon
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.base.util.bottomDivider
|
||||
|
||||
/**
|
||||
* The search screen for authenticator items.
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
package com.bitwarden.authenticator.ui.platform.base.util
|
||||
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.DividerDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.drawWithCache
|
||||
import androidx.compose.ui.draw.scale
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.compose.ui.platform.LocalLayoutDirection
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.bitwarden.annotation.OmitFromCoverage
|
||||
import com.bitwarden.authenticator.ui.platform.util.isPortrait
|
||||
|
||||
/**
|
||||
* This is a [Modifier] extension for drawing a divider at the bottom of the composable.
|
||||
*/
|
||||
@Stable
|
||||
@Composable
|
||||
fun Modifier.bottomDivider(
|
||||
paddingStart: Dp = 0.dp,
|
||||
paddingEnd: Dp = 0.dp,
|
||||
thickness: Dp = DividerDefaults.Thickness,
|
||||
color: Color = DividerDefaults.color,
|
||||
enabled: Boolean = true,
|
||||
): Modifier = drawWithCache {
|
||||
onDrawWithContent {
|
||||
drawContent()
|
||||
if (enabled) {
|
||||
drawLine(
|
||||
color = color,
|
||||
strokeWidth = thickness.toPx(),
|
||||
start = Offset(
|
||||
x = paddingStart.toPx(),
|
||||
y = size.height - thickness.toPx() / 2,
|
||||
),
|
||||
end = Offset(
|
||||
x = size.width - paddingEnd.toPx(),
|
||||
y = size.height - thickness.toPx() / 2,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a [Modifier] extension for mirroring the contents of a composable when the layout
|
||||
* direction is set to [LayoutDirection.Rtl]. Primarily used for directional icons, such as the
|
||||
* up button and chevrons.
|
||||
*/
|
||||
@Stable
|
||||
@Composable
|
||||
fun Modifier.mirrorIfRtl(): Modifier =
|
||||
if (LocalLayoutDirection.current == LayoutDirection.Rtl) {
|
||||
scale(scaleX = -1f, scaleY = 1f)
|
||||
} else {
|
||||
this
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a [Modifier] extension for ensuring that the content uses the standard horizontal margin.
|
||||
*/
|
||||
@OmitFromCoverage
|
||||
@Stable
|
||||
@Composable
|
||||
fun Modifier.standardHorizontalMargin(
|
||||
portrait: Dp = 16.dp,
|
||||
landscape: Dp = 48.dp,
|
||||
): Modifier {
|
||||
val config = LocalConfiguration.current
|
||||
return this.padding(horizontal = if (config.isPortrait) portrait else landscape)
|
||||
}
|
||||
@@ -25,7 +25,7 @@ import androidx.compose.ui.semantics.semantics
|
||||
import androidx.compose.ui.semantics.testTag
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.mirrorIfRtl
|
||||
import com.bitwarden.ui.platform.base.util.mirrorIfRtl
|
||||
|
||||
/**
|
||||
* Represents a Bitwarden styled [TopAppBar] that assumes the following components:
|
||||
|
||||
@@ -20,8 +20,8 @@ import androidx.compose.ui.semantics.testTag
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.mirrorIfRtl
|
||||
import com.bitwarden.authenticator.ui.platform.theme.AuthenticatorTheme
|
||||
import com.bitwarden.ui.platform.base.util.mirrorIfRtl
|
||||
|
||||
/**
|
||||
* Represents a Bitwarden styled [TopAppBar] that assumes the following components:
|
||||
|
||||
@@ -11,10 +11,10 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.mirrorIfRtl
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenTwoButtonDialog
|
||||
import com.bitwarden.authenticator.ui.platform.components.util.rememberVectorPainter
|
||||
import com.bitwarden.authenticator.ui.platform.theme.AuthenticatorTheme
|
||||
import com.bitwarden.ui.platform.base.util.mirrorIfRtl
|
||||
|
||||
/**
|
||||
* Represents a row of text that can be clicked on and contains an external link.
|
||||
|
||||
@@ -22,7 +22,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.data.platform.manager.model.FlagKey
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.standardHorizontalMargin
|
||||
import com.bitwarden.authenticator.ui.platform.components.appbar.BitwardenTopAppBar
|
||||
import com.bitwarden.authenticator.ui.platform.components.appbar.NavigationIcon
|
||||
import com.bitwarden.authenticator.ui.platform.components.button.BitwardenFilledButton
|
||||
@@ -33,6 +32,7 @@ import com.bitwarden.authenticator.ui.platform.components.util.rememberVectorPai
|
||||
import com.bitwarden.authenticator.ui.platform.feature.debugmenu.components.ListItemContent
|
||||
import com.bitwarden.authenticator.ui.platform.theme.AuthenticatorTheme
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.base.util.standardHorizontalMargin
|
||||
|
||||
/**
|
||||
* Top level screen for the debug menu.
|
||||
|
||||
@@ -48,7 +48,6 @@ import androidx.core.net.toUri
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.mirrorIfRtl
|
||||
import com.bitwarden.authenticator.ui.platform.components.appbar.BitwardenMediumTopAppBar
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenSelectionDialog
|
||||
import com.bitwarden.authenticator.ui.platform.components.dialog.BitwardenSelectionRow
|
||||
@@ -66,6 +65,7 @@ import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.AuthenticatorTheme
|
||||
import com.bitwarden.authenticator.ui.platform.util.displayLabel
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.base.util.mirrorIfRtl
|
||||
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
import com.bitwarden.ui.util.Text
|
||||
import com.bitwarden.ui.util.asText
|
||||
|
||||
@@ -38,25 +38,19 @@ import androidx.compose.ui.platform.LocalConfiguration
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.bitwarden.authenticator.R
|
||||
import com.bitwarden.authenticator.ui.platform.base.util.standardHorizontalMargin
|
||||
import com.bitwarden.authenticator.ui.platform.components.button.BitwardenFilledTonalButton
|
||||
import com.bitwarden.authenticator.ui.platform.components.button.BitwardenTextButton
|
||||
import com.bitwarden.authenticator.ui.platform.components.scaffold.BitwardenScaffold
|
||||
import com.bitwarden.authenticator.ui.platform.components.util.rememberVectorPainter
|
||||
import com.bitwarden.authenticator.ui.platform.util.isPortrait
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.base.util.standardHorizontalMargin
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* The custom horizontal margin that is specific to this screen.
|
||||
*/
|
||||
private val LANDSCAPE_HORIZONTAL_MARGIN: Dp = 48.dp
|
||||
|
||||
/**
|
||||
* Top level composable for the tutorial screen.
|
||||
*/
|
||||
@@ -144,7 +138,7 @@ private fun TutorialScreenContent(
|
||||
TutorialScreenLandscape(
|
||||
state = state.pages[index],
|
||||
modifier = Modifier
|
||||
.standardHorizontalMargin(landscape = LANDSCAPE_HORIZONTAL_MARGIN)
|
||||
.standardHorizontalMargin()
|
||||
.statusBarsPadding(),
|
||||
)
|
||||
}
|
||||
@@ -165,7 +159,7 @@ private fun TutorialScreenContent(
|
||||
label = state.actionButtonText,
|
||||
onClick = { continueClick(state.index) },
|
||||
modifier = Modifier
|
||||
.standardHorizontalMargin(landscape = LANDSCAPE_HORIZONTAL_MARGIN)
|
||||
.standardHorizontalMargin()
|
||||
.fillMaxWidth(),
|
||||
)
|
||||
|
||||
@@ -174,7 +168,7 @@ private fun TutorialScreenContent(
|
||||
label = stringResource(id = R.string.skip),
|
||||
onClick = skipClick,
|
||||
modifier = Modifier
|
||||
.standardHorizontalMargin(landscape = LANDSCAPE_HORIZONTAL_MARGIN)
|
||||
.standardHorizontalMargin()
|
||||
.fillMaxWidth()
|
||||
.alpha(if (state.isLastPage) 0f else 1f)
|
||||
.padding(bottom = 12.dp),
|
||||
|
||||
Reference in New Issue
Block a user