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:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user