revanced-manager-compose/app/src/main/java/app/revanced/manager/ui/viewmodel/DownloadsViewModel.kt
Robert fe95afca6c
feat: store patched apps (#79)
* feat: store patched apps

* fix: missing string

* feat: save patch selection

* feat: things

* fix: fix broken query

* fix: remove redundant `withContext`

* fix: fix
2023-08-17 17:42:10 +02:00

46 lines
1.4 KiB
Kotlin

package app.revanced.manager.ui.viewmodel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import app.revanced.manager.data.room.apps.downloaded.DownloadedApp
import app.revanced.manager.domain.manager.PreferencesManager
import app.revanced.manager.domain.repository.DownloadedAppRepository
import app.revanced.manager.util.mutableStateSetOf
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class DownloadsViewModel(
private val downloadedAppRepository: DownloadedAppRepository,
val prefs: PreferencesManager
) : ViewModel() {
val downloadedApps = downloadedAppRepository.getAll().map { downloadedApps ->
downloadedApps.sortedWith(
compareBy<DownloadedApp> {
it.packageName
}.thenBy { it.version }
)
}
val selection = mutableStateSetOf<DownloadedApp>()
fun toggleItem(downloadedApp: DownloadedApp) {
if (selection.contains(downloadedApp))
selection.remove(downloadedApp)
else
selection.add(downloadedApp)
}
fun delete() {
viewModelScope.launch(NonCancellable) {
downloadedAppRepository.delete(selection)
withContext(Dispatchers.Main) {
selection.clear()
}
}
}
}