diff --git a/app/src/main/java/de/bollwerk/app/data/repository/SettingsRepositoryImpl.kt b/app/src/main/java/de/bollwerk/app/data/repository/SettingsRepositoryImpl.kt index c640160..c8eccee 100644 --- a/app/src/main/java/de/bollwerk/app/data/repository/SettingsRepositoryImpl.kt +++ b/app/src/main/java/de/bollwerk/app/data/repository/SettingsRepositoryImpl.kt @@ -8,6 +8,7 @@ import de.bollwerk.app.domain.model.SettingsKeys import de.bollwerk.app.domain.repository.SettingsRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext import javax.inject.Inject @@ -37,7 +38,15 @@ internal class SettingsRepositoryImpl @Inject constructor( withContext(Dispatchers.IO) { dao.upsert(SettingsEntity(key = key, value = value)) } } - override fun observeValue(key: String): Flow = dao.observeValue(key) + override fun observeValue(key: String): Flow = + if (key in SettingsKeys.SENSITIVE_KEYS) { + // Sensitive values live in SecureTokenStorage, not in Room. + // Emit once when subscribed; re-subscription happens naturally on + // login/logout because the ViewModel is recreated at that point. + flow { emit(secureTokenStorage.get(key)) } + } else { + dao.observeValue(key) + } override fun getAll(): Flow> = dao.getAll()