From 8ad212ee76b860deefc45142041771f3432aba9e Mon Sep 17 00:00:00 2001 From: "Maurice L." Date: Fri, 27 Feb 2026 18:33:34 +0100 Subject: [PATCH] Integrated TokenStorage into MainViewModel MainViewModel now accepts a `TokenStorage` instance. When an account is deleted, its associated tokens are now cleared from storage. MainActivity has been updated to initialize and provide the `TokenStorage` to the view model. --- .../de/miaurizius/shap_planner/activities/MainActivity.kt | 6 +++++- .../de/miaurizius/shap_planner/viewmodels/MainViewModel.kt | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt b/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt index 4d9034d..5078260 100644 --- a/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt +++ b/app/src/main/java/de/miaurizius/shap_planner/activities/MainActivity.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import de.miaurizius.shap_planner.TokenStorage import de.miaurizius.shap_planner.UserPreferences import de.miaurizius.shap_planner.entities.Account import de.miaurizius.shap_planner.room.AppDatabase @@ -58,7 +59,10 @@ class MainActivity : ComponentActivity() { val database = AppDatabase.getDatabase(applicationContext) val dao = database.accountDao() - val mainViewModel = MainViewModel(dao) + + val tokenStorage = TokenStorage(applicationContext) + + val mainViewModel = MainViewModel(dao, tokenStorage) setContent { ShapPlannerTheme { diff --git a/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt b/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt index 9c1fec3..6f42a0e 100644 --- a/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt +++ b/app/src/main/java/de/miaurizius/shap_planner/viewmodels/MainViewModel.kt @@ -5,6 +5,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import de.miaurizius.shap_planner.TokenStorage import de.miaurizius.shap_planner.entities.Account import de.miaurizius.shap_planner.entities.AccountDao import kotlinx.coroutines.flow.SharingStarted @@ -13,7 +14,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlin.collections.emptyList -class MainViewModel(private val accountDao: AccountDao) : ViewModel() { +class MainViewModel(private val accountDao: AccountDao, private val tokenStorage: TokenStorage) : ViewModel() { val accounts: StateFlow> = accountDao.getAllAccounts() .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList()) @@ -27,6 +28,7 @@ class MainViewModel(private val accountDao: AccountDao) : ViewModel() { fun deleteAccount(account: Account) { viewModelScope.launch { accountDao.deleteAccount(account) + tokenStorage.clearTokens(account.id.toString()) selectedAccount = null } }