UpdatesFragment: Move updateAll logic to viewmodel

Also switch to extension everywhere to check if app needs storage
manager permission

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-10-24 18:37:11 +05:30
parent 8794a47058
commit 3395751974
4 changed files with 25 additions and 11 deletions

View File

@@ -95,10 +95,6 @@ object PathUtil {
return File(getObbDownloadDir(packageName), file.name) return File(getObbDownloadDir(packageName), file.name)
} }
fun needsStorageManagerPerm(fileList: List<GPlayFile>): Boolean {
return fileList.any { it.type == GPlayFile.FileType.OBB || it.type == GPlayFile.FileType.PATCH }
}
fun getSpoofDirectory(context: Context): File { fun getSpoofDirectory(context: Context): File {
return File(context.filesDir, SPOOF) return File(context.filesDir, SPOOF)
} }

View File

@@ -45,6 +45,7 @@ import com.aurora.Constants
import com.aurora.Constants.EXODUS_SUBMIT_PAGE import com.aurora.Constants.EXODUS_SUBMIT_PAGE
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.hide import com.aurora.extensions.hide
import com.aurora.extensions.requiresObbDir
import com.aurora.extensions.runOnUiThread import com.aurora.extensions.runOnUiThread
import com.aurora.extensions.share import com.aurora.extensions.share
import com.aurora.extensions.show import com.aurora.extensions.show
@@ -582,7 +583,7 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
updateActionState(State.PROGRESS) updateActionState(State.PROGRESS)
if (PathUtil.needsStorageManagerPerm(app.fileList)) { if (app.fileList.requiresObbDir()) {
if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) { if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) {
viewModel.download(app) viewModel.download(app)
} else { } else {

View File

@@ -26,6 +26,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.requiresObbDir
import com.aurora.store.MobileNavigationDirections import com.aurora.store.MobileNavigationDirections
import com.aurora.store.PermissionType import com.aurora.store.PermissionType
import com.aurora.store.R import com.aurora.store.R
@@ -34,7 +35,6 @@ import com.aurora.store.data.providers.PermissionProvider
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.data.room.update.Update import com.aurora.store.data.room.update.Update
import com.aurora.store.databinding.FragmentUpdatesBinding import com.aurora.store.databinding.FragmentUpdatesBinding
import com.aurora.store.util.PathUtil
import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_ import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_
import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_ import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
@@ -156,7 +156,7 @@ class UpdatesFragment : BaseFragment<FragmentUpdatesBinding>() {
if (viewModel.updateAllEnqueued) { if (viewModel.updateAllEnqueued) {
cancelAll() cancelAll()
} else { } else {
appList.keys.forEach { updateSingle(it, true) } updateAll()
} }
requestModelBuild() requestModelBuild()
} }
@@ -188,10 +188,8 @@ class UpdatesFragment : BaseFragment<FragmentUpdatesBinding>() {
} }
} }
private fun updateSingle(update: Update, updateAll: Boolean = false) { private fun updateSingle(update: Update) {
viewModel.updateAllEnqueued = updateAll if (update.fileList.requiresObbDir()) {
if (PathUtil.needsStorageManagerPerm(update.fileList)) {
if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) { if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) {
viewModel.download(update) viewModel.download(update)
} else { } else {
@@ -202,6 +200,19 @@ class UpdatesFragment : BaseFragment<FragmentUpdatesBinding>() {
} }
} }
private fun updateAll() {
viewModel.updateAllEnqueued = true
if (viewModel.updates.value?.any { it.fileList.requiresObbDir() } == true) {
if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) {
viewModel.downloadAll()
} else {
permissionProvider.request(PermissionType.STORAGE_MANAGER)
}
} else {
viewModel.downloadAll()
}
}
private fun cancelSingle(update: Update) { private fun cancelSingle(update: Update) {
viewModel.cancelDownload(update.packageName) viewModel.cancelDownload(update.packageName)
} }

View File

@@ -49,6 +49,12 @@ class UpdatesViewModel @Inject constructor(
viewModelScope.launch { downloadHelper.enqueueUpdate(update) } viewModelScope.launch { downloadHelper.enqueueUpdate(update) }
} }
fun downloadAll() {
viewModelScope.launch {
updates.value?.forEach { downloadHelper.enqueueUpdate(it) }
}
}
fun cancelDownload(packageName: String) { fun cancelDownload(packageName: String) {
viewModelScope.launch { downloadHelper.cancelDownload(packageName) } viewModelScope.launch { downloadHelper.cancelDownload(packageName) }
} }