From c6ea1182e00ec7ec33c15bb7d856b457b96714aa Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sun, 4 Jun 2023 21:47:34 +0530 Subject: [PATCH] refactor: remove explicit calls to `rememberVectorPainter` --- .../dev/msfjarvis/claw/android/ui/LobstersApp.kt | 15 +++++++-------- .../android/ui/decorations/ClawNavigationBar.kt | 8 ++++---- .../android/ui/decorations/ClawNavigationRail.kt | 2 +- .../claw/common/comments/CommentEntry.kt | 3 +-- .../msfjarvis/claw/common/posts/LobstersCard.kt | 10 +++------- .../dev/msfjarvis/claw/common/ui/NetworkImage.kt | 14 ++++++++------ .../dev/msfjarvis/claw/common/user/UserProfile.kt | 3 +-- 7 files changed, 25 insertions(+), 30 deletions(-) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index 4d976967..87d0b07e 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -33,7 +33,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource @@ -106,24 +105,24 @@ fun LobstersApp( NavigationItem( label = "Hottest", route = Destinations.Hottest.route, - icon = rememberVectorPainter(Icons.Outlined.Whatshot), - selectedIcon = rememberVectorPainter(Icons.Filled.Whatshot), + icon = Icons.Outlined.Whatshot, + selectedIcon = Icons.Filled.Whatshot, ) { coroutineScope.launch { hottestListState.animateScrollToItem(index = 0) } }, NavigationItem( label = "Newest", route = Destinations.Newest.route, - icon = rememberVectorPainter(Icons.Outlined.NewReleases), - selectedIcon = rememberVectorPainter(Icons.Filled.NewReleases), + icon = Icons.Outlined.NewReleases, + selectedIcon = Icons.Filled.NewReleases, ) { coroutineScope.launch { newestListState.animateScrollToItem(index = 0) } }, NavigationItem( label = "Saved", route = Destinations.Saved.route, - icon = rememberVectorPainter(Icons.Outlined.FavoriteBorder), - selectedIcon = rememberVectorPainter(Icons.Filled.Favorite), + icon = Icons.Outlined.FavoriteBorder, + selectedIcon = Icons.Filled.Favorite, ) { coroutineScope.launch { savedListState.animateScrollToItem(index = 0) } }, @@ -140,7 +139,7 @@ fun LobstersApp( onClick = { if (!navController.popBackStack()) context.getActivity()?.finish() } ) { Icon( - painter = rememberVectorPainter(Icons.Outlined.NavigateBefore), + imageVector = Icons.Outlined.NavigateBefore, contentDescription = "Go back to previous screen", ) } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt index 662f0fc1..04fc8481 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationBar.kt @@ -19,7 +19,7 @@ import androidx.compose.material3.NavigationBarItem 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.graphics.vector.ImageVector import androidx.compose.ui.platform.testTag import androidx.navigation.NavController import dev.msfjarvis.claw.android.ui.navigation.Destinations @@ -57,7 +57,7 @@ fun ClawNavigationBar( icon = { Crossfade(isCurrentDestination, label = "nav-label") { Icon( - painter = if (it) navItem.selectedIcon else navItem.icon, + imageVector = if (it) navItem.selectedIcon else navItem.icon, contentDescription = navItem.label.replaceFirstChar(Char::uppercase), ) } @@ -86,7 +86,7 @@ fun ClawNavigationBar( class NavigationItem( val label: String, val route: String, - val icon: Painter, - val selectedIcon: Painter, + val icon: ImageVector, + val selectedIcon: ImageVector, val listStateResetCallback: () -> Unit, ) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt index 1763e73a..ae392503 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawNavigationRail.kt @@ -56,7 +56,7 @@ fun ClawNavigationRail( icon = { Crossfade(isCurrentDestination, label = "nav-label") { Icon( - painter = if (it) navItem.selectedIcon else navItem.icon, + imageVector = if (it) navItem.selectedIcon else navItem.icon, contentDescription = navItem.label.replaceFirstChar(Char::uppercase), ) } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt index 55b4fd77..20efff97 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt @@ -30,7 +30,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle @@ -116,7 +115,7 @@ private fun PostLink( Row(modifier = Modifier.padding(16.dp), horizontalArrangement = Arrangement.spacedBy(8.dp)) { NetworkImage( url = linkMetadata.faviconUrl, - placeholder = rememberVectorPainter(Icons.Filled.Public), + placeholder = Icons.Filled.Public, contentDescription = "", modifier = Modifier.size(24.dp), ) diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt index 753e6f5b..ac498a4a 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt @@ -46,7 +46,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.semantics.Role import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.font.FontWeight @@ -154,7 +153,7 @@ internal fun Submitter( ) { NetworkImage( url = avatarUrl, - placeholder = rememberVectorPainter(Icons.Filled.AccountCircle), + placeholder = Icons.Filled.AccountCircle, contentDescription = contentDescription, modifier = Modifier.requiredSize(24.dp).clip(CircleShape), ) @@ -171,10 +170,7 @@ private fun SaveButton( Crossfade(targetState = isSaved, label = "save-button") { saved -> Box(modifier = modifier.padding(12.dp)) { Icon( - painter = - rememberVectorPainter( - if (saved) Icons.Filled.Favorite else Icons.Outlined.FavoriteBorder - ), + imageVector = if (saved) Icons.Filled.Favorite else Icons.Outlined.FavoriteBorder, tint = MaterialTheme.colorScheme.secondary, contentDescription = if (saved) "Remove from saved posts" else "Add to saved posts", modifier = Modifier.align(Alignment.Center), @@ -207,7 +203,7 @@ private fun CommentsButton( }, ) { Icon( - painter = rememberVectorPainter(Icons.Outlined.Comment), + imageVector = Icons.Outlined.Comment, tint = MaterialTheme.colorScheme.secondary, contentDescription = "Open comments", modifier = Modifier.align(Alignment.Center), diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkImage.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkImage.kt index 27bcb60c..bb49b2aa 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkImage.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkImage.kt @@ -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 * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. @@ -8,21 +8,23 @@ package dev.msfjarvis.claw.common.ui import androidx.compose.runtime.Composable 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 @Composable internal fun NetworkImage( url: String?, - placeholder: Painter, + placeholder: ImageVector, contentDescription: String, modifier: Modifier = Modifier, ) { + val painter = rememberVectorPainter(placeholder) AsyncImage( model = url, - placeholder = placeholder, - error = placeholder, - fallback = placeholder, + placeholder = painter, + error = painter, + fallback = painter, contentDescription = contentDescription, modifier = modifier, ) diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt index a550b429..aae8cebf 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt @@ -24,7 +24,6 @@ import androidx.compose.runtime.produceState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.unit.dp import dev.msfjarvis.claw.common.NetworkState import dev.msfjarvis.claw.common.NetworkState.Error @@ -92,7 +91,7 @@ private fun UserProfileInternal( ) { NetworkImage( url = "https://lobste.rs/${user.avatarUrl}", - placeholder = rememberVectorPainter(Icons.Filled.AccountCircle), + placeholder = Icons.Filled.AccountCircle, contentDescription = "Avatar of ${user.username}", modifier = Modifier.requiredSize(120.dp).clip(CircleShape), )