From ea2ebf0393d2a65d2b965596e023f12b379a5d82 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 22 Apr 2022 20:30:19 +0530 Subject: [PATCH] android: merge redundant composables --- .../msfjarvis/claw/android/ui/LobstersApp.kt | 4 +- .../claw/android/ui/lists/HottestPosts.kt | 54 ------------------- .../claw/android/ui/lists/NetworkPosts.kt | 54 ++++++++++++++----- 3 files changed, 43 insertions(+), 69 deletions(-) delete mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/HottestPosts.kt 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 0a9ee6f0..b7624f7d 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 @@ -37,7 +37,7 @@ import dev.msfjarvis.claw.android.ui.decorations.ClawAppBar import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationBar import dev.msfjarvis.claw.android.ui.decorations.NavigationItem import dev.msfjarvis.claw.android.ui.lists.DatabasePosts -import dev.msfjarvis.claw.android.ui.lists.HottestPosts +import dev.msfjarvis.claw.android.ui.lists.NetworkPosts import dev.msfjarvis.claw.android.ui.navigation.Destinations import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.api.LobstersApi @@ -146,7 +146,7 @@ fun LobstersApp( listOf(navDeepLink { uriPattern = uri }, navDeepLink { uriPattern = "$uri/" }), ) { setWebUri("https://lobste.rs/") - HottestPosts( + NetworkPosts( items = networkPosts, listState = networkListState, isPostSaved = viewModel::isPostSaved, diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/HottestPosts.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/HottestPosts.kt deleted file mode 100644 index e5ae014e..00000000 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/HottestPosts.kt +++ /dev/null @@ -1,54 +0,0 @@ -package dev.msfjarvis.claw.android.ui.lists - -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.contentColorFor -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.paging.LoadState -import androidx.paging.compose.LazyPagingItems -import com.google.accompanist.swiperefresh.SwipeRefresh -import com.google.accompanist.swiperefresh.SwipeRefreshIndicator -import com.google.accompanist.swiperefresh.rememberSwipeRefreshState -import dev.msfjarvis.claw.common.posts.PostActions -import dev.msfjarvis.claw.database.local.SavedPost -import dev.msfjarvis.claw.model.LobstersPost - -@Composable -fun HottestPosts( - items: LazyPagingItems, - listState: LazyListState, - isPostSaved: suspend (SavedPost) -> Boolean, - reloadPosts: () -> Unit, - postActions: PostActions, - modifier: Modifier = Modifier, -) { - val isRefreshing = items.loadState.refresh == LoadState.Loading - SwipeRefresh( - state = rememberSwipeRefreshState(isRefreshing), - onRefresh = reloadPosts, - indicator = { state, trigger -> - val backgroundColor = MaterialTheme.colorScheme.surface - SwipeRefreshIndicator( - state = state, - refreshTriggerDistance = trigger, - backgroundColor = backgroundColor, - contentColor = contentColorFor(backgroundColor) - ) - } - ) { - if (items.itemCount == 0) { - Box(modifier = Modifier.fillMaxSize()) - } else { - NetworkPosts( - items = items, - listState = listState, - isSaved = isPostSaved, - postActions = postActions, - modifier = modifier, - ) - } - } -} diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt index 1b510038..c876ba6f 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt @@ -1,11 +1,19 @@ package dev.msfjarvis.claw.android.ui.lists +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.paging.LoadState import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.items +import com.google.accompanist.swiperefresh.SwipeRefresh +import com.google.accompanist.swiperefresh.SwipeRefreshIndicator +import com.google.accompanist.swiperefresh.rememberSwipeRefreshState import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.posts.toDbModel import dev.msfjarvis.claw.common.ui.Divider @@ -16,24 +24,44 @@ import dev.msfjarvis.claw.model.LobstersPost fun NetworkPosts( items: LazyPagingItems, listState: LazyListState, - isSaved: suspend (SavedPost) -> Boolean, + isPostSaved: suspend (SavedPost) -> Boolean, + reloadPosts: () -> Unit, postActions: PostActions, modifier: Modifier = Modifier, ) { - LazyColumn( - state = listState, - modifier = modifier, + val isRefreshing = items.loadState.refresh == LoadState.Loading + SwipeRefresh( + state = rememberSwipeRefreshState(isRefreshing), + onRefresh = reloadPosts, + indicator = { state, trigger -> + val backgroundColor = MaterialTheme.colorScheme.surface + SwipeRefreshIndicator( + state = state, + refreshTriggerDistance = trigger, + backgroundColor = backgroundColor, + contentColor = contentColorFor(backgroundColor) + ) + } ) { - items(items) { item -> - if (item != null) { - val dbModel = item.toDbModel() - ListItem( - item = dbModel, - isSaved = isSaved, - postActions = postActions, - ) + if (items.itemCount == 0) { + Box(modifier = Modifier.fillMaxSize()) + } else { + LazyColumn( + state = listState, + modifier = modifier, + ) { + items(items) { item -> + if (item != null) { + val dbModel = item.toDbModel() + ListItem( + item = dbModel, + isSaved = isPostSaved, + postActions = postActions, + ) - Divider() + Divider() + } + } } } }