blob: b4af70efd08e207151ed4d3e50d3d90d985c3695 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package org.terst.feedreader.data
import android.content.Context
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.preferencesDataStore
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
val Context.settingsDataStore by preferencesDataStore(name = "settings")
private object SettingsKeys {
val STASH_BASE_URL = stringPreferencesKey("stash_base_url")
val STASH_API_KEY = stringPreferencesKey("stash_api_key")
}
/** Stash connection settings, configured on the Settings screen. Both blank until set. */
class Settings(private val context: Context) {
val stashBaseUrl: Flow<String> =
context.settingsDataStore.data.map { it[SettingsKeys.STASH_BASE_URL] ?: "" }
val stashApiKey: Flow<String> =
context.settingsDataStore.data.map { it[SettingsKeys.STASH_API_KEY] ?: "" }
suspend fun stashBaseUrlNow(): String = stashBaseUrl.first()
suspend fun stashApiKeyNow(): String = stashApiKey.first()
suspend fun setStash(baseUrl: String, apiKey: String) {
context.settingsDataStore.edit { prefs ->
prefs[SettingsKeys.STASH_BASE_URL] = baseUrl.trim().trimEnd('/')
prefs[SettingsKeys.STASH_API_KEY] = apiKey.trim()
}
}
}
|