diff --git a/app/src/main/java/com/aurora/store/util/PathUtil.kt b/app/src/main/java/com/aurora/store/util/PathUtil.kt index 35a3185d3..3783c7d3a 100644 --- a/app/src/main/java/com/aurora/store/util/PathUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PathUtil.kt @@ -95,10 +95,6 @@ object PathUtil { return File(getObbDownloadDir(packageName), file.name) } - fun needsStorageManagerPerm(fileList: List): Boolean { - return fileList.any { it.type == GPlayFile.FileType.OBB || it.type == GPlayFile.FileType.PATCH } - } - fun getSpoofDirectory(context: Context): File { return File(context.filesDir, SPOOF) } diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index 237db1f05..a3ff32dfb 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -45,6 +45,7 @@ import com.aurora.Constants import com.aurora.Constants.EXODUS_SUBMIT_PAGE import com.aurora.extensions.browse import com.aurora.extensions.hide +import com.aurora.extensions.requiresObbDir import com.aurora.extensions.runOnUiThread import com.aurora.extensions.share import com.aurora.extensions.show @@ -582,7 +583,7 @@ class AppDetailsFragment : BaseFragment() { bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED updateActionState(State.PROGRESS) - if (PathUtil.needsStorageManagerPerm(app.fileList)) { + if (app.fileList.requiresObbDir()) { if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) { viewModel.download(app) } else { diff --git a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt index 507f80cbf..bfba18e19 100644 --- a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt @@ -26,6 +26,7 @@ import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.aurora.Constants import com.aurora.extensions.browse +import com.aurora.extensions.requiresObbDir import com.aurora.store.MobileNavigationDirections import com.aurora.store.PermissionType 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.update.Update 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.app.AppUpdateViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppViewModel_ @@ -156,7 +156,7 @@ class UpdatesFragment : BaseFragment() { if (viewModel.updateAllEnqueued) { cancelAll() } else { - appList.keys.forEach { updateSingle(it, true) } + updateAll() } requestModelBuild() } @@ -188,10 +188,8 @@ class UpdatesFragment : BaseFragment() { } } - private fun updateSingle(update: Update, updateAll: Boolean = false) { - viewModel.updateAllEnqueued = updateAll - - if (PathUtil.needsStorageManagerPerm(update.fileList)) { + private fun updateSingle(update: Update) { + if (update.fileList.requiresObbDir()) { if (permissionProvider.isGranted(PermissionType.STORAGE_MANAGER)) { viewModel.download(update) } else { @@ -202,6 +200,19 @@ class UpdatesFragment : BaseFragment() { } } + 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) { viewModel.cancelDownload(update.packageName) } diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt index 265209ad1..5bc0d9e1b 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt @@ -49,6 +49,12 @@ class UpdatesViewModel @Inject constructor( viewModelScope.launch { downloadHelper.enqueueUpdate(update) } } + fun downloadAll() { + viewModelScope.launch { + updates.value?.forEach { downloadHelper.enqueueUpdate(it) } + } + } + fun cancelDownload(packageName: String) { viewModelScope.launch { downloadHelper.cancelDownload(packageName) } }