refactor: remove explicit calls to rememberVectorPainter

This commit is contained in:
Harsh Shandilya 2023-06-04 21:47:34 +05:30
parent 5e7b79eb89
commit c6ea1182e0
7 changed files with 25 additions and 30 deletions

View file

@ -33,7 +33,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -106,24 +105,24 @@ fun LobstersApp(
NavigationItem( NavigationItem(
label = "Hottest", label = "Hottest",
route = Destinations.Hottest.route, route = Destinations.Hottest.route,
icon = rememberVectorPainter(Icons.Outlined.Whatshot), icon = Icons.Outlined.Whatshot,
selectedIcon = rememberVectorPainter(Icons.Filled.Whatshot), selectedIcon = Icons.Filled.Whatshot,
) { ) {
coroutineScope.launch { hottestListState.animateScrollToItem(index = 0) } coroutineScope.launch { hottestListState.animateScrollToItem(index = 0) }
}, },
NavigationItem( NavigationItem(
label = "Newest", label = "Newest",
route = Destinations.Newest.route, route = Destinations.Newest.route,
icon = rememberVectorPainter(Icons.Outlined.NewReleases), icon = Icons.Outlined.NewReleases,
selectedIcon = rememberVectorPainter(Icons.Filled.NewReleases), selectedIcon = Icons.Filled.NewReleases,
) { ) {
coroutineScope.launch { newestListState.animateScrollToItem(index = 0) } coroutineScope.launch { newestListState.animateScrollToItem(index = 0) }
}, },
NavigationItem( NavigationItem(
label = "Saved", label = "Saved",
route = Destinations.Saved.route, route = Destinations.Saved.route,
icon = rememberVectorPainter(Icons.Outlined.FavoriteBorder), icon = Icons.Outlined.FavoriteBorder,
selectedIcon = rememberVectorPainter(Icons.Filled.Favorite), selectedIcon = Icons.Filled.Favorite,
) { ) {
coroutineScope.launch { savedListState.animateScrollToItem(index = 0) } coroutineScope.launch { savedListState.animateScrollToItem(index = 0) }
}, },
@ -140,7 +139,7 @@ fun LobstersApp(
onClick = { if (!navController.popBackStack()) context.getActivity()?.finish() } onClick = { if (!navController.popBackStack()) context.getActivity()?.finish() }
) { ) {
Icon( Icon(
painter = rememberVectorPainter(Icons.Outlined.NavigateBefore), imageVector = Icons.Outlined.NavigateBefore,
contentDescription = "Go back to previous screen", contentDescription = "Go back to previous screen",
) )
} }

View file

