mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
refactor: remove explicit calls to rememberVectorPainter
This commit is contained in:
parent
5e7b79eb89
commit
c6ea1182e0
7 changed files with 25 additions and 30 deletions
|
@ -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",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
@ -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),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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),
|
||||||
)
|
)
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
@ -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),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue