Bring ArticleListView up to speed. Fix callback naming mistake in BookmarkGroupItemOptions and refactor usages accordingly.

This commit is contained in:
KotlinGeekDev
2025-11-21 14:51:10 +01:00
parent 808030d176
commit 26c66a97b5
3 changed files with 29 additions and 13 deletions
@@ -28,6 +28,7 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vitorpamplona.amethyst.model.AddressableNote
@@ -35,33 +36,39 @@ import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.note.NoteCompose
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.theme.FeedPadding
import com.vitorpamplona.quartz.nip01Core.core.Address
@Composable
fun RenderArticleList(
bookmarkGroupViewModel: BookmarkGroupViewModel,
pagerState: PagerState,
accountViewModel: AccountViewModel,
deleteArticleBookmark: (articleAddress: Address, isPrivate: Boolean) -> Unit,
nav: INav,
modifier: Modifier = Modifier,
) {
val privateArticles = bookmarkGroupViewModel.privateArticles().collectAsStateWithLifecycle()
val publicArticles = bookmarkGroupViewModel.publicArticles().collectAsStateWithLifecycle()
val privateArticles by bookmarkGroupViewModel.privateArticles().collectAsStateWithLifecycle()
val publicArticles by bookmarkGroupViewModel.publicArticles().collectAsStateWithLifecycle()
HorizontalPager(pagerState, modifier) { page ->
when (page) {
0 ->
ArticleList(
modifier = Modifier.fillMaxSize(),
articles = publicArticles.value,
isPrivate = false,
articles = publicArticles,
onDeleteArticleBookmark = { articleAddress ->
deleteArticleBookmark(articleAddress, false)
},
accountViewModel = accountViewModel,
nav = nav,
)
1 ->
ArticleList(
modifier = Modifier.fillMaxSize(),
articles = privateArticles.value,
isPrivate = true,
articles = privateArticles,
onDeleteArticleBookmark = { articleAddress ->
deleteArticleBookmark(articleAddress, true)
},
accountViewModel = accountViewModel,
nav = nav,
)
@@ -73,7 +80,7 @@ fun RenderArticleList(
fun ArticleList(
modifier: Modifier = Modifier,
articles: List<AddressableNote>,
isPrivate: Boolean,
onDeleteArticleBookmark: (Address) -> Unit,
accountViewModel: AccountViewModel,
nav: INav,
) {
@@ -92,6 +99,16 @@ fun ArticleList(
quotesLeft = 3,
accountViewModel = accountViewModel,
nav = nav,
moreOptions = {
BookmarkGroupItemOptions(
baseNote = item,
onDeleteBookmarkItem = {
onDeleteArticleBookmark(item.address)
},
accountViewModel = accountViewModel,
nav = nav,
)
},
)
}
}
@@ -60,7 +60,7 @@ import kotlinx.coroutines.launch
@Composable
fun BookmarkGroupItemOptions(
baseNote: Note,
onDeleteBookmarkGroup: () -> Unit,
onDeleteBookmarkItem: () -> Unit,
editState: State<GenericLoadable<EditState>>? = null,
accountViewModel: AccountViewModel,
nav: INav,
@@ -77,7 +77,7 @@ fun BookmarkGroupItemOptions(
BookmarkGroupItemOptionsMenu(
note = baseNote,
onDismiss = { popupExpanded.value = false },
onDeleteBookmarkGroup = onDeleteBookmarkGroup,
onDeleteBookmarkItem = onDeleteBookmarkItem,
editState = editState,
accountViewModel = accountViewModel,
nav = nav,
@@ -90,7 +90,7 @@ fun BookmarkGroupItemOptions(
fun BookmarkGroupItemOptionsMenu(
note: Note,
onDismiss: () -> Unit,
onDeleteBookmarkGroup: () -> Unit,
onDeleteBookmarkItem: () -> Unit,
editState: State<GenericLoadable<EditState>>? = null,
accountViewModel: AccountViewModel,
nav: INav,
@@ -152,7 +152,7 @@ fun BookmarkGroupItemOptionsMenu(
DropdownMenuItem(
text = { Text("Remove from Bookmark List") },
onClick = {
onDeleteBookmarkGroup()
onDeleteBookmarkItem()
onDismiss()
},
)
@@ -91,7 +91,6 @@ private fun PostList(
state = listState,
) {
itemsIndexed(posts, key = { _, item -> item.idHex }) { _, item ->
// TODO: Find a way to integrate bookmark group callbacks into the note below
NoteCompose(
baseNote = item,
modifier = Modifier.animateItem().animateContentSize(),
@@ -101,7 +100,7 @@ private fun PostList(
moreOptions = {
BookmarkGroupItemOptions(
baseNote = item,
onDeleteBookmarkGroup = { onDeletePostBookmark(item.idHex) },
onDeleteBookmarkItem = { onDeletePostBookmark(item.idHex) },
accountViewModel = accountViewModel,
nav = nav,
)