Skip to content

Commit 85ed324

Browse files
committed
Keep settings bundled together on Compose
1 parent 16b1143 commit 85ed324

File tree

3 files changed

+23
-45
lines changed

3 files changed

+23
-45
lines changed

androidApp/src/main/kotlin/com/prof18/feedflow/android/settings/SettingsScreen.kt

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import com.prof18.feedflow.core.utils.AppConfig
5050
import com.prof18.feedflow.core.utils.TestingTag
5151
import com.prof18.feedflow.shared.domain.model.Browser
5252
import com.prof18.feedflow.shared.presentation.SettingsViewModel
53+
import com.prof18.feedflow.shared.presentation.model.SettingsState
5354
import com.prof18.feedflow.shared.presentation.preview.browsersForPreview
5455
import com.prof18.feedflow.shared.ui.preview.PreviewPhone
5556
import com.prof18.feedflow.shared.ui.search.FeedListFontSettings
@@ -92,15 +93,9 @@ fun SettingsScreen(
9293
browsers = browserListState,
9394
onFeedListClick = onFeedListClick,
9495
onAddFeedClick = onAddFeedClick,
95-
isMarkReadWhenScrollingEnabled = settingState.isMarkReadWhenScrollingEnabled,
96-
isShowReadItemEnabled = settingState.isShowReadItemsEnabled,
97-
isReaderModeEnabled = settingState.isReaderModeEnabled,
98-
isRemoveTitleFromDescriptionEnabled = settingState.isRemoveTitleFromDescriptionEnabled,
99-
isHideDescriptionEnabled = settingState.isHideDescriptionEnabled,
100-
isHideImagesEnabled = settingState.isHideImagesEnabled,
96+
settingsState = settingState,
10197
showAccounts = appConfig.isDropboxSyncEnabled,
10298
fontSizes = fontSizesState,
103-
autoDeletePeriod = settingState.autoDeletePeriod,
10499
onBrowserSelected = { browser ->
105100
browserManager.setFavouriteBrowser(browser)
106101
},
@@ -148,15 +143,9 @@ fun SettingsScreen(
148143
@Composable
149144
private fun SettingsScreenContent(
150145
browsers: ImmutableList<Browser>,
151-
isMarkReadWhenScrollingEnabled: Boolean,
152-
isShowReadItemEnabled: Boolean,
153-
isReaderModeEnabled: Boolean,
154-
isRemoveTitleFromDescriptionEnabled: Boolean,
155-
isHideDescriptionEnabled: Boolean,
156-
isHideImagesEnabled: Boolean,
146+
settingsState: SettingsState,
157147
showAccounts: Boolean,
158148
fontSizes: FeedFontSizes,
159-
autoDeletePeriod: AutoDeletePeriod,
160149
onFeedListClick: () -> Unit,
161150
onAddFeedClick: () -> Unit,
162151
onBrowserSelected: (Browser) -> Unit,
@@ -246,28 +235,28 @@ private fun SettingsScreenContent(
246235

247236
item {
248237
AutoDeletePeriodSelector(
249-
currentPeriod = autoDeletePeriod,
238+
currentPeriod = settingsState.autoDeletePeriod,
250239
onPeriodSelected = onAutoDeletePeriodSelected,
251240
)
252241
}
253242

254243
item {
255244
ReaderModeSwitch(
256245
setReaderMode = setReaderMode,
257-
isReaderModeEnabled = isReaderModeEnabled,
246+
isReaderModeEnabled = settingsState.isReaderModeEnabled,
258247
)
259248
}
260249

261250
item {
262251
MarkReadWhenScrollingSwitch(
263252
setMarkReadWhenScrolling = setMarkReadWhenScrolling,
264-
isMarkReadWhenScrollingEnabled = isMarkReadWhenScrollingEnabled,
253+
isMarkReadWhenScrollingEnabled = settingsState.isMarkReadWhenScrollingEnabled,
265254
)
266255
}
267256

268257
item {
269258
ShowReadItemOnTimelineSwitch(
270-
isShowReadItemEnabled = isShowReadItemEnabled,
259+
isShowReadItemEnabled = settingsState.isShowReadItemsEnabled,
271260
setShowReadItem = setShowReadItem,
272261
)
273262
}
@@ -283,8 +272,8 @@ private fun SettingsScreenContent(
283272

284273
item {
285274
FeedListFontSettings(
286-
isHideDescriptionEnabled = isHideDescriptionEnabled,
287-
isHideImagesEnabled = isHideImagesEnabled,
275+
isHideDescriptionEnabled = settingsState.isHideDescriptionEnabled,
276+
isHideImagesEnabled = settingsState.isHideImagesEnabled,
288277
fontSizes = fontSizes,
289278
updateFontScale = updateFontScale,
290279
)
@@ -294,21 +283,21 @@ private fun SettingsScreenContent(
294283
Spacer(modifier = Modifier.padding(top = Spacing.regular))
295284

296285
HideDescriptionSwitch(
297-
isHideDescriptionEnabled = isHideDescriptionEnabled,
286+
isHideDescriptionEnabled = settingsState.isHideDescriptionEnabled,
298287
setHideDescription = setHideDescription,
299288
)
300289
}
301290

302291
item {
303292
HideImagesSwitch(
304-
isHideImagesEnabled = isHideImagesEnabled,
293+
isHideImagesEnabled = settingsState.isHideImagesEnabled,
305294
setHideImages = setHideImages,
306295
)
307296
}
308297

309298
item {
310299
RemoveTitleFromDescSwitch(
311-
isRemoveTitleFromDescriptionEnabled = isRemoveTitleFromDescriptionEnabled,
300+
isRemoveTitleFromDescriptionEnabled = settingsState.isRemoveTitleFromDescriptionEnabled,
312301
setRemoveTitleFromDescription = setRemoveTitleFromDescription,
313302
)
314303
}
@@ -535,15 +524,8 @@ private fun SettingsScreenPreview() {
535524
FeedFlowTheme {
536525
SettingsScreenContent(
537526
browsers = browsersForPreview,
538-
isMarkReadWhenScrollingEnabled = true,
539-
isShowReadItemEnabled = false,
540-
isReaderModeEnabled = false,
541-
isRemoveTitleFromDescriptionEnabled = false,
542-
isHideDescriptionEnabled = false,
543-
isHideImagesEnabled = false,
544527
showAccounts = true,
545528
fontSizes = FeedFontSizes(),
546-
autoDeletePeriod = AutoDeletePeriod.DISABLED,
547529
onFeedListClick = {},
548530
onAddFeedClick = {},
549531
onBrowserSelected = {},
@@ -560,6 +542,7 @@ private fun SettingsScreenPreview() {
560542
setHideImages = {},
561543
updateFontScale = {},
562544
onAutoDeletePeriodSelected = {},
545+
settingsState = SettingsState(),
563546
)
564547
}
565548
}

desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/Main.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,7 @@ fun main() = application {
305305
) { navigator ->
306306
FeedFlowMenuBar(
307307
showDebugMenu = appEnvironment.isDebug(),
308-
isMarkReadWhenScrollingEnabled = settingsState.isMarkReadWhenScrollingEnabled,
309-
isShowReadItemEnabled = settingsState.isShowReadItemsEnabled,
310-
isReaderModeEnabled = settingsState.isReaderModeEnabled,
311-
autoDeletePeriod = settingsState.autoDeletePeriod,
308+
settingsState = settingsState,
312309
feedFilter = currentFeedFilter,
313310
onRefreshClick = {
314311
scope.launch {

desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/desktop/home/MenuBar.kt

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,14 @@ import com.prof18.feedflow.core.model.FeedFilter
1313
import com.prof18.feedflow.desktop.accounts.AccountsScreen
1414
import com.prof18.feedflow.desktop.editfeed.EditFeedScreen
1515
import com.prof18.feedflow.desktop.feedsourcelist.FeedSourceListScreen
16+
import com.prof18.feedflow.shared.presentation.model.SettingsState
1617
import com.prof18.feedflow.shared.ui.utils.LocalFeedFlowStrings
1718

1819
@Composable
1920
fun FrameWindowScope.FeedFlowMenuBar(
2021
showDebugMenu: Boolean,
21-
isMarkReadWhenScrollingEnabled: Boolean,
22-
isShowReadItemEnabled: Boolean,
23-
isReaderModeEnabled: Boolean,
24-
autoDeletePeriod: AutoDeletePeriod,
2522
feedFilter: FeedFilter,
23+
settingsState: SettingsState,
2624
onRefreshClick: () -> Unit,
2725
onMarkAllReadClick: () -> Unit,
2826
onImportExportClick: () -> Unit,
@@ -115,41 +113,41 @@ fun FrameWindowScope.FeedFlowMenuBar(
115113
Menu(LocalFeedFlowStrings.current.settingsBehaviourTitle, mnemonic = 'B') {
116114
CheckboxItem(
117115
text = LocalFeedFlowStrings.current.settingsReaderMode,
118-
checked = isReaderModeEnabled,
116+
checked = settingsState.isReaderModeEnabled,
119117
onCheckedChange = setReaderMode,
120118
)
121119

122120
CheckboxItem(
123121
text = LocalFeedFlowStrings.current.toggleMarkReadWhenScrolling,
124-
checked = isMarkReadWhenScrollingEnabled,
122+
checked = settingsState.isMarkReadWhenScrollingEnabled,
125123
onCheckedChange = setMarkReadWhenScrolling,
126124
)
127125

128126
CheckboxItem(
129127
text = LocalFeedFlowStrings.current.settingsToggleShowReadArticles,
130-
checked = isShowReadItemEnabled,
128+
checked = settingsState.isShowReadItemsEnabled,
131129
onCheckedChange = setShowReadItem,
132130
)
133131

134132
Menu(LocalFeedFlowStrings.current.settingsAutoDelete) {
135133
RadioButtonItem(
136134
text = LocalFeedFlowStrings.current.settingsAutoDeletePeriodDisabled,
137-
selected = autoDeletePeriod == AutoDeletePeriod.DISABLED,
135+
selected = settingsState.autoDeletePeriod == AutoDeletePeriod.DISABLED,
138136
onClick = { onAutoDeletePeriodSelected(AutoDeletePeriod.DISABLED) },
139137
)
140138
RadioButtonItem(
141139
text = LocalFeedFlowStrings.current.settingsAutoDeletePeriodOneWeek,
142-
selected = autoDeletePeriod == AutoDeletePeriod.ONE_WEEK,
140+
selected = settingsState.autoDeletePeriod == AutoDeletePeriod.ONE_WEEK,
143141
onClick = { onAutoDeletePeriodSelected(AutoDeletePeriod.ONE_WEEK) },
144142
)
145143
RadioButtonItem(
146144
text = LocalFeedFlowStrings.current.settingsAutoDeletePeriodTwoWeeks,
147-
selected = autoDeletePeriod == AutoDeletePeriod.TWO_WEEKS,
145+
selected = settingsState.autoDeletePeriod == AutoDeletePeriod.TWO_WEEKS,
148146
onClick = { onAutoDeletePeriodSelected(AutoDeletePeriod.TWO_WEEKS) },
149147
)
150148
RadioButtonItem(
151149
text = LocalFeedFlowStrings.current.settingsAutoDeletePeriodOneMonth,
152-
selected = autoDeletePeriod == AutoDeletePeriod.ONE_MONTH,
150+
selected = settingsState.autoDeletePeriod == AutoDeletePeriod.ONE_MONTH,
153151
onClick = { onAutoDeletePeriodSelected(AutoDeletePeriod.ONE_MONTH) },
154152
)
155153
}

0 commit comments

Comments
 (0)