BIT-2270: Use rememberVectorPainter method to fix icon recomposition (#1295)

This commit is contained in:
Caleb Derosier 2024-04-22 10:59:05 -06:00 committed by Álison Fernandes
parent ae38b5d7ed
commit 0f1a8678ea
87 changed files with 249 additions and 228 deletions

View file

@ -36,7 +36,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.CustomAccessibilityAction
import androidx.compose.ui.semantics.customActions
@ -77,6 +76,7 @@ import com.x8bit.bitwarden.ui.platform.components.field.BitwardenPasswordField
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.theme.clickableSpanStyle
@ -170,7 +170,7 @@ fun CreateAccountScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.create_account),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(CloseClick) }

View file

@ -21,7 +21,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -39,6 +38,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -111,7 +111,7 @@ fun EnterpriseSignOnScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.app_name),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(EnterpriseSignOnAction.CloseButtonClick) }

View file

@ -21,7 +21,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.KeyboardType
@ -38,6 +37,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays the about self-hosted/custom environment screen.
@ -83,7 +83,7 @@ fun EnvironmentScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.settings),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(EnvironmentAction.CloseClick) }

View file

@ -38,7 +38,6 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.KeyboardType
@ -63,6 +62,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenSelectionR
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.util.displayLabel
import kotlinx.collections.immutable.toImmutableList
@ -227,7 +227,7 @@ private fun LandingScreenContent(
Spacer(modifier = Modifier.height(topPadding))
Image(
painter = painterResource(id = R.drawable.logo),
painter = rememberVectorPainter(id = R.drawable.logo),
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.primary),
contentDescription = null,
modifier = Modifier
@ -381,7 +381,7 @@ private fun EnvironmentSelector(
modifier = Modifier.padding(end = 8.dp),
)
Icon(
painter = painterResource(id = R.drawable.ic_region_select_dropdown),
painter = rememberVectorPainter(id = R.drawable.ic_region_select_dropdown),
contentDescription = stringResource(id = R.string.region),
tint = MaterialTheme.colorScheme.primary,
)

View file

@ -29,7 +29,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.SoftwareKeyboardController
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -52,6 +51,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenPasswordField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenClickableText
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import kotlinx.collections.immutable.persistentListOf
@ -122,7 +122,7 @@ fun LoginScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.app_name),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(LoginAction.CloseButtonClick) }
@ -275,7 +275,7 @@ private fun LoginScreenContent(
if (state.shouldShowLoginWithDevice) {
BitwardenOutlinedButtonWithIcon(
label = stringResource(id = R.string.log_in_with_device),
icon = painterResource(id = R.drawable.ic_device),
icon = rememberVectorPainter(id = R.drawable.ic_device),
onClick = onLoginWithDeviceClick,
modifier = Modifier
.testTag("LogInWithAnotherDeviceButton")
@ -288,7 +288,7 @@ private fun LoginScreenContent(
BitwardenOutlinedButtonWithIcon(
label = stringResource(id = R.string.log_in_sso),
icon = painterResource(id = R.drawable.ic_briefcase),
icon = rememberVectorPainter(id = R.drawable.ic_briefcase),
onClick = onSingleSignOnClick,
modifier = Modifier
.testTag("LogInWithSsoButton")

View file

@ -29,7 +29,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -46,6 +45,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenClickableText
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialColors
@ -98,7 +98,7 @@ fun LoginWithDeviceScreen(
BitwardenTopAppBar(
title = state.toolbarTitle(),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(LoginWithDeviceAction.CloseButtonClick) }

View file

@ -15,7 +15,6 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.KeyboardType
@ -33,6 +32,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* The top level composable for the Login screen.
@ -96,7 +96,7 @@ fun MasterPasswordHintScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.password_hint),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(MasterPasswordHintAction.CloseClick) }

View file

@ -23,7 +23,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
@ -44,6 +43,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenClickableText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* The top level composable for the Reset Password screen.
@ -109,7 +109,7 @@ private fun TrustedDeviceScaffold(
title = stringResource(id = R.string.log_in_initiated),
scrollBehavior = scrollBehavior,
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = handlers.onBackClick,
),

View file

@ -55,6 +55,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenPasswordField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.composition.LocalNfcManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -130,7 +131,7 @@ fun TwoFactorLoginScreen(
BitwardenTopAppBar(
title = state.authMethod.title(),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(TwoFactorLoginAction.CloseButtonClick) }

View file

@ -8,7 +8,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.TextStyle
@ -20,6 +19,7 @@ import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.toSafeOverlayColor
import com.x8bit.bitwarden.ui.platform.base.util.toUnscaledTextUnit
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays an icon representing a Bitwarden account with the user's initials superimposed.
@ -35,7 +35,7 @@ fun BitwardenAccountActionItem(
color: Color,
onClick: () -> Unit,
) {
val iconPainter = painterResource(id = R.drawable.ic_account_initials_container)
val iconPainter = rememberVectorPainter(id = R.drawable.ic_account_initials_container)
val contentDescription = stringResource(id = R.string.account)
IconButton(

View file

@ -36,7 +36,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.testTag
@ -51,6 +50,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenSelectionDialo
import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenBasicDialogRow
import com.x8bit.bitwarden.ui.platform.components.model.AccountSummary
import com.x8bit.bitwarden.ui.platform.components.scrim.BitwardenAnimatedScrim
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.vault.util.iconRes
import com.x8bit.bitwarden.ui.vault.feature.vault.util.iconTestTag
import com.x8bit.bitwarden.ui.vault.feature.vault.util.initials
@ -266,7 +266,7 @@ private fun AccountSummaryItem(
contentAlignment = Alignment.Center,
) {
Icon(
painter = painterResource(id = R.drawable.ic_account_initials_container),
painter = rememberVectorPainter(id = R.drawable.ic_account_initials_container),
contentDescription = null,
tint = accountSummary.avatarColor,
modifier = Modifier.size(40.dp),
@ -313,7 +313,7 @@ private fun AccountSummaryItem(
Spacer(modifier = Modifier.width(16.dp))
Icon(
painter = painterResource(id = accountSummary.iconRes),
painter = rememberVectorPainter(id = accountSummary.iconRes),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier
@ -372,7 +372,7 @@ private fun AddAccountItem(
.then(modifier),
) {
Icon(
painter = painterResource(id = R.drawable.ic_plus),
painter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier

View file

@ -5,12 +5,12 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
@ -29,12 +29,12 @@ fun BitwardenPlaceholderAccountActionItem(
.semantics(mergeDescendants = true) { testTag = "CurrentActiveAccount" },
) {
Icon(
painter = painterResource(id = R.drawable.ic_account_initials_container),
painter = rememberVectorPainter(id = R.drawable.ic_account_initials_container),
contentDescription = null,
tint = MaterialTheme.colorScheme.secondaryContainer,
)
Icon(
painter = painterResource(id = R.drawable.ic_dots),
painter = rememberVectorPainter(id = R.drawable.ic_dots),
contentDescription = stringResource(id = R.string.account),
tint = MaterialTheme.colorScheme.onSecondaryContainer,
)

View file

@ -13,10 +13,10 @@ import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* A custom Bitwarden-themed medium top app bar with support for actions.
@ -76,7 +76,7 @@ private fun BitwardenMediumTopAppBar_preview() {
actions = {
IconButton(onClick = { }) {
Icon(
painter = painterResource(id = R.drawable.ic_more),
painter = rememberVectorPainter(id = R.drawable.ic_more),
contentDescription = "",
tint = MaterialTheme.colorScheme.onSurface,
)

View file

@ -20,12 +20,12 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.ImeAction
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.mirrorIfRtl
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Represents a Bitwarden styled [TopAppBar] that assumes the following components:
@ -85,7 +85,7 @@ fun BitwardenSearchTopAppBar(
onClick = { onSearchTermChange("") },
) {
Icon(
painter = painterResource(id = R.drawable.ic_close),
painter = rememberVectorPainter(id = R.drawable.ic_close),
contentDescription = stringResource(id = R.string.clear),
)
}

View file

@ -14,13 +14,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.mirrorIfRtl
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -125,7 +125,7 @@ private fun BitwardenTopAppBar_preview() {
rememberTopAppBarState(),
),
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = { },
),

View file

@ -18,7 +18,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -27,6 +26,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
@ -58,7 +58,7 @@ fun BitwardenOverflowActionItem(
modifier = Modifier.testTag("HeaderBarOptionsButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_more),
painter = rememberVectorPainter(id = R.drawable.ic_more),
contentDescription = stringResource(id = R.string.more),
)
}

View file

@ -5,10 +5,10 @@ import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Represents the Bitwarden search action item.
@ -30,7 +30,7 @@ fun BitwardenSearchActionItem(
modifier = Modifier.testTag("SearchButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_search),
painter = rememberVectorPainter(id = R.drawable.ic_search),
contentDescription = contentDescription,
)
}

View file

@ -10,11 +10,11 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -65,7 +65,7 @@ private fun BitwardenFilledButtonWithIcon_preview() {
BitwardenTheme {
BitwardenFilledButtonWithIcon(
label = "Test Button",
icon = painterResource(id = R.drawable.ic_tooltip),
icon = rememberVectorPainter(id = R.drawable.ic_tooltip),
onClick = {},
isEnabled = true,
)

View file

@ -10,10 +10,10 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -66,7 +66,7 @@ private fun BitwardenFilledTonalButtonWithIcon_preview() {
BitwardenTheme {
BitwardenFilledTonalButtonWithIcon(
label = "Sample Text",
icon = painterResource(id = R.drawable.ic_tooltip),
icon = rememberVectorPainter(id = R.drawable.ic_tooltip),
onClick = {},
modifier = Modifier.padding(horizontal = 16.dp),
)

View file

@ -10,11 +10,11 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Represents a Bitwarden-styled filled [OutlinedButton] with an icon.
@ -63,7 +63,7 @@ fun BitwardenOutlinedButtonWithIcon(
private fun BitwardenOutlinedButtonWithIcon_preview_isEnabled() {
BitwardenOutlinedButtonWithIcon(
label = "Label",
icon = painterResource(id = R.drawable.ic_light_bulb),
icon = rememberVectorPainter(id = R.drawable.ic_light_bulb),
onClick = {},
isEnabled = true,
)
@ -74,7 +74,7 @@ private fun BitwardenOutlinedButtonWithIcon_preview_isEnabled() {
private fun BitwardenOutlinedButtonWithIcon_preview_isNotEnabled() {
BitwardenOutlinedButtonWithIcon(
label = "Label",
icon = painterResource(id = R.drawable.ic_light_bulb),
icon = rememberVectorPainter(id = R.drawable.ic_light_bulb),
onClick = {},
isEnabled = false,
)

View file

@ -21,7 +21,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.clearAndSetSemantics
@ -31,6 +30,7 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.semantics.testTagsAsResourceId
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.util.orNow
import com.x8bit.bitwarden.ui.platform.util.toFormattedPattern
import java.time.Instant
@ -90,7 +90,7 @@ fun BitwardenDateSelectButton(
enabled = shouldShowDialog,
trailingIcon = {
Icon(
painter = painterResource(id = R.drawable.ic_region_select_dropdown),
painter = rememberVectorPainter(id = R.drawable.ic_region_select_dropdown),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
)

View file

@ -30,7 +30,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -39,6 +38,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* A custom composable representing a dialog that displays the time picker dialog.
@ -98,7 +98,7 @@ fun BitwardenTimePickerDialog(
@Suppress("MaxLineLength")
Icon(
modifier = Modifier.size(24.dp),
painter = painterResource(id = R.drawable.ic_keyboard),
painter = rememberVectorPainter(id = R.drawable.ic_keyboard),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
contentDescription = stringResource(
// TODO: Get our own string for this (BIT-1405)

View file

@ -14,12 +14,12 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.role
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.util.orNow
import com.x8bit.bitwarden.ui.platform.util.toFormattedPattern
import java.time.ZonedDateTime
@ -77,7 +77,7 @@ fun BitwardenTimeSelectButton(
enabled = shouldShowDialog,
trailingIcon = {
Icon(
painter = painterResource(id = R.drawable.ic_region_select_dropdown),
painter = rememberVectorPainter(id = R.drawable.ic_region_select_dropdown),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
)

View file

@ -21,7 +21,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.CustomAccessibilityAction
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.clearAndSetSemantics
@ -36,6 +35,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.asText
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenSelectionDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenSelectionRow
import com.x8bit.bitwarden.ui.platform.components.model.TooltipData
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
@ -118,7 +118,7 @@ fun BitwardenMultiSelectButton(
modifier = Modifier.size(16.dp),
) {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip_small),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip_small),
contentDescription = it.contentDescription,
)
}
@ -130,7 +130,7 @@ fun BitwardenMultiSelectButton(
enabled = shouldShowDialog,
trailingIcon = {
Icon(
painter = painterResource(id = R.drawable.ic_region_select_dropdown),
painter = rememberVectorPainter(id = R.drawable.ic_region_select_dropdown),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
)

View file

@ -18,7 +18,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -29,6 +28,7 @@ import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.nonLetterColorVisualTransformation
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Represents a Bitwarden-styled password field that hoists show/hide password state to the caller.
@ -109,7 +109,7 @@ fun BitwardenPasswordField(
val contentDescriptionRes = if (showPassword) R.string.hide else R.string.show
Icon(
modifier = Modifier.semantics { showPasswordTestTag?.let { testTag = it } },
painter = painterResource(id = painterRes),
painter = rememberVectorPainter(id = painterRes),
contentDescription = stringResource(id = contentDescriptionRes),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
)

View file

@ -10,7 +10,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
@ -18,6 +17,7 @@ import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithResource
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -134,7 +134,7 @@ private fun BitwardenPasswordFieldWithActions_preview() {
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_check_mark),
iconPainter = rememberVectorPainter(id = R.drawable.ic_check_mark),
contentDescription = "",
),
onClick = {},

View file

@ -8,7 +8,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.TextStyle
@ -17,6 +16,7 @@ import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenRowOfActions
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -92,11 +92,11 @@ private fun BitwardenTextFieldWithActions_preview() {
onValueChange = {},
actions = {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
contentDescription = "Action 1",
)
Icon(
painter = painterResource(id = R.drawable.ic_generator),
painter = rememberVectorPainter(id = R.drawable.ic_generator),
contentDescription = "Action 2",
)
},

View file

@ -4,11 +4,11 @@ import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi
import com.bumptech.glide.integration.compose.GlideImage
import com.bumptech.glide.integration.compose.placeholder
import com.x8bit.bitwarden.ui.platform.components.model.IconData
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Represents a Bitwarden icon that is either locally loaded or loaded using glide.
@ -40,7 +40,7 @@ fun BitwardenIcon(
is IconData.Local -> {
Icon(
painter = painterResource(id = iconData.iconRes),
painter = rememberVectorPainter(id = iconData.iconRes),
contentDescription = contentDescription,
tint = tint,
modifier = modifier,

View file

@ -6,11 +6,11 @@ import androidx.compose.material3.IconButtonColors
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -52,7 +52,7 @@ private fun BitwardenIconButtonWithResource_preview() {
BitwardenTheme {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_tooltip),
iconPainter = rememberVectorPainter(id = R.drawable.ic_tooltip),
contentDescription = "Sample Icon",
),
onClick = {},

View file

@ -15,7 +15,6 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
@ -23,6 +22,7 @@ import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider
import com.x8bit.bitwarden.ui.platform.base.util.mirrorIfRtl
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -90,7 +90,7 @@ fun BitwardenGroupItem(
)
Icon(
painter = painterResource(id = R.drawable.ic_navigate_next),
painter = rememberVectorPainter(id = R.drawable.ic_navigate_next),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier
@ -107,7 +107,7 @@ private fun BitwardenGroupItem_preview() {
BitwardenGroupItem(
label = "Sample Label",
supportingLabel = "5",
startIcon = painterResource(id = R.drawable.ic_send_text),
startIcon = rememberVectorPainter(id = R.drawable.ic_send_text),
startIconTestTag = "Test Tag",
onClick = {},
)

View file

@ -24,7 +24,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -37,6 +36,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenBasicDialo
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIcon
import com.x8bit.bitwarden.ui.platform.components.model.IconData
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
@ -140,7 +140,7 @@ fun BitwardenListItem(
modifier = Modifier.semantics { optionsTestTag?.let { testTag = it } },
) {
Icon(
painter = painterResource(id = R.drawable.ic_more_horizontal),
painter = rememberVectorPainter(id = R.drawable.ic_more_horizontal),
contentDescription = stringResource(id = R.string.options),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(24.dp),

View file

@ -4,8 +4,8 @@ import android.os.Parcelable
import androidx.annotation.DrawableRes
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import kotlinx.parcelize.Parcelize
/**
@ -48,7 +48,7 @@ fun List<IconRes>.toIconResources(): List<IconResource> = this.map { it.toIconRe
@Composable
fun IconRes.toIconResource(): IconResource =
IconResource(
iconPainter = painterResource(id = iconRes),
iconPainter = rememberVectorPainter(id = iconRes),
contentDescription = contentDescription(),
testTag = testTag,
)

View file

@ -8,12 +8,12 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.mirrorIfRtl
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -52,7 +52,7 @@ fun BitwardenExternalLinkRow(
) {
Icon(
modifier = Modifier.mirrorIfRtl(),
painter = painterResource(id = R.drawable.ic_external_link),
painter = rememberVectorPainter(id = R.drawable.ic_external_link),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
)

View file

@ -9,10 +9,10 @@ import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -44,12 +44,12 @@ private fun BitwardenRowOfIconButtons_preview() {
BitwardenTheme {
BitwardenRowOfActions {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
contentDescription = "Icon 1",
modifier = Modifier.size(24.dp),
)
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
contentDescription = "Icon 2",
modifier = Modifier.size(24.dp),
)

View file

@ -2,7 +2,6 @@ package com.x8bit.bitwarden.ui.platform.components.stepper
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.KeyboardType
@ -12,6 +11,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.orNullIfBlank
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextFieldWithActions
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithResource
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays a stepper that allows the user to increment and decrement an int value.
@ -58,7 +58,7 @@ fun BitwardenStepper(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_minus),
iconPainter = rememberVectorPainter(id = R.drawable.ic_minus),
contentDescription = "\u2212",
),
onClick = {
@ -76,7 +76,7 @@ fun BitwardenStepper(
)
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_plus),
iconPainter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = "+",
),
onClick = {

View file

@ -14,7 +14,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.toggleableState
@ -22,6 +21,7 @@ import androidx.compose.ui.state.ToggleableState
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenRowOfActions
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -79,7 +79,7 @@ private fun BitwardenSwitchWithActions_preview() {
actions = {
IconButton(onClick = {}) {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
tint = MaterialTheme.colorScheme.onSurface,
contentDescription = stringResource(
id = R.string.master_password_re_prompt_help,

View file

@ -0,0 +1,19 @@
package com.x8bit.bitwarden.ui.platform.components.util
import androidx.annotation.DrawableRes
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.VectorPainter
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.res.vectorResource
/**
* Returns a [VectorPainter] built from the given [id] to circumvent issues with painter resources
* recomposing unnecessarily.
*/
@Composable
fun rememberVectorPainter(
@DrawableRes id: Int,
): VectorPainter = rememberVectorPainter(
image = ImageVector.vectorResource(id),
)

View file

@ -15,11 +15,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* The empty state for the search screen.
@ -35,7 +35,7 @@ fun SearchEmptyContent(
horizontalAlignment = Alignment.CenterHorizontally,
) {
Icon(
painter = painterResource(id = R.drawable.ic_search),
painter = rememberVectorPainter(id = R.drawable.ic_search),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier

View file

@ -16,7 +16,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -35,6 +34,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.feature.search.handlers.SearchHandlers
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -88,7 +88,7 @@ fun SearchScreen(
onSearchTermChange = searchHandlers.onSearchTermChange,
scrollBehavior = scrollBehavior,
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = searchHandlers.onBackClick,
),

View file

@ -25,7 +25,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
@ -38,6 +37,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider
import com.x8bit.bitwarden.ui.platform.base.util.mirrorIfRtl
import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenMediumTopAppBar
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -128,7 +128,7 @@ private fun SettingsRow(
color = MaterialTheme.colorScheme.onSurface,
)
Icon(
painter = painterResource(id = R.drawable.ic_navigate_next),
painter = rememberVectorPainter(id = R.drawable.ic_navigate_next),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier

View file

@ -30,7 +30,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.semantics
@ -48,6 +47,7 @@ import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenExternalLinkRow
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
@ -106,7 +106,7 @@ fun AboutScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.about),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(AboutAction.BackClick) }
@ -274,7 +274,7 @@ private fun CopyRow(
color = MaterialTheme.colorScheme.onSurface,
)
Icon(
painter = painterResource(id = R.drawable.ic_copy),
painter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
)

View file

@ -28,7 +28,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -57,6 +56,7 @@ import com.x8bit.bitwarden.ui.platform.components.row.BitwardenTextRow
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenPolicyWarningText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalBiometricsManager
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.composition.LocalPermissionsManager
@ -141,7 +141,7 @@ fun AccountSecurityScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.account_security),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(AccountSecurityAction.BackClick) }

View file

@ -27,7 +27,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -44,6 +43,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenMasterPasswordDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays the delete account screen.
@ -112,7 +112,7 @@ fun DeleteAccountScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.delete_account),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(DeleteAccountAction.CloseClick) }
@ -129,7 +129,7 @@ fun DeleteAccountScreen(
) {
Spacer(modifier = Modifier.height(8.dp))
Icon(
painter = painterResource(id = R.drawable.ic_warning),
painter = rememberVectorPainter(id = R.drawable.ic_warning),
contentDescription = null,
tint = MaterialTheme.colorScheme.error,
modifier = Modifier.padding(horizontal = 16.dp),

View file

@ -14,7 +14,6 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
import com.x8bit.bitwarden.R
@ -25,6 +24,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays the delete account confirmation screen.
@ -116,7 +116,7 @@ private fun DeleteAccountConfirmationScaffold(
BitwardenTopAppBar(
title = stringResource(id = R.string.verification_code),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = onCloseClick,
)

View file

@ -24,7 +24,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -42,6 +41,7 @@ import com.x8bit.bitwarden.ui.platform.components.content.BitwardenLoadingConten
import com.x8bit.bitwarden.ui.platform.components.dialog.BasicDialogState
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalExitManager
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialColors
@ -100,7 +100,7 @@ fun LoginApprovalScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.log_in_requested),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(LoginApprovalAction.CloseClick) }

View file

@ -38,7 +38,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -54,6 +53,7 @@ import com.x8bit.bitwarden.ui.platform.components.content.BitwardenErrorContent
import com.x8bit.bitwarden.ui.platform.components.content.BitwardenLoadingContent
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialColors
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialTypography
@ -112,7 +112,7 @@ fun PendingRequestsScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.pending_log_in_requests),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(PendingRequestsAction.CloseClick) }
@ -221,7 +221,7 @@ private fun PendingRequestsContent(
BitwardenFilledTonalButtonWithIcon(
label = stringResource(id = R.string.decline_all_requests),
icon = painterResource(id = R.drawable.ic_trash),
icon = rememberVectorPainter(id = R.drawable.ic_trash),
onClick = { shouldShowDeclineAllRequestsConfirm = true },
modifier = Modifier
.testTag("DeclineAllRequestsButton")
@ -318,7 +318,7 @@ private fun PendingRequestsEmpty(
Spacer(modifier = Modifier.height(16.dp))
Spacer(modifier = Modifier.weight(1f))
Image(
painter = painterResource(id = R.drawable.ic_pending_requests),
painter = rememberVectorPainter(id = R.drawable.ic_pending_requests),
contentDescription = null,
modifier = Modifier
.padding(vertical = 16.dp)

View file

@ -20,7 +20,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -37,6 +36,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenSelectionR
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenTextRow
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage
import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
import com.x8bit.bitwarden.ui.platform.util.displayLabel
@ -67,7 +67,7 @@ fun AppearanceScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.appearance),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(AppearanceAction.BackClick) }

View file

@ -25,7 +25,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -43,6 +42,7 @@ import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenTextRow
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.feature.settings.autofill.util.displayLabel
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -102,7 +102,7 @@ fun AutoFillScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.autofill),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(AutoFillAction.BackClick) }

View file

@ -35,7 +35,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -47,6 +46,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider
import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays the block auto-fill screen.
@ -120,7 +120,7 @@ fun BlockAutoFillScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.block_auto_fill),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(BlockAutoFillAction.BackClick) }
@ -141,7 +141,7 @@ fun BlockAutoFillScreen(
modifier = Modifier.testTag("AddItemButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_plus),
painter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = stringResource(id = R.string.add_item),
tint = MaterialTheme.colorScheme.onPrimaryContainer,
)
@ -224,7 +224,7 @@ private fun BlockAutoFillNoItems(
) {
Box(contentAlignment = Alignment.Center) {
Icon(
painter = painterResource(
painter = rememberVectorPainter(
id = R.drawable.ic_blocked_uri_background,
),
contentDescription = null,
@ -232,7 +232,7 @@ private fun BlockAutoFillNoItems(
)
Icon(
painter = painterResource(
painter = rememberVectorPainter(
id = R.drawable.ic_blocked_uri_foreground,
),
contentDescription = null,
@ -300,7 +300,7 @@ private fun BlockAutoFillListItem(
color = MaterialTheme.colorScheme.onSurface,
)
Icon(
painter = painterResource(id = R.drawable.ic_edit_alt),
painter = rememberVectorPainter(id = R.drawable.ic_edit_alt),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier.size(24.dp),

View file

@ -27,7 +27,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.KeyboardType
@ -49,6 +48,7 @@ import com.x8bit.bitwarden.ui.platform.components.dropdown.BitwardenMultiSelectB
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenPasswordField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenPolicyWarningText
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.feature.settings.exportvault.model.ExportVaultFormat
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -156,7 +156,7 @@ fun ExportVaultScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.export_vault),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(ExportVaultAction.CloseButtonClick) }

View file

@ -27,7 +27,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -41,6 +40,7 @@ import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.content.BitwardenErrorContent
import com.x8bit.bitwarden.ui.platform.components.content.BitwardenLoadingContent
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.feature.settings.folders.model.FolderDisplayItem
/**
@ -79,7 +79,7 @@ fun FoldersScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.folders),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(FoldersAction.CloseButtonClick) }
@ -97,7 +97,7 @@ fun FoldersScreen(
.navigationBarsPadding(),
) {
Icon(
painter = painterResource(id = R.drawable.ic_plus),
painter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = stringResource(id = R.string.add_item),
tint = MaterialTheme.colorScheme.onPrimaryContainer,
)

View file

@ -19,7 +19,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -41,6 +40,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialo
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import kotlinx.collections.immutable.persistentListOf
/**
@ -99,7 +99,7 @@ fun FolderAddEditScreen(
BitwardenTopAppBar(
title = state.screenDisplayName.invoke(),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(FolderAddEditAction.CloseClick) }

View file

@ -25,7 +25,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -44,6 +43,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenSelectionR
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenTextRow
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Displays the other screen.
@ -75,7 +75,7 @@ fun OtherScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.other),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(OtherAction.BackClick) }

View file

@ -16,7 +16,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.core.net.toUri
@ -28,6 +27,7 @@ import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenExternalLinkRow
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenTextRow
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -71,7 +71,7 @@ fun VaultSettingsScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.vault),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(VaultSettingsAction.BackClick) }

View file

@ -29,7 +29,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextOverflow
@ -49,6 +48,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.max
import com.x8bit.bitwarden.ui.platform.base.util.toDp
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.scrim.BitwardenAnimatedScrim
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.feature.search.model.SearchType
import com.x8bit.bitwarden.ui.platform.feature.settings.SETTINGS_GRAPH_ROUTE
import com.x8bit.bitwarden.ui.platform.feature.settings.navigateToSettingsGraph
@ -282,7 +282,7 @@ private fun VaultBottomAppBar(
NavigationBarItem(
icon = {
Icon(
painter = painterResource(
painter = rememberVectorPainter(
id = if (isSelected) {
destination.iconResSelected
} else {

View file

@ -40,7 +40,6 @@ import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -72,6 +71,7 @@ import com.x8bit.bitwarden.ui.platform.components.stepper.BitwardenStepper
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenPolicyWarningText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.nonLetterColorVisualTransformation
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
@ -276,7 +276,7 @@ private fun ModalAppBar(
) {
BitwardenTopAppBar(
title = stringResource(id = R.string.generator),
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = onCloseClick,
scrollBehavior = scrollBehavior,
@ -395,7 +395,7 @@ private fun GeneratedStringItem(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy),
),
onClick = onCopyClick,
@ -403,7 +403,7 @@ private fun GeneratedStringItem(
)
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_generator),
iconPainter = rememberVectorPainter(id = R.drawable.ic_generator),
contentDescription = stringResource(id = R.string.generate_password),
),
onClick = onRegenerateClick,

View file

@ -18,7 +18,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
@ -27,6 +26,7 @@ import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.withLineBreaksAtWidth
import com.x8bit.bitwarden.ui.platform.base.util.withVisualTransformation
import com.x8bit.bitwarden.ui.platform.components.util.nonLetterColorVisualTransformation
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialTypography
@ -86,7 +86,7 @@ fun PasswordHistoryListItem(
modifier = Modifier.testTag("CopyPasswordValueButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_copy),
painter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy),
)
}

View file

@ -27,7 +27,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -39,6 +38,7 @@ import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.appbar.action.BitwardenOverflowActionItem
import com.x8bit.bitwarden.ui.platform.components.appbar.action.OverflowMenuItemData
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import kotlinx.collections.immutable.persistentListOf
/**
@ -73,7 +73,7 @@ fun PasswordHistoryScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.password_history),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(PasswordHistoryAction.CloseClick) }

View file

@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -20,6 +19,7 @@ import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.listitem.BitwardenGroupItem
import com.x8bit.bitwarden.ui.platform.components.model.IconData
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenPolicyWarningText
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.tools.feature.send.handlers.SendHandlers
/**
@ -59,7 +59,7 @@ fun SendContent(
BitwardenGroupItem(
label = stringResource(id = R.string.type_text),
supportingLabel = state.textTypeCount.toString(),
startIcon = painterResource(id = R.drawable.ic_send_text),
startIcon = rememberVectorPainter(id = R.drawable.ic_send_text),
onClick = sendHandlers.onTextTypeClick,
modifier = Modifier
.fillMaxWidth()
@ -72,7 +72,7 @@ fun SendContent(
BitwardenGroupItem(
label = stringResource(id = R.string.type_file),
supportingLabel = state.fileTypeCount.toString(),
startIcon = painterResource(id = R.drawable.ic_send_file),
startIcon = rememberVectorPainter(id = R.drawable.ic_send_file),
onClick = sendHandlers.onFileTypeClick,
modifier = Modifier
.fillMaxWidth()

View file

@ -7,7 +7,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import com.x8bit.bitwarden.R
@ -17,6 +16,7 @@ import com.x8bit.bitwarden.ui.platform.components.listitem.SelectionItemData
import com.x8bit.bitwarden.ui.platform.components.model.IconData
import com.x8bit.bitwarden.ui.platform.components.model.IconRes
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
import com.x8bit.bitwarden.ui.platform.util.persistentListOfNotNull
import kotlinx.collections.immutable.toPersistentList
@ -62,7 +62,7 @@ fun SendListItem(
trailingLabelIcons = trailingLabelIcons
.map {
IconResource(
iconPainter = painterResource(it.iconRes),
iconPainter = rememberVectorPainter(it.iconRes),
contentDescription = it.contentDescription(),
)
}

View file

@ -22,7 +22,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.core.net.toUri
@ -41,6 +40,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.feature.search.model.SearchType
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -164,7 +164,7 @@ fun SendScreen(
modifier = Modifier.testTag("AddItemButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_plus),
painter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = stringResource(id = R.string.add_item),
tint = MaterialTheme.colorScheme.onPrimaryContainer,
)

View file

@ -30,10 +30,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clipToBounds
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.button.BitwardenFilledTonalButton
@ -46,6 +44,7 @@ import com.x8bit.bitwarden.ui.platform.components.segment.SegmentedButtonState
import com.x8bit.bitwarden.ui.platform.components.stepper.BitwardenStepper
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenPolicyWarningText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialTypography
import com.x8bit.bitwarden.ui.tools.feature.send.addsend.handlers.AddSendHandlers
@ -314,11 +313,13 @@ private fun AddSendOptions(
modifier = Modifier.padding(end = 8.dp),
)
Icon(
painter = if (isExpanded) {
painterResource(R.drawable.ic_expand_up)
} else {
painterResource(R.drawable.ic_expand_down)
},
painter = rememberVectorPainter(
if (isExpanded) {
R.drawable.ic_expand_up
} else {
R.drawable.ic_expand_down
},
),
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
)

View file

@ -18,7 +18,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.hilt.navigation.compose.hiltViewModel
@ -38,6 +37,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalExitManager
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.composition.LocalPermissionsManager
@ -131,7 +131,7 @@ fun AddSendScreen(
BitwardenTopAppBar(
title = state.screenDisplayName(),
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(AddSendAction.CloseClick) }

View file

@ -12,7 +12,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.input.KeyboardType
@ -24,6 +23,7 @@ import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitchWithActions
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.components.collectionItemsSelector
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCardTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCommonHandlers
@ -212,7 +212,7 @@ fun LazyListScope.vaultAddEditCardItems(
actions = {
IconButton(onClick = commonHandlers.onTooltipClick) {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
tint = MaterialTheme.colorScheme.onSurface,
contentDescription = stringResource(
id = R.string.master_password_re_prompt_help,

View file

@ -9,7 +9,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import com.x8bit.bitwarden.R
@ -23,6 +22,7 @@ import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithRe
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.row.BitwardenRowOfActions
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldAction
import com.x8bit.bitwarden.ui.vault.model.VaultLinkedFieldType
import kotlinx.collections.immutable.ImmutableList
@ -156,7 +156,7 @@ private fun CustomFieldBoolean(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_settings),
iconPainter = rememberVectorPainter(id = R.drawable.ic_settings),
contentDescription = stringResource(id = R.string.edit),
),
onClick = onEditValue,
@ -186,7 +186,7 @@ private fun CustomFieldHiddenField(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_settings),
iconPainter = rememberVectorPainter(id = R.drawable.ic_settings),
contentDescription = stringResource(id = R.string.edit),
),
onClick = onEditValue,
@ -215,7 +215,7 @@ private fun CustomFieldTextField(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_settings),
iconPainter = rememberVectorPainter(id = R.drawable.ic_settings),
contentDescription = stringResource(id = R.string.edit),
),
onClick = onEditValue,
@ -262,7 +262,7 @@ private fun CustomFieldLinkedField(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_settings),
iconPainter = rememberVectorPainter(id = R.drawable.ic_settings),
contentDescription = stringResource(id = R.string.edit),
),
onClick = onEditValue,

View file

@ -13,7 +13,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -23,6 +22,7 @@ import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitchWithActions
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.components.collectionItemsSelector
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCommonHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditIdentityTypeHandlers
@ -329,7 +329,7 @@ fun LazyListScope.vaultAddEditIdentityItems(
actions = {
IconButton(onClick = commonTypeHandlers.onTooltipClick) {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
tint = MaterialTheme.colorScheme.onSurface,
contentDescription = stringResource(
id = R.string.master_password_re_prompt_help,

View file

@ -16,7 +16,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -35,6 +34,7 @@ import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithRe
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitchWithActions
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.components.collectionItemsSelector
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCommonHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditLoginTypeHandlers
@ -119,7 +119,7 @@ fun LazyListScope.vaultAddEditLoginItems(
onClick = loginItemTypeHandlers.onClearTotpKeyClick,
) {
Icon(
painter = painterResource(id = R.drawable.ic_close),
painter = rememberVectorPainter(id = R.drawable.ic_close),
contentDescription = stringResource(id = R.string.delete),
)
}
@ -130,7 +130,7 @@ fun LazyListScope.vaultAddEditLoginItems(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy_totp),
),
onClick = {
@ -139,7 +139,7 @@ fun LazyListScope.vaultAddEditLoginItems(
)
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_camera),
iconPainter = rememberVectorPainter(id = R.drawable.ic_camera),
contentDescription = stringResource(id = R.string.camera),
),
onClick = onTotpSetupClick,
@ -152,7 +152,7 @@ fun LazyListScope.vaultAddEditLoginItems(
Spacer(modifier = Modifier.height(16.dp))
BitwardenFilledTonalButtonWithIcon(
label = stringResource(id = R.string.setup_totp),
icon = painterResource(id = R.drawable.ic_light_bulb),
icon = rememberVectorPainter(id = R.drawable.ic_light_bulb),
onClick = onTotpSetupClick,
modifier = Modifier
.testTag("SetupTotpButton")
@ -253,7 +253,7 @@ fun LazyListScope.vaultAddEditLoginItems(
actions = {
IconButton(onClick = commonActionHandler.onTooltipClick) {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
tint = MaterialTheme.colorScheme.onSurface,
contentDescription = stringResource(
id = R.string.master_password_re_prompt_help,
@ -385,7 +385,7 @@ private fun UsernameRow(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_generator),
iconPainter = rememberVectorPainter(id = R.drawable.ic_generator),
contentDescription = stringResource(id = R.string.generate_username),
),
onClick = {
@ -447,7 +447,7 @@ private fun PasswordRow(
) {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_check_mark),
iconPainter = rememberVectorPainter(id = R.drawable.ic_check_mark),
contentDescription = stringResource(id = R.string.check_password),
),
onClick = loginItemTypeHandlers.onPasswordCheckerClick,
@ -456,7 +456,7 @@ private fun PasswordRow(
)
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_generator),
iconPainter = rememberVectorPainter(id = R.drawable.ic_generator),
contentDescription = stringResource(id = R.string.generate_password),
),
onClick = {

View file

@ -17,7 +17,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.core.net.toUri
@ -39,6 +38,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalExitManager
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.composition.LocalPermissionsManager
@ -168,7 +168,7 @@ fun VaultAddEditScreen(
BitwardenTopAppBar(
title = state.screenDisplayName(),
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(VaultAddEditAction.Common.CloseClick) }

View file

@ -11,7 +11,6 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -21,6 +20,7 @@ import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitch
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenSwitchWithActions
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.components.collectionItemsSelector
import com.x8bit.bitwarden.ui.vault.feature.addedit.handlers.VaultAddEditCommonHandlers
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldType
@ -108,7 +108,7 @@ fun LazyListScope.vaultAddEditSecureNotesItems(
actions = {
IconButton(onClick = commonTypeHandlers.onTooltipClick) {
Icon(
painter = painterResource(id = R.drawable.ic_tooltip),
painter = rememberVectorPainter(id = R.drawable.ic_tooltip),
tint = MaterialTheme.colorScheme.onSurface,
contentDescription = stringResource(
id = R.string.master_password_re_prompt_help,

View file

@ -8,7 +8,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -19,6 +18,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenSelectionR
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextFieldWithActions
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithResource
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.UriItem
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.UriMatchDisplayType
import com.x8bit.bitwarden.ui.vault.feature.addedit.util.toDisplayMatchType
@ -44,7 +44,7 @@ fun VaultAddEditUriItem(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_settings),
iconPainter = rememberVectorPainter(id = R.drawable.ic_settings),
contentDescription = stringResource(id = R.string.options),
),
onClick = { shouldShowOptionsDialog = true },

View file

@ -23,7 +23,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.text.style.TextAlign
@ -34,6 +33,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider
import com.x8bit.bitwarden.ui.platform.components.button.BitwardenFilledTonalButton
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.attachments.handlers.AttachmentsHandlers
/**
@ -185,7 +185,7 @@ private fun AttachmentListEntry(
modifier = Modifier,
) {
Icon(
painter = painterResource(id = R.drawable.ic_trash),
painter = rememberVectorPainter(id = R.drawable.ic_trash),
contentDescription = stringResource(id = R.string.delete),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(24.dp),

View file

@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.hilt.navigation.compose.hiltViewModel
@ -30,6 +29,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.vault.feature.attachments.handlers.AttachmentsHandlers
@ -86,7 +86,7 @@ fun AttachmentsScreen(
title = stringResource(id = R.string.attachments),
scrollBehavior = scrollBehavior,
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = attachmentsHandlers.onBackClick,
),

View file

@ -18,7 +18,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
@ -26,6 +25,7 @@ import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider
import com.x8bit.bitwarden.ui.platform.components.button.BitwardenTextButton
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Attachment UI common for all item types.
@ -85,7 +85,7 @@ fun AttachmentItemContent(
modifier = Modifier,
) {
Icon(
painter = painterResource(id = R.drawable.ic_download),
painter = rememberVectorPainter(id = R.drawable.ic_download),
contentDescription = stringResource(id = R.string.download),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(24.dp),

View file

@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -20,6 +19,7 @@ import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithResource
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultCardItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultCommonItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.model.VaultCardBrand
@ -88,7 +88,7 @@ fun VaultItemCardContent(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy_number),
),
onClick = vaultCardItemTypeHandlers.onCopyNumberClick,
@ -150,7 +150,7 @@ fun VaultItemCardContent(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(
id = R.string.copy_security_code,
),

View file

@ -2,7 +2,6 @@ package com.x8bit.bitwarden.ui.vault.feature.item
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenPasswordFieldWithActions
@ -11,6 +10,7 @@ import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextFieldWithAc
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithResource
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.toggle.BitwardenWideSwitch
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
/**
* Custom Field UI common for all item types.
@ -49,7 +49,7 @@ fun CustomField(
if (customField.isCopyable) {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy),
),
onClick = {
@ -66,7 +66,7 @@ fun CustomField(
label = customField.name,
value = customField.vaultLinkedFieldType.label.invoke(),
leadingIconResource = IconResource(
iconPainter = painterResource(id = R.drawable.ic_linked),
iconPainter = rememberVectorPainter(id = R.drawable.ic_linked),
contentDescription = stringResource(id = R.string.field_type_linked),
),
onValueChange = { },
@ -88,7 +88,7 @@ fun CustomField(
if (customField.isCopyable) {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy),
),
onClick = { onCopyCustomTextField(customField.value) },

View file

@ -14,7 +14,6 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTag
@ -28,6 +27,7 @@ import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderText
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIconButtonWithResource
import com.x8bit.bitwarden.ui.platform.components.indicator.BitwardenCircularCountdownIndicator
import com.x8bit.bitwarden.ui.platform.components.model.IconResource
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialTypography
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultCommonItemTypeHandlers
import com.x8bit.bitwarden.ui.vault.feature.item.handlers.VaultLoginItemTypeHandlers
@ -311,7 +311,7 @@ private fun PasswordField(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_check_mark),
iconPainter = rememberVectorPainter(id = R.drawable.ic_check_mark),
contentDescription = stringResource(
id = R.string.check_known_data_breaches_for_this_password,
),
@ -321,7 +321,7 @@ private fun PasswordField(
)
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy_password),
),
onClick = onCopyPasswordClick,
@ -389,7 +389,7 @@ private fun TotpField(
)
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy_totp),
),
onClick = onCopyTotpClick,
@ -429,7 +429,7 @@ private fun UriField(
if (uriData.isLaunchable) {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_launch),
iconPainter = rememberVectorPainter(id = R.drawable.ic_launch),
contentDescription = stringResource(id = R.string.launch),
),
onClick = { onLaunchUriClick(uriData.uri) },
@ -439,7 +439,7 @@ private fun UriField(
if (uriData.isCopyable) {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy),
),
onClick = { onCopyUriClick(uriData.uri) },
@ -467,7 +467,7 @@ private fun UsernameField(
actions = {
BitwardenIconButtonWithResource(
iconRes = IconResource(
iconPainter = painterResource(id = R.drawable.ic_copy),
iconPainter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy_username),
),
onClick = onCopyUsernameClick,

View file

@ -23,7 +23,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -45,6 +44,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenMasterPassword
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.util.persistentListOfNotNull
@ -181,7 +181,7 @@ fun VaultItemScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.view_item),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(VaultItemAction.Common.CloseClick) }
@ -266,7 +266,7 @@ fun VaultItemScreen(
.padding(bottom = 16.dp),
) {
Icon(
painter = painterResource(id = R.drawable.ic_edit),
painter = rememberVectorPainter(id = R.drawable.ic_edit),
contentDescription = stringResource(id = R.string.edit_item),
)
}

View file

@ -16,7 +16,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.x8bit.bitwarden.R
@ -28,6 +27,7 @@ import com.x8bit.bitwarden.ui.platform.components.listitem.BitwardenListItem
import com.x8bit.bitwarden.ui.platform.components.listitem.SelectionItemData
import com.x8bit.bitwarden.ui.platform.components.model.toIconResources
import com.x8bit.bitwarden.ui.platform.components.text.BitwardenPolicyWarningText
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.model.ListingItemOverflowAction
import kotlinx.collections.immutable.toPersistentList
@ -129,7 +129,7 @@ fun VaultItemListingContent(
items(state.displayCollectionList) { collection ->
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_collection),
startIcon = rememberVectorPainter(id = R.drawable.ic_collection),
label = collection.name,
supportingLabel = collection.count.toString(),
onClick = { collectionClick(collection.id) },
@ -158,7 +158,7 @@ fun VaultItemListingContent(
items(state.displayFolderList) { folder ->
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_folder),
startIcon = rememberVectorPainter(id = R.drawable.ic_folder),
label = folder.name,
supportingLabel = folder.count.toString(),
onClick = { folderClick(folder.id) },

View file

@ -23,7 +23,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.core.net.toUri
@ -44,6 +43,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.feature.search.model.SearchType
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -191,7 +191,7 @@ private fun VaultItemListingScaffold(
title = state.appBarTitle(),
scrollBehavior = scrollBehavior,
navigationIcon = NavigationIcon(
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = vaultItemListingHandlers.backClick,
)
@ -233,7 +233,7 @@ private fun VaultItemListingScaffold(
modifier = Modifier.testTag("AddItemButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_plus),
painter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = stringResource(id = R.string.add_item),
)
}

View file

@ -25,7 +25,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
@ -38,6 +37,7 @@ import com.x8bit.bitwarden.ui.platform.components.button.BitwardenFilledTonalBut
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.field.BitwardenTextField
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.composition.LocalPermissionsManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
@ -113,7 +113,7 @@ fun ManualCodeEntryScreen(
topBar = {
BitwardenTopAppBar(
title = stringResource(id = R.string.authenticator_key_scanner),
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(ManualCodeEntryAction.CloseClick) }

View file

@ -14,7 +14,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.hilt.navigation.compose.hiltViewModel
@ -31,6 +30,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenBasicDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.model.VaultCollection
/**
@ -113,7 +113,7 @@ private fun VaultMoveToOrganizationScaffold(
BitwardenTopAppBar(
title = state.appBarText(),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = closeClick,
actions = {

View file

@ -44,7 +44,6 @@ import androidx.compose.ui.graphics.nativeCanvas
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.CustomAccessibilityAction
import androidx.compose.ui.semantics.semantics
@ -60,6 +59,7 @@ import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.LocalNonMaterialColors
import com.x8bit.bitwarden.ui.platform.theme.clickableSpanStyle
import com.x8bit.bitwarden.ui.vault.feature.qrcodescan.util.QrCodeAnalyzer
@ -115,7 +115,7 @@ fun QrCodeScanScreen(
topBar = {
BitwardenTopAppBar(
title = stringResource(id = R.string.scan_qr_code),
navigationIcon = painterResource(id = R.drawable.ic_close),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_close),
navigationIconContentDescription = stringResource(id = R.string.close),
onNavigationIconClick = remember(viewModel) {
{ viewModel.trySendAction(QrCodeScanAction.CloseClick) }

View file

@ -11,7 +11,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -19,6 +18,7 @@ import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderTextWithSupportLabel
import com.x8bit.bitwarden.ui.platform.components.listitem.BitwardenGroupItem
import com.x8bit.bitwarden.ui.platform.components.model.toIconResources
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.itemlisting.model.ListingItemOverflowAction
import com.x8bit.bitwarden.ui.vault.feature.vault.handlers.VaultHandlers
import kotlinx.collections.immutable.toPersistentList
@ -50,7 +50,7 @@ fun VaultContent(
item {
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.access_time),
startIcon = rememberVectorPainter(id = R.drawable.access_time),
label = stringResource(id = R.string.verification_codes),
supportingLabel = state.totpItemsCount.toString(),
onClick = vaultHandlers.verificationCodesClick,
@ -138,7 +138,7 @@ fun VaultContent(
item {
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_login_item),
startIcon = rememberVectorPainter(id = R.drawable.ic_login_item),
startIconTestTag = "LoginCipherIcon",
label = stringResource(id = R.string.type_login),
supportingLabel = state.loginItemsCount.toString(),
@ -153,7 +153,7 @@ fun VaultContent(
item {
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_card_item),
startIcon = rememberVectorPainter(id = R.drawable.ic_card_item),
startIconTestTag = "CardCipherIcon",
label = stringResource(id = R.string.type_card),
supportingLabel = state.cardItemsCount.toString(),
@ -168,7 +168,7 @@ fun VaultContent(
item {
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_identity_item),
startIcon = rememberVectorPainter(id = R.drawable.ic_identity_item),
startIconTestTag = "IdentityCipherIcon",
label = stringResource(id = R.string.type_identity),
supportingLabel = state.identityItemsCount.toString(),
@ -183,7 +183,7 @@ fun VaultContent(
item {
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_secure_note_item),
startIcon = rememberVectorPainter(id = R.drawable.ic_secure_note_item),
startIconTestTag = "SecureNoteCipherIcon",
label = stringResource(id = R.string.type_secure_note),
supportingLabel = state.secureNoteItemsCount.toString(),
@ -223,7 +223,7 @@ fun VaultContent(
items(state.folderItems) { folder ->
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_folder),
startIcon = rememberVectorPainter(id = R.drawable.ic_folder),
label = folder.name(),
supportingLabel = folder.itemCount.toString(),
onClick = { vaultHandlers.folderClick(folder) },
@ -308,7 +308,7 @@ fun VaultContent(
items(state.collectionItems) { collection ->
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_collection),
startIcon = rememberVectorPainter(id = R.drawable.ic_collection),
label = collection.name,
supportingLabel = collection.itemCount.toString(),
onClick = { vaultHandlers.collectionClick(collection) },
@ -347,7 +347,7 @@ fun VaultContent(
item {
BitwardenGroupItem(
startIcon = painterResource(id = R.drawable.ic_trash),
startIcon = rememberVectorPainter(id = R.drawable.ic_trash),
label = stringResource(id = R.string.trash),
supportingLabel = state.trashItemsCount.toString(),
onClick = vaultHandlers.trashClick,

View file

@ -18,7 +18,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -27,6 +26,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider
import com.x8bit.bitwarden.ui.platform.base.util.scrolledContainerBackground
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenSelectionDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.row.BitwardenSelectionRow
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.vault.model.VaultFilterType
import kotlinx.collections.immutable.ImmutableList
@ -98,7 +98,7 @@ fun VaultFilter(
modifier = Modifier.testTag("OpenOrgFilter"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_more_horizontal),
painter = rememberVectorPainter(id = R.drawable.ic_more_horizontal),
contentDescription = stringResource(id = R.string.filter_by_vault),
tint = MaterialTheme.colorScheme.onSurfaceVariant,
)

View file

@ -29,7 +29,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.unit.dp
@ -53,6 +52,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenMasterPassword
import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenTwoButtonDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalExitManager
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
import com.x8bit.bitwarden.ui.platform.feature.search.model.SearchType
@ -257,7 +257,7 @@ private fun VaultScreenScaffold(
modifier = Modifier.testTag("AddItemButton"),
) {
Icon(
painter = painterResource(id = R.drawable.ic_plus),
painter = rememberVectorPainter(id = R.drawable.ic_plus),
contentDescription = stringResource(id = R.string.add_item),
tint = MaterialTheme.colorScheme.onPrimaryContainer,
)

View file

@ -17,7 +17,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
@ -26,6 +25,7 @@ import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.ui.platform.components.icon.BitwardenIcon
import com.x8bit.bitwarden.ui.platform.components.indicator.BitwardenCircularCountdownIndicator
import com.x8bit.bitwarden.ui.platform.components.model.IconData
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
/**
@ -113,7 +113,7 @@ fun VaultVerificationCodeItem(
onClick = onCopyClick,
) {
Icon(
painter = painterResource(id = R.drawable.ic_copy),
painter = rememberVectorPainter(id = R.drawable.ic_copy),
contentDescription = stringResource(id = R.string.copy),
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier.size(24.dp),

View file

@ -16,7 +16,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
@ -32,6 +31,7 @@ import com.x8bit.bitwarden.ui.platform.components.dialog.BitwardenLoadingDialog
import com.x8bit.bitwarden.ui.platform.components.dialog.LoadingDialogState
import com.x8bit.bitwarden.ui.platform.components.header.BitwardenListHeaderTextWithSupportLabel
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.vault.feature.verificationcode.handlers.VerificationCodeHandlers
import kotlinx.collections.immutable.persistentListOf
@ -82,7 +82,7 @@ fun VerificationCodeScreen(
BitwardenTopAppBar(
title = stringResource(id = R.string.verification_codes),
scrollBehavior = scrollBehavior,
navigationIcon = painterResource(id = R.drawable.ic_back),
navigationIcon = rememberVectorPainter(id = R.drawable.ic_back),
navigationIconContentDescription = stringResource(id = R.string.back),
onNavigationIconClick = verificationCodeHandler.backClick,
actions = {