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

View File

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

View File

@@ -54,6 +54,7 @@ class UpdateWorker @AssistedInject constructor(
private val updateDao: UpdateDao,
private val downloadHelper: DownloadHelper,
private val authProvider: AuthProvider,
private val appDetailsHelper: AppDetailsHelper,
@Assisted private val appContext: Context,
@Assisted workerParams: WorkerParameters
) : AuthWorker(authProvider, appContext, workerParams) {
@@ -147,9 +148,6 @@ class UpdateWorker @AssistedInject constructor(
private suspend fun checkUpdates(): List<Update> {
return withContext(Dispatchers.IO) {
val packageInfoMap = PackageUtil.getPackageInfoMap(appContext)
val appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
val updates = packageInfoMap.keys.let { packages ->
val filteredPackages = packages.filter { !blacklistProvider.isBlacklisted(it) }
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 com.aurora.gplayapi.data.models.App
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
@@ -40,8 +38,7 @@ import javax.inject.Inject
@HiltViewModel
class InstalledViewModel @Inject constructor(
private val authProvider: AuthProvider,
private val httpClient: IHttpClient,
private val appDetailsHelper: AppDetailsHelper,
private val blacklistProvider: BlacklistProvider,
@ApplicationContext private val context: Context
) : ViewModel() {
@@ -58,9 +55,6 @@ class InstalledViewModel @Inject constructor(
fun fetchApps() {
viewModelScope.launch(Dispatchers.IO) {
try {
val appDetailsHelper = AppDetailsHelper(authProvider.authData!!)
.using(httpClient)
PackageUtil.getPackageInfoMap(context).keys.let { packages ->
val filtersPackages = packages.filter { !blacklistProvider.isBlacklisted(it) }

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,5 @@
package com.aurora.store.viewmodel.details
import android.content.Context
import android.util.Log
import androidx.lifecycle.ViewModel
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.model.ExodusReport
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.FavouriteDao
import com.google.gson.GsonBuilder
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -33,9 +30,10 @@ import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport
@HiltViewModel
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 authProvider: AuthProvider,
private val favouriteDao: FavouriteDao,
private val httpClient: IHttpClient
) : ViewModel() {
@@ -45,9 +43,6 @@ class AppDetailsViewModel @Inject constructor(
private val exodusBaseUrl = "https://reports.exodus-privacy.eu.org/api/search/"
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 _app = MutableSharedFlow<App>()
val app = _app.asSharedFlow()
@@ -113,9 +108,7 @@ class AppDetailsViewModel @Inject constructor(
viewModelScope.launch(Dispatchers.IO) {
try {
val report = dataSafetyReportStash.getOrPut(packageName) {
WebDataSafetyHelper()
.using(httpClient)
.fetch(packageName)
webDataSafetyHelper.fetch(packageName)
}
_dataSafetyReport.emit(report)
} catch (exception: Exception) {

View File

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

View File

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

View File

@@ -19,7 +19,6 @@
package com.aurora.store.viewmodel.details
import android.content.Context
import android.util.Log
import androidx.lifecycle.MutableLiveData
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.StreamHelper
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.providers.AuthProvider
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope
@@ -42,17 +38,12 @@ import javax.inject.Inject
@HiltViewModel
class DevProfileViewModel @Inject constructor(
@ApplicationContext private val context: Context,
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
private val appDetailsHelper: AppDetailsHelper,
private val streamHelper: StreamHelper
) : ViewModel() {
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()
var devStream:DevStream = DevStream()
var streamBundle: StreamBundle = StreamBundle()

View File

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

View File

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

View File

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

View File

@@ -19,17 +19,14 @@
package com.aurora.store.viewmodel.search
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.gplayapi.helpers.SearchHelper
import com.aurora.gplayapi.helpers.contracts.SearchContract
import com.aurora.gplayapi.helpers.web.WebSearchHelper
import com.aurora.gplayapi.network.IHttpClient
import com.aurora.store.data.providers.AuthProvider
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
@@ -38,18 +35,18 @@ import javax.inject.Inject
@HiltViewModel
class SearchSuggestionViewModel @Inject constructor(
@ApplicationContext private val context: Context,
private val authProvider: AuthProvider,
private val httpClient: IHttpClient
authProvider: AuthProvider,
searchHelper: SearchHelper,
webSearchHelper: WebSearchHelper
) : ViewModel() {
private val _searchSuggestions = MutableStateFlow<List<SearchSuggestEntry>>(emptyList())
val searchSuggestions = _searchSuggestions.asStateFlow()
private val helper: SearchContract = if (authProvider.isAnonymous) {
WebSearchHelper().using(httpClient)
webSearchHelper
} else {
SearchHelper(authProvider.authData!!).using(httpClient)
searchHelper
}
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.data.event.BusEvent
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.work.ExportWorker
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -22,7 +21,7 @@ import javax.inject.Inject
@HiltViewModel
class SheetsViewModel @Inject constructor(
private val authProvider: AuthProvider
private val purchaseHelper: PurchaseHelper
) : ViewModel() {
private val TAG = SheetsViewModel::class.java.simpleName
@@ -33,7 +32,6 @@ class SheetsViewModel @Inject constructor(
fun purchase(app: App, customVersion: Int) {
viewModelScope.launch(Dispatchers.IO) {
try {
val purchaseHelper = PurchaseHelper(authProvider.authData!!)
val files = purchaseHelper.purchase(app.packageName, customVersion, app.offerType)
if (files.isNotEmpty()) {
AuroraApp.events.send(

View File

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

View File

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