data: DownloadWorkerUtil -> DownloadHelper
Relocate and rename DownloadWorkerUtil to DownloadHelper. We plan on having a separate helper class for updates too and considering all util methods are more or less independent, it doesn't makes sense to keep these classes into util package Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -31,7 +31,7 @@ import com.aurora.extensions.setAppTheme
|
|||||||
import com.aurora.store.data.event.EventFlow
|
import com.aurora.store.data.event.EventFlow
|
||||||
import com.aurora.store.data.receiver.PackageManagerReceiver
|
import com.aurora.store.data.receiver.PackageManagerReceiver
|
||||||
import com.aurora.store.util.CommonUtil
|
import com.aurora.store.util.CommonUtil
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import com.aurora.store.util.NotificationUtil
|
import com.aurora.store.util.NotificationUtil
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
@@ -53,7 +53,7 @@ class AuroraApp : Application(), Configuration.Provider, ImageLoaderFactory {
|
|||||||
lateinit var workerFactory: HiltWorkerFactory
|
lateinit var workerFactory: HiltWorkerFactory
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var downloadWorkerUtil: DownloadWorkerUtil
|
lateinit var downloadHelper: DownloadHelper
|
||||||
|
|
||||||
override val workManagerConfiguration: Configuration
|
override val workManagerConfiguration: Configuration
|
||||||
get() = Configuration.Builder()
|
get() = Configuration.Builder()
|
||||||
@@ -87,7 +87,7 @@ class AuroraApp : Application(), Configuration.Provider, ImageLoaderFactory {
|
|||||||
NotificationUtil.createNotificationChannel(this)
|
NotificationUtil.createNotificationChannel(this)
|
||||||
|
|
||||||
// Initialize DownloadWorker to observe and trigger downloads
|
// Initialize DownloadWorker to observe and trigger downloads
|
||||||
downloadWorkerUtil.init()
|
downloadHelper.init()
|
||||||
|
|
||||||
//Register broadcast receiver for package install/uninstall
|
//Register broadcast receiver for package install/uninstall
|
||||||
ContextCompat.registerReceiver(
|
ContextCompat.registerReceiver(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.aurora.store.util
|
package com.aurora.store.data.helper
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@@ -14,6 +14,7 @@ import com.aurora.store.data.room.download.Download
|
|||||||
import com.aurora.store.data.room.download.DownloadDao
|
import com.aurora.store.data.room.download.DownloadDao
|
||||||
import com.aurora.store.data.room.update.Update
|
import com.aurora.store.data.room.update.Update
|
||||||
import com.aurora.store.data.work.DownloadWorker
|
import com.aurora.store.data.work.DownloadWorker
|
||||||
|
import com.aurora.store.util.PathUtil
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
@@ -27,7 +28,7 @@ import javax.inject.Inject
|
|||||||
/**
|
/**
|
||||||
* Helper class to work with the [DownloadWorker].
|
* Helper class to work with the [DownloadWorker].
|
||||||
*/
|
*/
|
||||||
class DownloadWorkerUtil @Inject constructor(
|
class DownloadHelper @Inject constructor(
|
||||||
@ApplicationContext private val context: Context,
|
@ApplicationContext private val context: Context,
|
||||||
private val downloadDao: DownloadDao,
|
private val downloadDao: DownloadDao,
|
||||||
private val gson: Gson
|
private val gson: Gson
|
||||||
@@ -46,7 +47,7 @@ class DownloadWorkerUtil @Inject constructor(
|
|||||||
val downloadsList = downloadDao.downloads()
|
val downloadsList = downloadDao.downloads()
|
||||||
.stateIn(AuroraApp.scope, SharingStarted.WhileSubscribed(), emptyList())
|
.stateIn(AuroraApp.scope, SharingStarted.WhileSubscribed(), emptyList())
|
||||||
|
|
||||||
private val TAG = DownloadWorkerUtil::class.java.simpleName
|
private val TAG = DownloadHelper::class.java.simpleName
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes failed download from the queue and starts observing for newly enqueued apps.
|
* Removes failed download from the queue and starts observing for newly enqueued apps.
|
||||||
@@ -180,7 +181,7 @@ class DownloadWorkerUtil @Inject constructor(
|
|||||||
// Ensure all app downloads are unique to preserve individual records
|
// Ensure all app downloads are unique to preserve individual records
|
||||||
WorkManager.getInstance(context)
|
WorkManager.getInstance(context)
|
||||||
.enqueueUniqueWork(
|
.enqueueUniqueWork(
|
||||||
"${DOWNLOAD_WORKER}/${download.packageName}",
|
"$DOWNLOAD_WORKER/${download.packageName}",
|
||||||
ExistingWorkPolicy.KEEP, work
|
ExistingWorkPolicy.KEEP, work
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ 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.room.download.DownloadDao
|
import com.aurora.store.data.room.download.DownloadDao
|
||||||
import com.aurora.store.util.CertUtil
|
import com.aurora.store.util.CertUtil
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import com.aurora.store.util.NotificationUtil
|
import com.aurora.store.util.NotificationUtil
|
||||||
import com.aurora.store.util.PathUtil
|
import com.aurora.store.util.PathUtil
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
@@ -53,7 +53,7 @@ import com.aurora.gplayapi.data.models.File as GPlayFile
|
|||||||
/**
|
/**
|
||||||
* An expedited long-running worker to download and trigger installation for given apps.
|
* An expedited long-running worker to download and trigger installation for given apps.
|
||||||
*
|
*
|
||||||
* Avoid using this worker directly and prefer using [DownloadWorkerUtil] instead.
|
* Avoid using this worker directly and prefer using [DownloadHelper] instead.
|
||||||
*/
|
*/
|
||||||
@HiltWorker
|
@HiltWorker
|
||||||
class DownloadWorker @AssistedInject constructor(
|
class DownloadWorker @AssistedInject constructor(
|
||||||
@@ -92,7 +92,7 @@ class DownloadWorker @AssistedInject constructor(
|
|||||||
|
|
||||||
// Try to parse input data into a valid app
|
// Try to parse input data into a valid app
|
||||||
try {
|
try {
|
||||||
val downloadData = inputData.getString(DownloadWorkerUtil.DOWNLOAD_DATA)
|
val downloadData = inputData.getString(DownloadHelper.DOWNLOAD_DATA)
|
||||||
download = gson.fromJson(downloadData, Download::class.java)
|
download = gson.fromJson(downloadData, Download::class.java)
|
||||||
|
|
||||||
val bitmap = BitmapFactory.decodeStream(withContext(Dispatchers.IO) {
|
val bitmap = BitmapFactory.decodeStream(withContext(Dispatchers.IO) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import com.aurora.extensions.isMAndAbove
|
|||||||
import com.aurora.store.data.installer.AppInstaller
|
import com.aurora.store.data.installer.AppInstaller
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
import com.aurora.store.util.AppUtil
|
import com.aurora.store.util.AppUtil
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import com.aurora.store.util.NotificationUtil
|
import com.aurora.store.util.NotificationUtil
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_AUTO
|
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_AUTO
|
||||||
@@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit.MINUTES
|
|||||||
@HiltWorker
|
@HiltWorker
|
||||||
class UpdateWorker @AssistedInject constructor(
|
class UpdateWorker @AssistedInject constructor(
|
||||||
private val appUtil: AppUtil,
|
private val appUtil: AppUtil,
|
||||||
private val downloadWorkerUtil: DownloadWorkerUtil,
|
private val downloadHelper: DownloadHelper,
|
||||||
private val authProvider: AuthProvider,
|
private val authProvider: AuthProvider,
|
||||||
@Assisted private val appContext: Context,
|
@Assisted private val appContext: Context,
|
||||||
@Assisted workerParams: WorkerParameters
|
@Assisted workerParams: WorkerParameters
|
||||||
@@ -143,7 +143,7 @@ class UpdateWorker @AssistedInject constructor(
|
|||||||
if (list.isEmpty()) return@let
|
if (list.isEmpty()) return@let
|
||||||
|
|
||||||
Log.i(TAG, "Found auto-update enabled apps, updating!")
|
Log.i(TAG, "Found auto-update enabled apps, updating!")
|
||||||
list.forEach { downloadWorkerUtil.enqueueUpdate(it) }
|
list.forEach { downloadHelper.enqueueUpdate(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notify about remaining apps (if any)
|
// Notify about remaining apps (if any)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import com.aurora.extensions.browse
|
|||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.room.download.Download
|
import com.aurora.store.data.room.download.Download
|
||||||
import com.aurora.store.databinding.FragmentDownloadBinding
|
import com.aurora.store.databinding.FragmentDownloadBinding
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import com.aurora.store.view.epoxy.views.DownloadViewModel_
|
import com.aurora.store.view.epoxy.views.DownloadViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
@@ -44,7 +44,7 @@ import javax.inject.Inject
|
|||||||
class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var downloadWorkerUtil: DownloadWorkerUtil
|
lateinit var downloadHelper: DownloadHelper
|
||||||
|
|
||||||
private lateinit var downloadList: List<Download>
|
private lateinit var downloadList: List<Download>
|
||||||
|
|
||||||
@@ -62,19 +62,19 @@ class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
|||||||
when (it.itemId) {
|
when (it.itemId) {
|
||||||
R.id.action_force_clear_all -> {
|
R.id.action_force_clear_all -> {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
||||||
downloadWorkerUtil.clearAllDownloads()
|
downloadHelper.clearAllDownloads()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_cancel_all -> {
|
R.id.action_cancel_all -> {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
||||||
downloadWorkerUtil.cancelAll()
|
downloadHelper.cancelAll()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_clear_completed -> {
|
R.id.action_clear_completed -> {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
||||||
downloadWorkerUtil.clearFinishedDownloads()
|
downloadHelper.clearFinishedDownloads()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
viewLifecycleOwner.lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
downloadWorkerUtil.downloadsList.collectLatest {
|
downloadHelper.downloadsList.collectLatest {
|
||||||
downloadList = it
|
downloadList = it
|
||||||
updateController(it.reversed())
|
updateController(it.reversed())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import com.aurora.store.R
|
|||||||
import com.aurora.store.data.installer.AppInstaller
|
import com.aurora.store.data.installer.AppInstaller
|
||||||
import com.aurora.store.data.model.DownloadStatus
|
import com.aurora.store.data.model.DownloadStatus
|
||||||
import com.aurora.store.databinding.SheetDownloadMenuBinding
|
import com.aurora.store.databinding.SheetDownloadMenuBinding
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import com.aurora.store.util.PathUtil
|
import com.aurora.store.util.PathUtil
|
||||||
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
@@ -62,7 +62,7 @@ class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var downloadWorkerUtil: DownloadWorkerUtil
|
lateinit var downloadHelper: DownloadHelper
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var appInstaller: AppInstaller
|
lateinit var appInstaller: AppInstaller
|
||||||
@@ -101,14 +101,14 @@ class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
|||||||
|
|
||||||
R.id.action_cancel -> {
|
R.id.action_cancel -> {
|
||||||
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
||||||
downloadWorkerUtil.cancelDownload(args.download.packageName)
|
downloadHelper.cancelDownload(args.download.packageName)
|
||||||
}
|
}
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_clear -> {
|
R.id.action_clear -> {
|
||||||
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
||||||
downloadWorkerUtil.clearDownload(
|
downloadHelper.clearDownload(
|
||||||
args.download.packageName,
|
args.download.packageName,
|
||||||
args.download.versionCode
|
args.download.versionCode
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import androidx.lifecycle.ViewModel
|
|||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.aurora.store.data.room.update.Update
|
import com.aurora.store.data.room.update.Update
|
||||||
import com.aurora.store.util.AppUtil
|
import com.aurora.store.util.AppUtil
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
@@ -35,13 +35,13 @@ import javax.inject.Inject
|
|||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class UpdatesViewModel @Inject constructor(
|
class UpdatesViewModel @Inject constructor(
|
||||||
private val appUtil: AppUtil,
|
private val appUtil: AppUtil,
|
||||||
private val downloadWorkerUtil: DownloadWorkerUtil,
|
private val downloadHelper: DownloadHelper,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
private val TAG = UpdatesViewModel::class.java.simpleName
|
private val TAG = UpdatesViewModel::class.java.simpleName
|
||||||
|
|
||||||
var updateAllEnqueued: Boolean = false
|
var updateAllEnqueued: Boolean = false
|
||||||
|
|
||||||
val downloadsList get() = downloadWorkerUtil.downloadsList
|
val downloadsList get() = downloadHelper.downloadsList
|
||||||
val updates get() = appUtil.updates
|
val updates get() = appUtil.updates
|
||||||
|
|
||||||
private val _fetchingUpdates = MutableStateFlow(false)
|
private val _fetchingUpdates = MutableStateFlow(false)
|
||||||
@@ -59,14 +59,14 @@ class UpdatesViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun download(update: Update) {
|
fun download(update: Update) {
|
||||||
viewModelScope.launch { downloadWorkerUtil.enqueueUpdate(update) }
|
viewModelScope.launch { downloadHelper.enqueueUpdate(update) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun cancelDownload(packageName: String) {
|
fun cancelDownload(packageName: String) {
|
||||||
viewModelScope.launch { downloadWorkerUtil.cancelDownload(packageName) }
|
viewModelScope.launch { downloadHelper.cancelDownload(packageName) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun cancelAll() {
|
fun cancelAll() {
|
||||||
viewModelScope.launch { downloadWorkerUtil.cancelAll(true) }
|
viewModelScope.launch { downloadHelper.cancelAll(true) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import com.aurora.store.data.model.Report
|
|||||||
import com.aurora.store.data.providers.AuthProvider
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
import com.aurora.store.data.room.favourites.Favourite
|
import com.aurora.store.data.room.favourites.Favourite
|
||||||
import com.aurora.store.data.room.favourites.FavouriteDao
|
import com.aurora.store.data.room.favourites.FavouriteDao
|
||||||
import com.aurora.store.util.DownloadWorkerUtil
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
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 dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
@@ -34,7 +34,7 @@ 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,
|
@ApplicationContext private val context: Context,
|
||||||
private val downloadWorkerUtil: DownloadWorkerUtil,
|
private val downloadHelper: DownloadHelper,
|
||||||
private val authProvider: AuthProvider,
|
private val authProvider: AuthProvider,
|
||||||
private val favouriteDao: FavouriteDao,
|
private val favouriteDao: FavouriteDao,
|
||||||
private val httpClient: IHttpClient
|
private val httpClient: IHttpClient
|
||||||
@@ -75,7 +75,7 @@ class AppDetailsViewModel @Inject constructor(
|
|||||||
private val _favourite = MutableStateFlow<Boolean>(false)
|
private val _favourite = MutableStateFlow<Boolean>(false)
|
||||||
val favourite = _favourite.asStateFlow()
|
val favourite = _favourite.asStateFlow()
|
||||||
|
|
||||||
val downloadsList get() = downloadWorkerUtil.downloadsList
|
val downloadsList get() = downloadHelper.downloadsList
|
||||||
|
|
||||||
fun fetchAppDetails(packageName: String) {
|
fun fetchAppDetails(packageName: String) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
@@ -179,11 +179,11 @@ class AppDetailsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun download(app: App) {
|
fun download(app: App) {
|
||||||
viewModelScope.launch { downloadWorkerUtil.enqueueApp(app) }
|
viewModelScope.launch { downloadHelper.enqueueApp(app) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun cancelDownload(app: App) {
|
fun cancelDownload(app: App) {
|
||||||
viewModelScope.launch { downloadWorkerUtil.cancelDownload(app.packageName) }
|
viewModelScope.launch { downloadHelper.cancelDownload(app.packageName) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun toggleFavourite(app: App) {
|
fun toggleFavourite(app: App) {
|
||||||
|
|||||||
Reference in New Issue
Block a user