InstalledViewModel: Decouple from AppUtil
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -19,12 +19,18 @@
|
|||||||
|
|
||||||
package com.aurora.store.viewmodel.all
|
package com.aurora.store.viewmodel.all
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
import com.aurora.store.util.AppUtil
|
import com.aurora.gplayapi.helpers.AppDetailsHelper
|
||||||
|
import com.aurora.gplayapi.network.IHttpClient
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
|
import com.aurora.store.data.providers.BlacklistProvider
|
||||||
|
import com.aurora.store.util.PackageUtil
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
@@ -33,7 +39,12 @@ import java.util.Locale
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class InstalledViewModel @Inject constructor(private val appUtil: AppUtil) : ViewModel() {
|
class InstalledViewModel @Inject constructor(
|
||||||
|
private val authProvider: AuthProvider,
|
||||||
|
private val httpClient: IHttpClient,
|
||||||
|
private val blacklistProvider: BlacklistProvider,
|
||||||
|
@ApplicationContext private val context: Context
|
||||||
|
) : ViewModel() {
|
||||||
|
|
||||||
private val TAG = InstalledViewModel::class.java.simpleName
|
private val TAG = InstalledViewModel::class.java.simpleName
|
||||||
|
|
||||||
@@ -47,8 +58,17 @@ class InstalledViewModel @Inject constructor(private val appUtil: AppUtil) : Vie
|
|||||||
fun fetchApps() {
|
fun fetchApps() {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
try {
|
try {
|
||||||
val apps = appUtil.getFilteredInstalledApps()
|
val appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
|
||||||
_installedApps.emit(apps.sortedBy { it.displayName.lowercase(Locale.getDefault()) })
|
.using(httpClient)
|
||||||
|
|
||||||
|
PackageUtil.getPackageInfoMap(context).keys.let { packages ->
|
||||||
|
val filtersPackages = packages.filter { !blacklistProvider.isBlacklisted(it) }
|
||||||
|
|
||||||
|
_installedApps.value = appDetailsHelper.getAppByPackageName(filtersPackages)
|
||||||
|
.filter { it.displayName.isNotEmpty() }
|
||||||
|
.map { it.isInstalled = true; it }
|
||||||
|
.sortedBy { it.displayName.lowercase(Locale.getDefault()) }
|
||||||
|
}
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
Log.e(TAG, "Failed to get installed apps", exception)
|
Log.e(TAG, "Failed to get installed apps", exception)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user