HelperModule: Switch to singleton components for helper classes

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-11-05 19:41:20 +05:30
parent 85f13d977e
commit 7af3da5288
19 changed files with 162 additions and 150 deletions

View File

@@ -9,11 +9,9 @@ import android.util.Log
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import com.aurora.extensions.isVAndAbove import com.aurora.extensions.isVAndAbove
import com.aurora.gplayapi.helpers.AppDetailsHelper import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.AuroraApp import com.aurora.store.AuroraApp
import com.aurora.store.data.helper.DownloadHelper import com.aurora.store.data.helper.DownloadHelper
import com.aurora.store.data.providers.AccountProvider import com.aurora.store.data.providers.AccountProvider
import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.util.NotificationUtil import com.aurora.store.util.NotificationUtil
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -29,10 +27,7 @@ class UnarchivePackageReceiver: BroadcastReceiver() {
private val TAG = UnarchivePackageReceiver::class.java.simpleName private val TAG = UnarchivePackageReceiver::class.java.simpleName
@Inject @Inject
lateinit var httpClient: IHttpClient lateinit var appDetailsHelper: AppDetailsHelper
@Inject
lateinit var authProvider: AuthProvider
@Inject @Inject
lateinit var downloadHelper: DownloadHelper lateinit var downloadHelper: DownloadHelper
@@ -54,10 +49,7 @@ class UnarchivePackageReceiver: BroadcastReceiver() {
return@launch return@launch
} }
val app = AppDetailsHelper(authProvider.authData!!) val app = appDetailsHelper.getAppByPackageName(packageName)
.using(httpClient)
.getAppByPackageName(packageName)
downloadHelper.enqueueApp(app) downloadHelper.enqueueApp(app)
} }
} }

View File

