From f3c440b5a924fbff2ed1988e9be8bf45071384c8 Mon Sep 17 00:00:00 2001 From: Jens Reinemann Date: Tue, 19 May 2026 22:06:27 +0200 Subject: [PATCH] =?UTF-8?q?fix(messaging):=20unread=20badge=20not=20shown?= =?UTF-8?q?=20=E2=80=93=20observeValue=20now=20reads=20sensitive=20keys=20?= =?UTF-8?q?from=20SecureTokenStorage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/data/repository/SettingsRepositoryImpl.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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()