diff --git a/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreen.kt b/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreen.kt index 054e215f..965d1e52 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreen.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreen.kt @@ -141,7 +141,7 @@ class ItemScreen( snackbarHost = { SnackbarHost(snackbarHostState) }, bottomBar = { ItemScreenBottomBar( - item = item, + state = state.bottomBarState, accentColor = accentColor, modifier = Modifier .height(bottomBarHeight) diff --git a/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenBottomBar.kt b/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenBottomBar.kt index 3070a6d4..700acf32 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenBottomBar.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenBottomBar.kt @@ -18,11 +18,15 @@ import androidx.compose.ui.res.painterResource import com.readrops.app.compose.R import com.readrops.app.compose.util.FeedColors import com.readrops.app.compose.util.theme.spacing -import com.readrops.db.entities.Item + +data class BottomBarState( + val isRead: Boolean = false, + val isStarred: Boolean = false +) @Composable fun ItemScreenBottomBar( - item: Item, + state: BottomBarState, accentColor: Color, onShare: () -> Unit, onOpenUrl: () -> Unit, @@ -44,11 +48,11 @@ fun ItemScreenBottomBar( modifier = Modifier.padding(MaterialTheme.spacing.shortSpacing) ) { IconButton( - onClick = { onChangeReadState(!item.isRead) } + onClick = { onChangeReadState(!state.isRead) } ) { Icon( painter = painterResource( - id = if (item.isRead) + id = if (state.isRead) R.drawable.ic_remove_done else R.drawable.ic_done_all ), @@ -58,11 +62,11 @@ fun ItemScreenBottomBar( } IconButton( - onClick = { onChangeStarState(!item.isStarred) } + onClick = { onChangeStarState(!state.isStarred) } ) { Icon( painter = painterResource( - id = if (item.isStarred) + id = if (state.isStarred) R.drawable.ic_star else R.drawable.ic_star_outline ), diff --git a/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenModel.kt b/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenModel.kt index 43613b67..9f08b0fb 100644 --- a/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenModel.kt +++ b/appcompose/src/main/java/com/readrops/app/compose/item/ItemScreenModel.kt @@ -53,7 +53,13 @@ class ItemScreenModel( database.newItemDao().selectItemById(query) .collect { itemWithFeed -> mutableState.update { - it.copy(itemWithFeed = itemWithFeed) + it.copy( + itemWithFeed = itemWithFeed, + bottomBarState = BottomBarState( + isRead = itemWithFeed.item.isRead, + isStarred = itemWithFeed.item.isStarred + ) + ) } } } @@ -150,6 +156,7 @@ class ItemScreenModel( @Stable data class ItemState( val itemWithFeed: ItemWithFeed? = null, + val bottomBarState: BottomBarState = BottomBarState(), val imageDialogUrl: String? = null, val fileDownloadedEvent: Boolean = false ) \ No newline at end of file