From c0f4f426439c7cba2c994eaeb8d2b13432b5cfac Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 7 Feb 2022 13:20:31 +0530 Subject: [PATCH] android: extract common code from lists --- .../claw/android/ui/lists/DatabasePosts.kt | 15 ++-------- .../claw/android/ui/lists/ListItem.kt | 29 +++++++++++++++++++ .../claw/android/ui/lists/NetworkPosts.kt | 13 ++------- 3 files changed, 35 insertions(+), 22 deletions(-) create mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/ListItem.kt diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/DatabasePosts.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/DatabasePosts.kt index 56a5dbbb..d1110791 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/DatabasePosts.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/DatabasePosts.kt @@ -4,13 +4,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import dev.msfjarvis.claw.common.posts.LobstersCard import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.database.local.SavedPost @@ -27,13 +21,10 @@ fun DatabasePosts( modifier = modifier, ) { items(items) { item -> - var saved by remember(item) { mutableStateOf(false) } - LaunchedEffect(item) { saved = isSaved(item) } - LobstersCard( - post = item, - isSaved = saved, + ListItem( + item = item, + isSaved = isSaved, postActions = postActions, - modifier = modifier, ) } } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/ListItem.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/ListItem.kt new file mode 100644 index 00000000..a99a5b1e --- /dev/null +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/ListItem.kt @@ -0,0 +1,29 @@ +package dev.msfjarvis.claw.android.ui.lists + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import dev.msfjarvis.claw.common.posts.LobstersCard +import dev.msfjarvis.claw.common.posts.PostActions +import dev.msfjarvis.claw.database.local.SavedPost + +@Composable +fun ListItem( + item: SavedPost, + isSaved: suspend (SavedPost) -> Boolean, + postActions: PostActions, + modifier: Modifier = Modifier, +) { + var saved by remember(item) { mutableStateOf(false) } + LaunchedEffect(item) { saved = isSaved(item) } + LobstersCard( + post = item, + isSaved = saved, + 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 595fa8b6..08817572 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 @@ -3,15 +3,11 @@ package dev.msfjarvis.claw.android.ui.lists import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.items -import dev.msfjarvis.claw.common.posts.LobstersCard import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.posts.toDbModel import dev.msfjarvis.claw.database.local.SavedPost @@ -32,13 +28,10 @@ fun NetworkPosts( items(items) { item -> if (item != null) { val dbModel = item.toDbModel() - var saved by remember(dbModel) { mutableStateOf(false) } - LaunchedEffect(dbModel) { saved = isSaved(dbModel) } - LobstersCard( - post = dbModel, - isSaved = saved, + ListItem( + item = dbModel, + isSaved = isSaved, postActions = postActions, - modifier = Modifier, ) } }