Bring ArticleListView up to speed. Fix callback naming mistake in BookmarkGroupItemOptions and refactor usages accordingly.
This commit is contained in:
+24
-7
@@ -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,
|
||||||
|
)
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -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()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
+1
-2
@@ -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,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user