fix(settings): pre-populate ServerSettings with homelab defaults + clear cache on save
- ServerSettings init: pre-populate bookshelf_url, abs_url, abs_token with homelab defaults if not already set (books.dueattendant149.org + ABS token). - ServerSettingsViewModel.save(): clear BookshelfApiClientFactory and AudiobookshelfApiClientFactory caches after save so new URL takes effect. - Defaults also returned from getters if value is blank. - ':app:assembleOssDebug' passes, APK deployed.
This commit is contained in:
parent
5011c51516
commit
fc863e132d
2 changed files with 27 additions and 10 deletions
|
|
@ -22,6 +22,8 @@ class ServerSettingsViewModel
|
|||
@Inject
|
||||
constructor(
|
||||
private val serverSettings: ServerSettings,
|
||||
private val bookshelfClientFactory: org.dueattendant149.bookreader.data.remote.bookshelfapi.BookshelfApiClientFactory,
|
||||
private val absClientFactory: org.dueattendant149.bookreader.data.remote.audiobookshelf.AudiobookshelfApiClientFactory,
|
||||
) : ViewModel() {
|
||||
|
||||
private val _uiState = MutableStateFlow(ServerSettingsUiState())
|
||||
|
|
@ -52,6 +54,8 @@ class ServerSettingsViewModel
|
|||
serverSettings.setBookshelfUrl(_uiState.value.bookshelfUrl.trim())
|
||||
serverSettings.setAbsUrl(_uiState.value.absUrl.trim())
|
||||
serverSettings.setAbsToken(_uiState.value.absToken.trim())
|
||||
bookshelfClientFactory.clearCache()
|
||||
absClientFactory.clearCache()
|
||||
_uiState.value = _uiState.value.copy(saved = true)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@ private const val KEY_BOOKSHELF_URL = "bookshelf_url"
|
|||
private const val KEY_ABS_URL = "abs_url"
|
||||
private const val KEY_ABS_TOKEN = "abs_token"
|
||||
|
||||
/**
|
||||
* Minimal server URL/token storage. Replaces the full DataStore-based settings
|
||||
* from Book's Story for Phase 2 backend scaffolding.
|
||||
*/
|
||||
private const val DEFAULT_BOOKSHELF_URL = "https://books.dueattendant149.org/"
|
||||
private const val DEFAULT_ABS_URL = "https://books.dueattendant149.org/"
|
||||
private const val DEFAULT_ABS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI5ZmFhZTFiYS1mYTdiLTQwNjgtYWY1NC05YmZmZmQ1MzE1MTAiLCJ1c2VybmFtZSI6InZsYWRpayIsImlhdCI6MTc4MDI2OTY0NH0.bf7XvvcKQnnr0PCj8hSa-5n4PrsW4POTns_pj5TkncU"
|
||||
|
||||
@Singleton
|
||||
class ServerSettings
|
||||
@Inject
|
||||
|
|
@ -24,21 +24,34 @@ class ServerSettings
|
|||
) {
|
||||
private val prefs: SharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
|
||||
|
||||
fun getBookshelfUrl(): String? = prefs.getString(KEY_BOOKSHELF_URL, null)
|
||||
init {
|
||||
// Pre-populate defaults for homelab if not set
|
||||
if (!prefs.contains(KEY_BOOKSHELF_URL)) {
|
||||
prefs.edit { putString(KEY_BOOKSHELF_URL, DEFAULT_BOOKSHELF_URL) }
|
||||
}
|
||||
if (!prefs.contains(KEY_ABS_URL)) {
|
||||
prefs.edit { putString(KEY_ABS_URL, DEFAULT_ABS_URL) }
|
||||
}
|
||||
if (!prefs.contains(KEY_ABS_TOKEN)) {
|
||||
prefs.edit { putString(KEY_ABS_TOKEN, DEFAULT_ABS_TOKEN) }
|
||||
}
|
||||
}
|
||||
|
||||
fun getBookshelfUrl(): String? = prefs.getString(KEY_BOOKSHELF_URL, DEFAULT_BOOKSHELF_URL)
|
||||
|
||||
fun setBookshelfUrl(url: String) {
|
||||
prefs.edit { putString(KEY_BOOKSHELF_URL, url) }
|
||||
prefs.edit { putString(KEY_BOOKSHELF_URL, url.ifBlank { DEFAULT_BOOKSHELF_URL }) }
|
||||
}
|
||||
|
||||
fun getAbsUrl(): String? = prefs.getString(KEY_ABS_URL, null)
|
||||
fun getAbsUrl(): String? = prefs.getString(KEY_ABS_URL, DEFAULT_ABS_URL)
|
||||
|
||||
fun setAbsUrl(url: String) {
|
||||
prefs.edit { putString(KEY_ABS_URL, url) }
|
||||
prefs.edit { putString(KEY_ABS_URL, url.ifBlank { DEFAULT_ABS_URL }) }
|
||||
}
|
||||
|
||||
fun getAbsToken(): String? = prefs.getString(KEY_ABS_TOKEN, null)
|
||||
fun getAbsToken(): String? = prefs.getString(KEY_ABS_TOKEN, DEFAULT_ABS_TOKEN)
|
||||
|
||||
fun setAbsToken(token: String) {
|
||||
prefs.edit { putString(KEY_ABS_TOKEN, token) }
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue