mirror of https://github.com/readrops/Readrops.git
Change top bar title depending on current filter in TimelineTab
This commit is contained in:
parent
edc2094a6e
commit
09bcba7c5a
|
@ -43,6 +43,7 @@ import com.readrops.app.compose.item.ItemScreen
|
|||
import com.readrops.app.compose.timelime.drawer.TimelineDrawer
|
||||
import com.readrops.app.compose.util.components.CenteredColumn
|
||||
import com.readrops.app.compose.util.theme.spacing
|
||||
import com.readrops.db.filters.FilterType
|
||||
import org.koin.androidx.compose.getViewModel
|
||||
|
||||
|
||||
|
@ -115,7 +116,18 @@ object TimelineTab : Tab {
|
|||
Scaffold(
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
title = { Text(text = stringResource(R.string.articles)) },
|
||||
title = {
|
||||
Text(
|
||||
text = when (state.filters.filterType) {
|
||||
FilterType.FEED_FILTER -> state.filterFeedName
|
||||
FilterType.FOLDER_FILER -> state.filterFolderName
|
||||
FilterType.READ_IT_LATER_FILTER -> stringResource(R.string.read_later)
|
||||
FilterType.STARS_FILTER -> stringResource(R.string.favorites)
|
||||
FilterType.NO_FILTER -> stringResource(R.string.articles)
|
||||
FilterType.NEW -> stringResource(R.string.new_articles)
|
||||
}
|
||||
)
|
||||
},
|
||||
navigationIcon = {
|
||||
IconButton(
|
||||
onClick = { viewModel.openDrawer() }
|
||||
|
|
|
@ -115,31 +115,33 @@ class TimelineViewModel(
|
|||
}
|
||||
}
|
||||
|
||||
fun updateDrawerFolderSelection(folderId: Int) {
|
||||
fun updateDrawerFolderSelection(folder: Folder) {
|
||||
_timelineState.update {
|
||||
it.copy(
|
||||
filters = updateFilters {
|
||||
it.filters.copy(
|
||||
filterType = FilterType.FOLDER_FILER,
|
||||
filterFolderId = folderId,
|
||||
filterFolderId = folder.id,
|
||||
filterFeedId = 0
|
||||
)
|
||||
},
|
||||
filterFolderName = folder.name!!,
|
||||
isDrawerOpen = false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun updateDrawerFeedSelection(feedId: Int) {
|
||||
fun updateDrawerFeedSelection(feed: Feed) {
|
||||
_timelineState.update {
|
||||
it.copy(
|
||||
filters = updateFilters {
|
||||
it.filters.copy(
|
||||
filterType = FilterType.FEED_FILTER,
|
||||
filterFeedId = feedId,
|
||||
filterFeedId = feed.id,
|
||||
filterFolderId = 0
|
||||
)
|
||||
},
|
||||
filterFeedName = feed.name!!,
|
||||
isDrawerOpen = false
|
||||
)
|
||||
}
|
||||
|
@ -189,6 +191,8 @@ data class TimelineState(
|
|||
val isDrawerOpen: Boolean = false,
|
||||
val endSynchronizing: Boolean = false,
|
||||
val filters: QueryFilters = QueryFilters(),
|
||||
val filterFeedName: String = "",
|
||||
val filterFolderName: String = "",
|
||||
val foldersAndFeeds: Map<Folder?, List<Feed>> = emptyMap(),
|
||||
val itemState: Flow<PagingData<ItemWithFeed>> = emptyFlow()
|
||||
)
|
||||
|
|
|
@ -46,7 +46,7 @@ fun DrawerFolderItem(
|
|||
onClick: () -> Unit,
|
||||
feeds: List<Feed>,
|
||||
selectedFeed: Int,
|
||||
onFeedClick: (Int) -> Unit,
|
||||
onFeedClick: (Feed) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val colors = NavigationDrawerItemDefaults.colors()
|
||||
|
@ -131,7 +131,7 @@ fun DrawerFolderItem(
|
|||
},
|
||||
badge = { Text(feed.unreadCount.toString()) },
|
||||
selected = feed.id == selectedFeed,
|
||||
onClick = { onFeedClick(feed.id) },
|
||||
onClick = { onFeedClick(feed) },
|
||||
modifier = Modifier.padding(NavigationDrawerItemDefaults.ItemPadding)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -26,14 +26,16 @@ import coil.compose.AsyncImage
|
|||
import com.readrops.app.compose.R
|
||||
import com.readrops.app.compose.timelime.TimelineState
|
||||
import com.readrops.app.compose.util.theme.spacing
|
||||
import com.readrops.db.entities.Feed
|
||||
import com.readrops.db.entities.Folder
|
||||
import com.readrops.db.filters.FilterType
|
||||
|
||||
@Composable
|
||||
fun TimelineDrawer(
|
||||
state: TimelineState,
|
||||
onClickDefaultItem: (FilterType) -> Unit,
|
||||
onFolderClick: (Int) -> Unit,
|
||||
onFeedClick: (Int) -> Unit,
|
||||
onFolderClick: (Folder) -> Unit,
|
||||
onFeedClick: (Feed) -> Unit,
|
||||
) {
|
||||
val scrollState = rememberScrollState()
|
||||
|
||||
|
@ -74,7 +76,7 @@ fun TimelineDrawer(
|
|||
Text(folderEntry.value.sumOf { it.unreadCount }.toString())
|
||||
},
|
||||
selected = state.filters.filterFolderId == folder.id,
|
||||
onClick = { onFolderClick(folder.id) },
|
||||
onClick = { onFolderClick(folder) },
|
||||
feeds = folderEntry.value,
|
||||
selectedFeed = state.filters.filterFeedId,
|
||||
onFeedClick = { onFeedClick(it) },
|
||||
|
@ -102,7 +104,7 @@ fun TimelineDrawer(
|
|||
},
|
||||
badge = { Text(feed.unreadCount.toString()) },
|
||||
selected = feed.id == state.filters.filterFeedId,
|
||||
onClick = { onFeedClick(feed.id) },
|
||||
onClick = { onFeedClick(feed) },
|
||||
modifier = Modifier.padding(NavigationDrawerItemDefaults.ItemPadding)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -146,4 +146,5 @@
|
|||
<string name="theme_value_system" translatable="false">system</string>
|
||||
<string name="hide_feeds">Hide feeds without new items</string>
|
||||
<string name="mark_items_read">Mark items read on scroll</string>
|
||||
<string name="new_articles">New articles</string>
|
||||
</resources>
|
Loading…
Reference in New Issue