@ -19,7 +19,7 @@ import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.testTag import androidx.compose.ui.platform.testTag
import androidx.navigation.NavController import androidx.navigation.NavController
import dev.msfjarvis.claw.android.ui.navigation.Destinations import dev.msfjarvis.claw.android.ui.navigation.Destinations
@ -57,7 +57,7 @@ fun ClawNavigationBar(
icon = { icon = {
Crossfade(isCurrentDestination, label = "nav-label") { Crossfade(isCurrentDestination, label = "nav-label") {
Icon( Icon(
painter = if (it) navItem.selectedIcon else navItem.icon, imageVector = if (it) navItem.selectedIcon else navItem.icon,
contentDescription = navItem.label.replaceFirstChar(Char::uppercase), contentDescription = navItem.label.replaceFirstChar(Char::uppercase),
) )
} }
@ -86,7 +86,7 @@ fun ClawNavigationBar(
class NavigationItem( class NavigationItem(
val label: String, val label: String,
val route: String, val route: String,
val icon: Painter, val icon: ImageVector,
val selectedIcon: Painter, val selectedIcon: ImageVector,
val listStateResetCallback: () -> Unit, val listStateResetCallback: () -> Unit,
) )

View file

@ -56,7 +56,7 @@ fun ClawNavigationRail(
icon = { icon = {
Crossfade(isCurrentDestination, label = "nav-label") { Crossfade(isCurrentDestination, label = "nav-label") {
Icon( Icon(
painter = if (it) navItem.selectedIcon else navItem.icon, imageVector = if (it) navItem.selectedIcon else navItem.icon,
contentDescription = navItem.label.replaceFirstChar(Char::uppercase), contentDescription = navItem.label.replaceFirstChar(Char::uppercase),
) )
} }

View file

@ -30,7 +30,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.produceState import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.SpanStyle
@ -116,7 +115,7 @@ private fun PostLink(
Row(modifier = Modifier.padding(16.dp), horizontalArrangement = Arrangement.spacedBy(8.dp)) { Row(modifier = Modifier.padding(16.dp), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
NetworkImage( NetworkImage(
url = linkMetadata.faviconUrl, url = linkMetadata.faviconUrl,
placeholder = rememberVectorPainter(Icons.Filled.Public), placeholder = Icons.Filled.Public,
contentDescription = "", contentDescription = "",
modifier = Modifier.size(24.dp), modifier = Modifier.size(24.dp),
) )

View file

@ -46,7 +46,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.Role
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@ -154,7 +153,7 @@ internal fun Submitter(
) { ) {
NetworkImage( NetworkImage(
url = avatarUrl, url = avatarUrl,
placeholder = rememberVectorPainter(Icons.Filled.AccountCircle), placeholder = Icons.Filled.AccountCircle,
contentDescription = contentDescription, contentDescription = contentDescription,
modifier = Modifier.requiredSize(24.dp).clip(CircleShape), modifier = Modifier.requiredSize(24.dp).clip(CircleShape),
) )
@ -171,10 +170,7 @@ private fun SaveButton(
Crossfade(targetState = isSaved, label = "save-button") { saved -> Crossfade(targetState = isSaved, label = "save-button") { saved ->
Box(modifier = modifier.padding(12.dp)) { Box(modifier = modifier.padding(12.dp)) {
Icon( Icon(
painter = imageVector = if (saved) Icons.Filled.Favorite else Icons.Outlined.FavoriteBorder,
rememberVectorPainter(
if (saved) Icons.Filled.Favorite else Icons.Outlined.FavoriteBorder
),
tint = MaterialTheme.colorScheme.secondary, tint = MaterialTheme.colorScheme.secondary,
contentDescription = if (saved) "Remove from saved posts" else "Add to saved posts", contentDescription = if (saved) "Remove from saved posts" else "Add to saved posts",
modifier = Modifier.align(Alignment.Center), modifier = Modifier.align(Alignment.Center),
@ -207,7 +203,7 @@ private fun CommentsButton(
}, },
) { ) {
Icon( Icon(
painter = rememberVectorPainter(Icons.Outlined.Comment), imageVector = Icons.Outlined.Comment,
tint = MaterialTheme.colorScheme.secondary, tint = MaterialTheme.colorScheme.secondary,
contentDescription = "Open comments", contentDescription = "Open comments",
modifier = Modifier.align(Alignment.Center), modifier = Modifier.align(Alignment.Center),

View file

@ -1,5 +1,5 @@
/* /*
* Copyright © 2021-2022 Harsh Shandilya. * Copyright © 2021-2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style * Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at * license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT. * https://opensource.org/licenses/MIT.
@ -8,21 +8,23 @@ package dev.msfjarvis.claw.common.ui
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import coil.compose.AsyncImage import coil.compose.AsyncImage
@Composable @Composable
internal fun NetworkImage( internal fun NetworkImage(
url: String?, url: String?,
placeholder: Painter, placeholder: ImageVector,
contentDescription: String, contentDescription: String,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val painter = rememberVectorPainter(placeholder)
AsyncImage( AsyncImage(
model = url, model = url,
placeholder = placeholder, placeholder = painter,
error = placeholder, error = painter,
fallback = placeholder, fallback = painter,
contentDescription = contentDescription, contentDescription = contentDescription,
modifier = modifier, modifier = modifier,
) )

View file

@ -24,7 +24,6 @@ import androidx.compose.runtime.produceState
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import dev.msfjarvis.claw.common.NetworkState import dev.msfjarvis.claw.common.NetworkState
import dev.msfjarvis.claw.common.NetworkState.Error import dev.msfjarvis.claw.common.NetworkState.Error
@ -92,7 +91,7 @@ private fun UserProfileInternal(
) { ) {
NetworkImage( NetworkImage(
url = "https://lobste.rs/${user.avatarUrl}", url = "https://lobste.rs/${user.avatarUrl}",
placeholder = rememberVectorPainter(Icons.Filled.AccountCircle), placeholder = Icons.Filled.AccountCircle,
contentDescription = "Avatar of ${user.username}", contentDescription = "Avatar of ${user.username}",
modifier = Modifier.requiredSize(120.dp).clip(CircleShape), modifier = Modifier.requiredSize(120.dp).clip(CircleShape),
) )