From b82ef53c0152a005d6158b23417cf99a3ff6b0cc Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 17 Oct 2024 16:44:29 +0530 Subject: [PATCH] InstalledViewModel: Decouple from AppUtil Signed-off-by: Aayush Gupta --- .../store/viewmodel/all/InstalledViewModel.kt | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt index 928e0ed06..a4fc4a561 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/InstalledViewModel.kt @@ -19,12 +19,18 @@ package com.aurora.store.viewmodel.all +import android.content.Context import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope 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.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow @@ -33,7 +39,12 @@ import java.util.Locale import javax.inject.Inject @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 @@ -47,8 +58,17 @@ class InstalledViewModel @Inject constructor(private val appUtil: AppUtil) : Vie fun fetchApps() { viewModelScope.launch(Dispatchers.IO) { try { - val apps = appUtil.getFilteredInstalledApps() - _installedApps.emit(apps.sortedBy { it.displayName.lowercase(Locale.getDefault()) }) + val appDetailsHelper = AppDetailsHelper(authProvider.authData!!) + .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) { Log.e(TAG, "Failed to get installed apps", exception) }