diff options
Diffstat (limited to 'app/src/main/java/org/terst/feedreader/data')
| -rw-r--r-- | app/src/main/java/org/terst/feedreader/data/Settings.kt | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/app/src/main/java/org/terst/feedreader/data/Settings.kt b/app/src/main/java/org/terst/feedreader/data/Settings.kt index 2e7eaae..be3e809 100644 --- a/app/src/main/java/org/terst/feedreader/data/Settings.kt +++ b/app/src/main/java/org/terst/feedreader/data/Settings.kt @@ -28,8 +28,16 @@ private object SettingsKeys { val LAST_FETCH_AT = longPreferencesKey("last_fetch_at") val LAST_FETCH_NEW_ARTICLES = intPreferencesKey("last_fetch_new_articles") val LAST_ACKNOWLEDGED_FETCH_AT = longPreferencesKey("last_acknowledged_fetch_at") + val READER_FONT_SIZE_PX = intPreferencesKey("reader_font_size_px") } +// Matches the size ReaderWebView hardcoded before this setting existed, so an upgrading +// user's reader looks exactly the same until they deliberately change it. +const val DEFAULT_READER_FONT_SIZE_PX = 18 +private const val READER_FONT_SIZE_MIN_PX = 14 +private const val READER_FONT_SIZE_MAX_PX = 28 +val READER_FONT_SIZE_RANGE_PX = READER_FONT_SIZE_MIN_PX..READER_FONT_SIZE_MAX_PX + /** Stash connection settings, configured on the Settings screen. Both blank until set. */ class Settings(private val context: Context) { val stashBaseUrl: Flow<String> = @@ -109,4 +117,15 @@ class Settings(private val context: Context) { suspend fun acknowledgeFetch(at: Long) { context.settingsDataStore.edit { prefs -> prefs[SettingsKeys.LAST_ACKNOWLEDGED_FETCH_AT] = at } } + + val readerFontSizePx: Flow<Int> = + context.settingsDataStore.data.map { it[SettingsKeys.READER_FONT_SIZE_PX] ?: DEFAULT_READER_FONT_SIZE_PX } + + suspend fun readerFontSizePxNow(): Int = readerFontSizePx.first() + + suspend fun setReaderFontSizePx(px: Int) { + context.settingsDataStore.edit { prefs -> + prefs[SettingsKeys.READER_FONT_SIZE_PX] = px.coerceIn(READER_FONT_SIZE_RANGE_PX.first, READER_FONT_SIZE_RANGE_PX.last) + } + } } |
