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.
This commit is contained in:
2026-02-27 18:33:34 +01:00
parent dc9f4121e0
commit 8ad212ee76
2 changed files with 8 additions and 2 deletions

View File

@@ -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 {

View File

@@ -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<List<Account>> = 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
}
}