android: extract common code from lists

This commit is contained in:
Harsh Shandilya 2022-02-07 13:20:31 +05:30
parent f2b4bc02f0
commit c0f4f42643
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
3 changed files with 35 additions and 22 deletions

View file

@ -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,
)
}
}

View file

@ -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,
)
}

View file

@ -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,
)
}
}