diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/ArticleListView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/ArticleListView.kt index 164efe81f..1f4f595d5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/ArticleListView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/ArticleListView.kt @@ -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, - 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, + ) + }, ) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupOptions.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt similarity index 98% rename from amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupOptions.kt rename to amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt index 2a51815da..3ed9f76cd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupOptions.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/BookmarkGroupItemOptions.kt @@ -60,7 +60,7 @@ import kotlinx.coroutines.launch @Composable fun BookmarkGroupItemOptions( baseNote: Note, - onDeleteBookmarkGroup: () -> Unit, + onDeleteBookmarkItem: () -> Unit, editState: State>? = 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>? = null, accountViewModel: AccountViewModel, nav: INav, @@ -152,7 +152,7 @@ fun BookmarkGroupItemOptionsMenu( DropdownMenuItem( text = { Text("Remove from Bookmark List") }, onClick = { - onDeleteBookmarkGroup() + onDeleteBookmarkItem() onDismiss() }, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/PostListView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/PostListView.kt index 4346fdf24..d6976df7e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/PostListView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/display/PostListView.kt @@ -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, )