diff --git a/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/ServerHostPreferences.kt b/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/ServerHostPreferences.kt index 247fb1c6..b8748a29 100644 --- a/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/ServerHostPreferences.kt +++ b/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/ServerHostPreferences.kt @@ -48,10 +48,16 @@ class ServerHostPreferences(private val preferenceStore: PreferenceStore) { fun systemTrayEnabled(): Preference { return systemTrayEnabled.preference() } + + // Downloader private val downloadPath = ServerHostPreference.DownloadPath(preferenceStore) fun downloadPath(): Preference { return downloadPath.preference() } + private val downloadAsCbz = ServerHostPreference.DownloadAsCbz(preferenceStore) + fun downloadAsCbz(): Preference { + return downloadAsCbz.preference() + } // WebUI private val webUIEnabled = ServerHostPreference.WebUIEnabled(preferenceStore) @@ -87,6 +93,7 @@ class ServerHostPreferences(private val preferenceStore: PreferenceStore) { debugLogsEnabled, systemTrayEnabled, downloadPath, + downloadAsCbz, webUIEnabled, openInBrowserEnabled, basicAuthEnabled, diff --git a/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/host/ServerHostPreference.kt b/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/host/ServerHostPreference.kt index d56f9d29..3dd08335 100644 --- a/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/host/ServerHostPreference.kt +++ b/domain/src/desktopMain/kotlin/ca/gosyer/jui/domain/server/service/host/ServerHostPreference.kt @@ -108,11 +108,18 @@ sealed class ServerHostPreference { false, true ) + + // Downloader class DownloadPath(preferenceStore: PreferenceStore) : StringServerHostPreference( preferenceStore, "downloadsPath", "" ) + class DownloadAsCbz(preferenceStore: PreferenceStore) : BooleanServerHostPreference( + preferenceStore, + "downloadAsCbz", + false + ) // WebUI class WebUIEnabled(preferenceStore: PreferenceStore) : BooleanServerHostPreference( diff --git a/i18n/src/commonMain/resources/MR/values/base/strings.xml b/i18n/src/commonMain/resources/MR/values/base/strings.xml index 2e2ab7b8..49a78526 100644 --- a/i18n/src/commonMain/resources/MR/values/base/strings.xml +++ b/i18n/src/commonMain/resources/MR/values/base/strings.xml @@ -300,6 +300,8 @@ Download path Current download path: %1$s Using default download path + Download as CBZ + Download chapters into CBZ archives Server WebUI Whether the server\'s default WebUI is enabled, makes you able to use Tachidesk in your browser Open Server WebUI on startup diff --git a/presentation/src/desktopMain/kotlin/ca/gosyer/jui/ui/settings/DesktopSettingsServerScreen.kt b/presentation/src/desktopMain/kotlin/ca/gosyer/jui/ui/settings/DesktopSettingsServerScreen.kt index 2d715721..8ceb8f27 100644 --- a/presentation/src/desktopMain/kotlin/ca/gosyer/jui/ui/settings/DesktopSettingsServerScreen.kt +++ b/presentation/src/desktopMain/kotlin/ca/gosyer/jui/ui/settings/DesktopSettingsServerScreen.kt @@ -62,6 +62,7 @@ actual fun getServerHostItems(viewModel: @Composable () -> SettingsServerHostVie debugLogsEnabled = serverVm.debugLogsEnabled, systemTrayEnabled = serverVm.systemTrayEnabled, downloadPath = serverVm.downloadPath, + downloadAsCbz = serverVm.downloadAsCbz, webUIEnabled = serverVm.webUIEnabled, openInBrowserEnabled = serverVm.openInBrowserEnabled, basicAuthEnabled = serverVm.basicAuthEnabled, @@ -89,7 +90,10 @@ actual class SettingsServerHostViewModel @Inject constructor( // Misc val debugLogsEnabled = serverHostPreferences.debugLogsEnabled().asStateIn(scope) val systemTrayEnabled = serverHostPreferences.systemTrayEnabled().asStateIn(scope) + + // Downloader val downloadPath = serverHostPreferences.downloadPath().asStateIn(scope) + val downloadAsCbz = serverHostPreferences.downloadAsCbz().asStateIn(scope) // WebUI val webUIEnabled = serverHostPreferences.webUIEnabled().asStateIn(scope) @@ -145,6 +149,7 @@ fun LazyListScope.ServerHostItems( debugLogsEnabled: PreferenceMutableStateFlow, systemTrayEnabled: PreferenceMutableStateFlow, downloadPath: PreferenceMutableStateFlow, + downloadAsCbz: PreferenceMutableStateFlow, webUIEnabled: PreferenceMutableStateFlow, openInBrowserEnabled: PreferenceMutableStateFlow, basicAuthEnabled: PreferenceMutableStateFlow, @@ -242,6 +247,14 @@ fun LazyListScope.ServerHostItems( } ) } + item { + SwitchPreference( + preference = downloadAsCbz, + title = stringResource(MR.strings.host_download_as_cbz), + subtitle = stringResource(MR.strings.host_download_as_cbz_sub), + changeListener = serverSettingChanged + ) + } item { SwitchPreference( preference = webUIEnabled,