@@ -61,6 +61,7 @@ class DownloadWorker @AssistedInject constructor(
private val appInstaller: AppInstaller, private val appInstaller: AppInstaller,
private val authProvider: AuthProvider, private val authProvider: AuthProvider,
private val httpClient: IHttpClient, private val httpClient: IHttpClient,
private val purchaseHelper: PurchaseHelper,
@Assisted private val appContext: Context, @Assisted private val appContext: Context,
@Assisted workerParams: WorkerParameters @Assisted workerParams: WorkerParameters
) : AuthWorker(authProvider, appContext, workerParams) { ) : AuthWorker(authProvider, appContext, workerParams) {
@@ -69,8 +70,6 @@ class DownloadWorker @AssistedInject constructor(
private lateinit var icon: Bitmap private lateinit var icon: Bitmap
private val notificationManager = appContext.getSystemService<NotificationManager>()!! private val notificationManager = appContext.getSystemService<NotificationManager>()!!
private val purchaseHelper: PurchaseHelper
get() = PurchaseHelper(authProvider.authData!!).using(httpClient)
private val NOTIFICATION_ID = 200 private val NOTIFICATION_ID = 200

View File

@@ -54,6 +54,7 @@ class UpdateWorker @AssistedInject constructor(
private val updateDao: UpdateDao, private val updateDao: UpdateDao,
private val downloadHelper: DownloadHelper, private val downloadHelper: DownloadHelper,
private val authProvider: AuthProvider, private val authProvider: AuthProvider,
private val appDetailsHelper: AppDetailsHelper,
@Assisted private val appContext: Context, @Assisted private val appContext: Context,
@Assisted workerParams: WorkerParameters @Assisted workerParams: WorkerParameters
) : AuthWorker(authProvider, appContext, workerParams) { ) : AuthWorker(authProvider, appContext, workerParams) {
@@ -147,9 +148,6 @@ class UpdateWorker @AssistedInject constructor(
private suspend fun checkUpdates(): List<Update> { private suspend fun checkUpdates(): List<Update> {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val packageInfoMap = PackageUtil.getPackageInfoMap(appContext) val packageInfoMap = PackageUtil.getPackageInfoMap(appContext)
val appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
val updates = packageInfoMap.keys.let { packages -> val updates = packageInfoMap.keys.let { packages ->
val filteredPackages = packages.filter { !blacklistProvider.isBlacklisted(it) } val filteredPackages = packages.filter { !blacklistProvider.isBlacklisted(it) }
appDetailsHelper.getAppByPackageName(filteredPackages) appDetailsHelper.getAppByPackageName(filteredPackages)

View File

@@ -0,0 +1,129 @@
package com.aurora.store.module
import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.helpers.CategoryHelper
import com.aurora.gplayapi.helpers.ExpandedBrowseHelper
import com.aurora.gplayapi.helpers.PurchaseHelper
import com.aurora.gplayapi.helpers.ReviewsHelper
import com.aurora.gplayapi.helpers.SearchHelper
import com.aurora.gplayapi.helpers.StreamHelper
import com.aurora.gplayapi.helpers.web.WebCategoryStreamHelper
import com.aurora.gplayapi.helpers.web.WebDataSafetyHelper
import com.aurora.gplayapi.helpers.web.WebSearchHelper
import com.aurora.gplayapi.helpers.web.WebStreamHelper
import com.aurora.gplayapi.helpers.web.WebTopChartsHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
/**
* Module to instantiate singleton components for different helpers from gplayapi library
*/
@Module
@InstallIn(SingletonComponent::class)
object HelperModule {
@Singleton
@Provides
fun providesAppDetailsHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): AppDetailsHelper {
return AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesStreamHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): StreamHelper {
return StreamHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesExpandedBrowseHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): ExpandedBrowseHelper {
return ExpandedBrowseHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesCategoryHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): CategoryHelper {
return CategoryHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesReviewsHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): ReviewsHelper {
return ReviewsHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesSearchHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): SearchHelper {
return SearchHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesPurchaseHelperInstance(
authProvider: AuthProvider,
httpClient: IHttpClient
): PurchaseHelper {
return PurchaseHelper(authProvider.authData!!)
.using(httpClient)
}
@Singleton
@Provides
fun providesWebStreamHelperInstance(httpClient: IHttpClient): WebStreamHelper {
return WebStreamHelper().using(httpClient)
}
@Singleton
@Provides
fun providesWebDataSafetyHelperInstance(httpClient: IHttpClient): WebDataSafetyHelper {
return WebDataSafetyHelper().using(httpClient)
}
@Singleton
@Provides
fun providesWebSearchHelperInstance(httpClient: IHttpClient): WebSearchHelper {
return WebSearchHelper().using(httpClient)
}
@Singleton
@Provides
fun providesWebCategoryStreamHelperInstance(httpClient: IHttpClient): WebCategoryStreamHelper {
return WebCategoryStreamHelper().using(httpClient)
}
@Singleton
@Provides
fun providesWebTopChartsHelperInstance(httpClient: IHttpClient): WebTopChartsHelper {
return WebTopChartsHelper().using(httpClient)
}
}

View File

@@ -25,8 +25,6 @@ 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.gplayapi.helpers.AppDetailsHelper 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.data.providers.BlacklistProvider
import com.aurora.store.util.PackageUtil import com.aurora.store.util.PackageUtil
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
@@ -40,8 +38,7 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class InstalledViewModel @Inject constructor( class InstalledViewModel @Inject constructor(
private val authProvider: AuthProvider, private val appDetailsHelper: AppDetailsHelper,
private val httpClient: IHttpClient,
private val blacklistProvider: BlacklistProvider, private val blacklistProvider: BlacklistProvider,
@ApplicationContext private val context: Context @ApplicationContext private val context: Context
) : ViewModel() { ) : ViewModel() {
@@ -58,9 +55,6 @@ class InstalledViewModel @Inject constructor(
fun fetchApps() { fun fetchApps() {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
try { try {
val appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
PackageUtil.getPackageInfoMap(context).keys.let { packages -> PackageUtil.getPackageInfoMap(context).keys.let { packages ->
val filtersPackages = packages.filter { !blacklistProvider.isBlacklisted(it) } val filtersPackages = packages.filter { !blacklistProvider.isBlacklisted(it) }

View File

@@ -19,17 +19,13 @@
package com.aurora.store.viewmodel.browse package com.aurora.store.viewmodel.browse
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.ExpandedBrowseHelper import com.aurora.gplayapi.helpers.ExpandedBrowseHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -37,16 +33,11 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class ExpandedStreamBrowseViewModel @Inject constructor( class ExpandedStreamBrowseViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val streamHelper: ExpandedBrowseHelper
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = ExpandedStreamBrowseViewModel::class.java.simpleName private val TAG = ExpandedStreamBrowseViewModel::class.java.simpleName
private val streamHelper: ExpandedBrowseHelper = ExpandedBrowseHelper(authProvider.authData!!)
.using(httpClient)
val liveData: MutableLiveData<StreamCluster> = MutableLiveData() val liveData: MutableLiveData<StreamCluster> = MutableLiveData()
var streamCluster: StreamCluster = StreamCluster() var streamCluster: StreamCluster = StreamCluster()

View File

@@ -19,18 +19,13 @@
package com.aurora.store.viewmodel.browse package com.aurora.store.viewmodel.browse
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.gplayapi.helpers.web.WebStreamHelper import com.aurora.gplayapi.helpers.web.WebStreamHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -38,16 +33,11 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class StreamBrowseViewModel @Inject constructor( class StreamBrowseViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val streamHelper: WebStreamHelper
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = StreamBrowseViewModel::class.java.simpleName private val TAG = StreamBrowseViewModel::class.java.simpleName
private val streamHelper: StreamContract = WebStreamHelper()
.using(httpClient)
val liveData: MutableLiveData<StreamCluster> = MutableLiveData() val liveData: MutableLiveData<StreamCluster> = MutableLiveData()
private lateinit var streamCluster: StreamCluster private lateinit var streamCluster: StreamCluster

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.category package com.aurora.store.viewmodel.category
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@@ -27,26 +26,19 @@ import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.Category
import com.aurora.gplayapi.helpers.CategoryHelper import com.aurora.gplayapi.helpers.CategoryHelper
import com.aurora.gplayapi.helpers.contracts.CategoryContract import com.aurora.gplayapi.helpers.contracts.CategoryContract
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.CategoryStash import com.aurora.store.CategoryStash
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
import com.aurora.store.data.providers.AuthProvider
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.launch import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
class CategoryViewModel @Inject constructor( class CategoryViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val categoryHelper: CategoryHelper
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = CategoryViewModel::class.java.simpleName
private val categoryHelper: CategoryHelper = CategoryHelper(authProvider.authData!!) private val TAG = CategoryViewModel::class.java.simpleName
.using(httpClient)
private var stash: CategoryStash = mutableMapOf( private var stash: CategoryStash = mutableMapOf(
Category.Type.APPLICATION to emptyList(), Category.Type.APPLICATION to emptyList(),

View File

@@ -1,6 +1,5 @@
package com.aurora.store.viewmodel.details package com.aurora.store.viewmodel.details
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
@@ -14,12 +13,10 @@ import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.helper.DownloadHelper import com.aurora.store.data.helper.DownloadHelper
import com.aurora.store.data.model.ExodusReport import com.aurora.store.data.model.ExodusReport
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.data.room.favourite.Favourite import com.aurora.store.data.room.favourite.Favourite
import com.aurora.store.data.room.favourite.FavouriteDao import com.aurora.store.data.room.favourite.FavouriteDao
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
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.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@@ -33,9 +30,10 @@ import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport
@HiltViewModel @HiltViewModel
class AppDetailsViewModel @Inject constructor( class AppDetailsViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val appDetailsHelper: AppDetailsHelper,
private val reviewsHelper: ReviewsHelper,
private val webDataSafetyHelper: WebDataSafetyHelper,
private val downloadHelper: DownloadHelper, private val downloadHelper: DownloadHelper,
private val authProvider: AuthProvider,
private val favouriteDao: FavouriteDao, private val favouriteDao: FavouriteDao,
private val httpClient: IHttpClient private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
@@ -45,9 +43,6 @@ class AppDetailsViewModel @Inject constructor(
private val exodusBaseUrl = "https://reports.exodus-privacy.eu.org/api/search/" private val exodusBaseUrl = "https://reports.exodus-privacy.eu.org/api/search/"
private val exodusApiKey = "Token bbe6ebae4ad45a9cbacb17d69739799b8df2c7ae" private val exodusApiKey = "Token bbe6ebae4ad45a9cbacb17d69739799b8df2c7ae"
private val appDetailsHelper = AppDetailsHelper(authProvider.authData!!).using(httpClient)
private val reviewsHelper = ReviewsHelper(authProvider.authData!!).using(httpClient)
private val appStash: MutableMap<String, App> = mutableMapOf() private val appStash: MutableMap<String, App> = mutableMapOf()
private val _app = MutableSharedFlow<App>() private val _app = MutableSharedFlow<App>()
val app = _app.asSharedFlow() val app = _app.asSharedFlow()
@@ -113,9 +108,7 @@ class AppDetailsViewModel @Inject constructor(
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
try { try {
val report = dataSafetyReportStash.getOrPut(packageName) { val report = dataSafetyReportStash.getOrPut(packageName) {
WebDataSafetyHelper() webDataSafetyHelper.fetch(packageName)
.using(httpClient)
.fetch(packageName)
} }
_dataSafetyReport.emit(report) _dataSafetyReport.emit(report)
} catch (exception: Exception) { } catch (exception: Exception) {

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.details package com.aurora.store.viewmodel.details
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@@ -29,12 +28,9 @@ import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.AppDetailsHelper import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.helpers.StreamHelper import com.aurora.gplayapi.helpers.StreamHelper
import com.aurora.gplayapi.helpers.contracts.StreamContract import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.AppStreamStash import com.aurora.store.AppStreamStash
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
import com.aurora.store.data.providers.AuthProvider
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -42,18 +38,12 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class DetailsClusterViewModel @Inject constructor( class DetailsClusterViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val appDetailsHelper: AppDetailsHelper,
authProvider: AuthProvider, private val streamHelper: StreamHelper
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = DetailsClusterViewModel::class.java.simpleName private val TAG = DetailsClusterViewModel::class.java.simpleName
private var appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
private var streamHelper = StreamHelper(authProvider.authData!!)
val liveData: MutableLiveData<ViewState> = MutableLiveData() val liveData: MutableLiveData<ViewState> = MutableLiveData()
private val stash: AppStreamStash = mutableMapOf() private val stash: AppStreamStash = mutableMapOf()

View File

@@ -1,15 +1,11 @@
package com.aurora.store.viewmodel.details package com.aurora.store.viewmodel.details
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.gplayapi.helpers.AppDetailsHelper import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider
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.MutableSharedFlow import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asSharedFlow
@@ -18,16 +14,11 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class DetailsMoreViewModel @Inject constructor( class DetailsMoreViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val appDetailsHelper: AppDetailsHelper
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = DetailsMoreViewModel::class.java.simpleName private val TAG = DetailsMoreViewModel::class.java.simpleName
private val appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
private val dependantAppsStash = mutableMapOf<String, List<App>>() private val dependantAppsStash = mutableMapOf<String, List<App>>()
private val _dependentApps = MutableSharedFlow<List<App>>() private val _dependentApps = MutableSharedFlow<List<App>>()
val dependentApps = _dependentApps.asSharedFlow() val dependentApps = _dependentApps.asSharedFlow()

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.details package com.aurora.store.viewmodel.details
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@@ -30,11 +29,8 @@ import com.aurora.gplayapi.data.models.details.DevStream
import com.aurora.gplayapi.helpers.AppDetailsHelper import com.aurora.gplayapi.helpers.AppDetailsHelper
import com.aurora.gplayapi.helpers.StreamHelper import com.aurora.gplayapi.helpers.StreamHelper
import com.aurora.gplayapi.helpers.contracts.StreamContract import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
import com.aurora.store.data.providers.AuthProvider
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -42,17 +38,12 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class DevProfileViewModel @Inject constructor( class DevProfileViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val appDetailsHelper: AppDetailsHelper,
private val authProvider: AuthProvider, private val streamHelper: StreamHelper
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = DevProfileViewModel::class.java.simpleName private val TAG = DevProfileViewModel::class.java.simpleName
private var appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
private var streamHelper = StreamHelper(authProvider.authData!!)
val liveData: MutableLiveData<ViewState> = MutableLiveData() val liveData: MutableLiveData<ViewState> = MutableLiveData()
var devStream:DevStream = DevStream() var devStream:DevStream = DevStream()
var streamBundle: StreamBundle = StreamBundle() var streamBundle: StreamBundle = StreamBundle()

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.homestream package com.aurora.store.viewmodel.homestream
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@@ -28,11 +27,9 @@ import com.aurora.gplayapi.data.models.StreamBundle
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.contracts.StreamContract import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.gplayapi.helpers.web.WebStreamHelper import com.aurora.gplayapi.helpers.web.WebStreamHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.HomeStash import com.aurora.store.HomeStash
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -40,15 +37,11 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class StreamViewModel @Inject constructor( class StreamViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val webStreamHelper: WebStreamHelper
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = StreamViewModel::class.java.simpleName private val TAG = StreamViewModel::class.java.simpleName
private var webStreamHelper = WebStreamHelper()
.using(httpClient)
val liveData: MutableLiveData<ViewState> = MutableLiveData() val liveData: MutableLiveData<ViewState> = MutableLiveData()
private var stash: HomeStash = mutableMapOf() private var stash: HomeStash = mutableMapOf()

View File

@@ -19,17 +19,13 @@
package com.aurora.store.viewmodel.review package com.aurora.store.viewmodel.review
import android.content.Context
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.gplayapi.data.models.ReviewCluster import com.aurora.gplayapi.data.models.ReviewCluster
import com.aurora.gplayapi.helpers.ReviewsHelper import com.aurora.gplayapi.helpers.ReviewsHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -37,14 +33,9 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class ReviewViewModel @Inject constructor( class ReviewViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val reviewsHelper: ReviewsHelper
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
var reviewsHelper: ReviewsHelper = ReviewsHelper(authProvider.authData!!)
.using(httpClient)
val liveData: MutableLiveData<ReviewCluster> = MutableLiveData() val liveData: MutableLiveData<ReviewCluster> = MutableLiveData()
private lateinit var reviewsCluster: ReviewCluster private lateinit var reviewsCluster: ReviewCluster

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.search package com.aurora.store.viewmodel.search
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@@ -29,11 +28,9 @@ import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.gplayapi.helpers.SearchHelper import com.aurora.gplayapi.helpers.SearchHelper
import com.aurora.gplayapi.helpers.contracts.SearchContract import com.aurora.gplayapi.helpers.contracts.SearchContract
import com.aurora.gplayapi.helpers.web.WebSearchHelper import com.aurora.gplayapi.helpers.web.WebSearchHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.data.providers.FilterProvider import com.aurora.store.data.providers.FilterProvider
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -42,9 +39,9 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class SearchResultViewModel @Inject constructor( class SearchResultViewModel @Inject constructor(
val filterProvider: FilterProvider, val filterProvider: FilterProvider,
@ApplicationContext private val context: Context, authProvider: AuthProvider,
private val authProvider: AuthProvider, searchHelper: SearchHelper,
private val httpClient: IHttpClient webSearchHelper: WebSearchHelper
) : ViewModel() { ) : ViewModel() {
private val TAG = SearchResultViewModel::class.java.simpleName private val TAG = SearchResultViewModel::class.java.simpleName
@@ -54,9 +51,9 @@ class SearchResultViewModel @Inject constructor(
private var searchBundle: SearchBundle = SearchBundle() private var searchBundle: SearchBundle = SearchBundle()
private val helper: SearchContract = if (authProvider.isAnonymous) { private val helper: SearchContract = if (authProvider.isAnonymous) {
WebSearchHelper().using(httpClient) webSearchHelper
} else { } else {
SearchHelper(authProvider.authData!!).using(httpClient) searchHelper
} }
fun observeSearchResults(query: String) { fun observeSearchResults(query: String) {

View File

@@ -19,17 +19,14 @@
package com.aurora.store.viewmodel.search package com.aurora.store.viewmodel.search
import android.content.Context
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.gplayapi.helpers.SearchHelper import com.aurora.gplayapi.helpers.SearchHelper
import com.aurora.gplayapi.helpers.contracts.SearchContract import com.aurora.gplayapi.helpers.contracts.SearchContract
import com.aurora.gplayapi.helpers.web.WebSearchHelper import com.aurora.gplayapi.helpers.web.WebSearchHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
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
@@ -38,18 +35,18 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class SearchSuggestionViewModel @Inject constructor( class SearchSuggestionViewModel @Inject constructor(
@ApplicationContext private val context: Context, authProvider: AuthProvider,
private val authProvider: AuthProvider, searchHelper: SearchHelper,
private val httpClient: IHttpClient webSearchHelper: WebSearchHelper
) : ViewModel() { ) : ViewModel() {
private val _searchSuggestions = MutableStateFlow<List<SearchSuggestEntry>>(emptyList()) private val _searchSuggestions = MutableStateFlow<List<SearchSuggestEntry>>(emptyList())
val searchSuggestions = _searchSuggestions.asStateFlow() val searchSuggestions = _searchSuggestions.asStateFlow()
private val helper: SearchContract = if (authProvider.isAnonymous) { private val helper: SearchContract = if (authProvider.isAnonymous) {
WebSearchHelper().using(httpClient) webSearchHelper
} else { } else {
SearchHelper(authProvider.authData!!).using(httpClient) searchHelper
} }
fun observeStreamBundles(query: String) { fun observeStreamBundles(query: String) {

View File

@@ -10,7 +10,6 @@ import com.aurora.gplayapi.helpers.PurchaseHelper
import com.aurora.store.AuroraApp import com.aurora.store.AuroraApp
import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.BusEvent
import com.aurora.store.data.model.MinimalApp import com.aurora.store.data.model.MinimalApp
import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.data.work.ExportWorker import com.aurora.store.data.work.ExportWorker
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
@@ -22,7 +21,7 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class SheetsViewModel @Inject constructor( class SheetsViewModel @Inject constructor(
private val authProvider: AuthProvider private val purchaseHelper: PurchaseHelper
) : ViewModel() { ) : ViewModel() {
private val TAG = SheetsViewModel::class.java.simpleName private val TAG = SheetsViewModel::class.java.simpleName
@@ -33,7 +32,6 @@ class SheetsViewModel @Inject constructor(
fun purchase(app: App, customVersion: Int) { fun purchase(app: App, customVersion: Int) {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
try { try {
val purchaseHelper = PurchaseHelper(authProvider.authData!!)
val files = purchaseHelper.purchase(app.packageName, customVersion, app.offerType) val files = purchaseHelper.purchase(app.packageName, customVersion, app.offerType)
if (files.isNotEmpty()) { if (files.isNotEmpty()) {
AuroraApp.events.send( AuroraApp.events.send(

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.subcategory package com.aurora.store.viewmodel.subcategory
import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@@ -29,10 +28,8 @@ import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.contracts.CategoryStreamContract import com.aurora.gplayapi.helpers.contracts.CategoryStreamContract
import com.aurora.gplayapi.helpers.contracts.StreamContract import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.gplayapi.helpers.web.WebCategoryStreamHelper import com.aurora.gplayapi.helpers.web.WebCategoryStreamHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -40,15 +37,11 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class CategoryStreamViewModel @Inject constructor( class CategoryStreamViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val webCategoryStreamHelper: WebCategoryStreamHelper
private val httpClient: IHttpClient
) : ViewModel() { ) : ViewModel() {
private val TAG = CategoryStreamViewModel::class.java.simpleName private val TAG = CategoryStreamViewModel::class.java.simpleName
private var webCategoryStreamHelper = WebCategoryStreamHelper()
.using(httpClient)
val liveData: MutableLiveData<ViewState> = MutableLiveData() val liveData: MutableLiveData<ViewState> = MutableLiveData()
private var stash: MutableMap<String, StreamBundle> = mutableMapOf() private var stash: MutableMap<String, StreamBundle> = mutableMapOf()

View File

@@ -19,18 +19,15 @@
package com.aurora.store.viewmodel.topchart package com.aurora.store.viewmodel.topchart
import android.content.Context
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.contracts.TopChartsContract import com.aurora.gplayapi.helpers.contracts.TopChartsContract
import com.aurora.gplayapi.helpers.web.WebTopChartsHelper import com.aurora.gplayapi.helpers.web.WebTopChartsHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.TopChartStash import com.aurora.store.TopChartStash
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
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.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope
@@ -38,13 +35,9 @@ import javax.inject.Inject
@HiltViewModel @HiltViewModel
class TopChartViewModel @Inject constructor( class TopChartViewModel @Inject constructor(
@ApplicationContext private val context: Context, private val webTopChartsHelper: WebTopChartsHelper
private val httpClient: IHttpClient
): ViewModel() { ): ViewModel() {
private val webTopChartsHelper: TopChartsContract = WebTopChartsHelper()
.using(httpClient)
private var stash: TopChartStash = mutableMapOf() private var stash: TopChartStash = mutableMapOf()
val liveData: MutableLiveData<ViewState> = MutableLiveData() val liveData: MutableLiveData<ViewState> = MutableLiveData()