Skip to content

Commit a43415a

Browse files
committed
Add parameter to set default main filter in TimelineTab
1 parent c520a33 commit a43415a

File tree

6 files changed

+49
-14
lines changed

6 files changed

+49
-14
lines changed

app/src/main/java/com/readrops/app/more/preferences/PreferencesScreen.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,18 @@ class PreferencesScreen : AndroidScreen() {
155155

156156
PreferenceHeader(text = stringResource(id = R.string.timeline))
157157

158+
ListPreferenceWidget(
159+
preference = loadedState.mainFilterPref.second,
160+
selectedKey = loadedState.mainFilterPref.first,
161+
entries = mapOf(
162+
"ALL" to stringResource(R.string.articles),
163+
"NEW" to stringResource(R.string.new_articles),
164+
"STARS" to stringResource(R.string.favorites)
165+
),
166+
title = stringResource(R.string.default_category),
167+
onValueChange = {}
168+
)
169+
158170
ListPreferenceWidget(
159171
preference = loadedState.timelineItemSize.second,
160172
selectedKey = loadedState.timelineItemSize.first,

app/src/main/java/com/readrops/app/more/preferences/PreferencesScreenModel.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class PreferencesScreenModel(
2525
preferences.scrollRead.flow,
2626
preferences.hideReadFeeds.flow,
2727
preferences.openLinksWith.flow,
28-
preferences.timelineItemSize.flow
28+
preferences.timelineItemSize.flow,
29+
preferences.mainFilter.flow
2930
)
3031

3132
combine(
@@ -37,7 +38,8 @@ class PreferencesScreenModel(
3738
scrollReadPref = (list[2] as Boolean) to preferences.scrollRead,
3839
hideReadFeeds = (list[3] as Boolean) to preferences.hideReadFeeds,
3940
openLinksWith = (list[4] as String) to preferences.openLinksWith,
40-
timelineItemSize = (list[5] as String) to preferences.timelineItemSize
41+
timelineItemSize = (list[5] as String) to preferences.timelineItemSize,
42+
mainFilterPref = (list[6] as String) to preferences.mainFilter
4143
)
4244
}.collect { theme ->
4345
mutableState.update { theme }
@@ -57,7 +59,8 @@ sealed class PreferencesScreenState {
5759
val scrollReadPref: PreferenceState<Boolean>,
5860
val hideReadFeeds: PreferenceState<Boolean>,
5961
val openLinksWith: PreferenceState<String>,
60-
val timelineItemSize: PreferenceState<String>
62+
val timelineItemSize: PreferenceState<String>,
63+
val mainFilterPref: PreferenceState<String>,
6164
) : PreferencesScreenState()
6265

6366
}

app/src/main/java/com/readrops/app/timelime/TimelineScreenModel.kt

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import kotlinx.coroutines.flow.asStateFlow
3939
import kotlinx.coroutines.flow.collectLatest
4040
import kotlinx.coroutines.flow.combine
4141
import kotlinx.coroutines.flow.emptyFlow
42+
import kotlinx.coroutines.flow.first
4243
import kotlinx.coroutines.flow.firstOrNull
4344
import kotlinx.coroutines.flow.flatMapLatest
4445
import kotlinx.coroutines.flow.update
@@ -65,6 +66,17 @@ class TimelineScreenModel(
6566

6667
init {
6768
screenModelScope.launch(dispatcher) {
69+
val mainFilter = MainFilter.valueOf(preferences.mainFilter.flow.first())
70+
_timelineState.update {
71+
it.copy(
72+
filters = updateFilters {
73+
it.filters.copy(
74+
mainFilter = mainFilter
75+
)
76+
}
77+
)
78+
}
79+
6880
combine(
6981
accountEvent,
7082
filters
@@ -123,17 +135,17 @@ class TimelineScreenModel(
123135
}
124136
}
125137

126-
private fun getTimelinePreferences(): Flow<TimelinePreferences> {
138+
private fun getTimelinePreferences(): Flow<TimelinePreferences> = with(preferences) {
127139
return combine(
128-
preferences.timelineItemSize.flow,
129-
preferences.scrollRead.flow,
130-
preferences.displayNotificationsPermission.flow,
131-
preferences.showReadItems.flow,
132-
preferences.orderField.flow,
133-
preferences.orderType.flow,
134-
preferences.theme.flow,
135-
preferences.openLinksWith.flow,
136-
preferences.globalOpenInAsk.flow,
140+
timelineItemSize.flow,
141+
scrollRead.flow,
142+
displayNotificationsPermission.flow,
143+
showReadItems.flow,
144+
orderField.flow,
145+
orderType.flow,
146+
theme.flow,
147+
openLinksWith.flow,
148+
globalOpenInAsk.flow,
137149
transform = {
138150
TimelinePreferences(
139151
itemSize = when (it[0]) {
@@ -148,7 +160,7 @@ class TimelineScreenModel(
148160
orderType = OrderType.valueOf(it[5] as String),
149161
theme = it[6] as String,
150162
openInExternalBrowser = it[7] as String == "external_navigator",
151-
openInAsk = it[8] as Boolean
163+
openInAsk = it[8] as Boolean,
152164
)
153165
}
154166
)

app/src/main/java/com/readrops/app/util/Preferences.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ class Preferences(
9797
key = booleanPreferencesKey("open_in_ask"),
9898
default = true
9999
)
100+
101+
val mainFilter = Preference(
102+
dataStore = dataStore,
103+
key = stringPreferencesKey("main_filter"),
104+
default = "ALL" // uppercase important, used with Enum.valueOf()
105+
)
100106
}
101107

102108

app/src/main/res/values-fr/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,5 @@
192192
<string name="local_view">Vue locale</string>
193193
<string name="external_view">Vue externe</string>
194194
<string name="do_not_ask_again_next_feeds">Ne pas me redemander pour les autres flux</string>
195+
<string name="default_category">Catégorie par défaut</string>
195196
</resources>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,4 +201,5 @@
201201
<string name="local_view">Local view</string>
202202
<string name="external_view">External view</string>
203203
<string name="do_not_ask_again_next_feeds">Do not ask me again for next feeds</string>
204+
<string name="default_category">Default category</string>
204205
</resources>

0 commit comments

Comments
 (0)