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)
}
fun needsStorageManagerPerm(fileList: List<GPlayFile>): Boolean {
return fileList.any { it.type == GPlayFile.FileType.OBB || it.type == GPlayFile.FileType.PATCH }
}
fun getSpoofDirectory(context: Context): File {
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.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<FragmentDetailsBinding>() {
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 {

View File

@@ -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<FragmentUpdatesBinding>() {
if (viewModel.updateAllEnqueued) {
cancelAll()
} else {
appList.keys.forEach { updateSingle(it, true) }
updateAll()
}
requestModelBuild()
}
@@ -188,10 +188,8 @@ class UpdatesFragment : BaseFragment<FragmentUpdatesBinding>() {
}
}
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<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) {
viewModel.cancelDownload(update.packageName)
}

View File

@@ -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) }
}