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.HorizontalPager
import androidx.compose.foundation.pager.PagerState import androidx.compose.foundation.pager.PagerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vitorpamplona.amethyst.model.AddressableNote 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.note.NoteCompose
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.theme.FeedPadding import com.vitorpamplona.amethyst.ui.theme.FeedPadding
import com.vitorpamplona.quartz.nip01Core.core.Address
@Composable @Composable
fun RenderArticleList( fun RenderArticleList(
bookmarkGroupViewModel: BookmarkGroupViewModel, bookmarkGroupViewModel: BookmarkGroupViewModel,
pagerState: PagerState, pagerState: PagerState,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
deleteArticleBookmark: (articleAddress: Address, isPrivate: Boolean) -> Unit,
nav: INav, nav: INav,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val privateArticles = bookmarkGroupViewModel.privateArticles().collectAsStateWithLifecycle() val privateArticles by bookmarkGroupViewModel.privateArticles().collectAsStateWithLifecycle()
val publicArticles = bookmarkGroupViewModel.publicArticles().collectAsStateWithLifecycle() val publicArticles by bookmarkGroupViewModel.publicArticles().collectAsStateWithLifecycle()
HorizontalPager(pagerState, modifier) { page -> HorizontalPager(pagerState, modifier) { page ->
when (page) { when (page) {
0 -> 0 ->
ArticleList( ArticleList(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
articles = publicArticles.value, articles = publicArticles,
isPrivate = false, onDeleteArticleBookmark = { articleAddress ->
deleteArticleBookmark(articleAddress, false)
},
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav, nav = nav,
) )
1 -> 1 ->
ArticleList( ArticleList(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
articles = privateArticles.value, articles = privateArticles,
isPrivate = true, onDeleteArticleBookmark = { articleAddress ->
deleteArticleBookmark(articleAddress, true)
},
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav, nav = nav,
) )
@@ -73,7 +80,7 @@ fun RenderArticleList(
fun ArticleList( fun ArticleList(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
articles: List<AddressableNote>, articles: List<AddressableNote>,
isPrivate: Boolean, onDeleteArticleBookmark: (Address) -> Unit,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
nav: INav, nav: INav,
) { ) {
@@ -92,6 +99,16 @@ fun ArticleList(
quotesLeft = 3, quotesLeft = 3,
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav, nav = nav,
moreOptions = {
BookmarkGroupItemOptions(
baseNote = item,
onDeleteBookmarkItem = {
onDeleteArticleBookmark(item.address)
},
accountViewModel = accountViewModel,
nav = nav,
)
},
) )
} }
} }
@@ -60,7 +60,7 @@ import kotlinx.coroutines.launch
@Composable @Composable
fun BookmarkGroupItemOptions( fun BookmarkGroupItemOptions(
baseNote: Note, baseNote: Note,
onDeleteBookmarkGroup: () -> Unit, onDeleteBookmarkItem: () -> Unit,
editState: State<GenericLoadable<EditState>>? = null, editState: State<GenericLoadable<EditState>>? = null,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
nav: INav, nav: INav,
@@ -77,7 +77,7 @@ fun BookmarkGroupItemOptions(
BookmarkGroupItemOptionsMenu( BookmarkGroupItemOptionsMenu(
note = baseNote, note = baseNote,
onDismiss = { popupExpanded.value = false }, onDismiss = { popupExpanded.value = false },
onDeleteBookmarkGroup = onDeleteBookmarkGroup, onDeleteBookmarkItem = onDeleteBookmarkItem,
editState = editState, editState = editState,
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav, nav = nav,
@@ -90,7 +90,7 @@ fun BookmarkGroupItemOptions(
fun BookmarkGroupItemOptionsMenu( fun BookmarkGroupItemOptionsMenu(
note: Note, note: Note,
onDismiss: () -> Unit, onDismiss: () -> Unit,
onDeleteBookmarkGroup: () -> Unit, onDeleteBookmarkItem: () -> Unit,
editState: State<GenericLoadable<EditState>>? = null, editState: State<GenericLoadable<EditState>>? = null,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
nav: INav, nav: INav,
@@ -152,7 +152,7 @@ fun BookmarkGroupItemOptionsMenu(
DropdownMenuItem( DropdownMenuItem(
text = { Text("Remove from Bookmark List") }, text = { Text("Remove from Bookmark List") },
onClick = { onClick = {
onDeleteBookmarkGroup() onDeleteBookmarkItem()
onDismiss() onDismiss()
}, },
) )
@@ -91,7 +91,6 @@ private fun PostList(
state = listState, state = listState,
) { ) {
itemsIndexed(posts, key = { _, item -> item.idHex }) { _, item -> itemsIndexed(posts, key = { _, item -> item.idHex }) { _, item ->
// TODO: Find a way to integrate bookmark group callbacks into the note below
NoteCompose( NoteCompose(
baseNote = item, baseNote = item,
modifier = Modifier.animateItem().animateContentSize(), modifier = Modifier.animateItem().animateContentSize(),
@@ -101,7 +100,7 @@ private fun PostList(
moreOptions = { moreOptions = {
BookmarkGroupItemOptions( BookmarkGroupItemOptions(
baseNote = item, baseNote = item,
onDeleteBookmarkGroup = { onDeletePostBookmark(item.idHex) }, onDeleteBookmarkItem = { onDeletePostBookmark(item.idHex) },
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav, nav = nav,
) )