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.text.font.FontWeight
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import de.miaurizius.shap_planner.TokenStorage
|
||||||
import de.miaurizius.shap_planner.UserPreferences
|
import de.miaurizius.shap_planner.UserPreferences
|
||||||
import de.miaurizius.shap_planner.entities.Account
|
import de.miaurizius.shap_planner.entities.Account
|
||||||
import de.miaurizius.shap_planner.room.AppDatabase
|
import de.miaurizius.shap_planner.room.AppDatabase
|
||||||
@@ -58,7 +59,10 @@ class MainActivity : ComponentActivity() {
|
|||||||
|
|
||||||
val database = AppDatabase.getDatabase(applicationContext)
|
val database = AppDatabase.getDatabase(applicationContext)
|
||||||
val dao = database.accountDao()
|
val dao = database.accountDao()
|
||||||
val mainViewModel = MainViewModel(dao)
|
|
||||||
|
val tokenStorage = TokenStorage(applicationContext)
|
||||||
|
|
||||||
|
val mainViewModel = MainViewModel(dao, tokenStorage)
|
||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
ShapPlannerTheme {
|
ShapPlannerTheme {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import androidx.compose.runtime.mutableStateOf
|
|||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
|
import de.miaurizius.shap_planner.TokenStorage
|
||||||
import de.miaurizius.shap_planner.entities.Account
|
import de.miaurizius.shap_planner.entities.Account
|
||||||
import de.miaurizius.shap_planner.entities.AccountDao
|
import de.miaurizius.shap_planner.entities.AccountDao
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
@@ -13,7 +14,7 @@ import kotlinx.coroutines.flow.stateIn
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.collections.emptyList
|
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()
|
val accounts: StateFlow<List<Account>> = accountDao.getAllAccounts()
|
||||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
|
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
|
||||||
@@ -27,6 +28,7 @@ class MainViewModel(private val accountDao: AccountDao) : ViewModel() {
|
|||||||
fun deleteAccount(account: Account) {
|
fun deleteAccount(account: Account) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
accountDao.deleteAccount(account)
|
accountDao.deleteAccount(account)
|
||||||
|
tokenStorage.clearTokens(account.id.toString())
|
||||||
selectedAccount = null
|
selectedAccount = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user