Ask storage permission only if the downloads has OBB/Patch file

This commit is contained in:
Rahul Kumar Patel
2021-03-06 15:44:49 +05:30
parent c5da58bc2a
commit 1a858977ab

View File

@@ -379,7 +379,7 @@ class AppDetailsActivity : BaseDetailsActivity() {
var filesExist = true var filesExist = true
it.downloads.forEach { download -> it.downloads.forEach { download ->
filesExist = filesExist && FileUtils.getFile(download.file).exists() filesExist = filesExist && FileUtils.getFile(download.file).exists()
} }
if (filesExist) if (filesExist)
@@ -396,6 +396,7 @@ class AppDetailsActivity : BaseDetailsActivity() {
private fun purchase() { private fun purchase() {
updateActionState(ActionButton.State.PROGRESS) updateActionState(ActionButton.State.PROGRESS)
task { task {
val authData = AuthProvider val authData = AuthProvider
.with(this) .with(this)
@@ -404,9 +405,20 @@ class AppDetailsActivity : BaseDetailsActivity() {
PurchaseHelper(authData) PurchaseHelper(authData)
.using(HttpClient.getPreferredClient()) .using(HttpClient.getPreferredClient())
.purchase(app.packageName, app.versionCode, app.offerType) .purchase(app.packageName, app.versionCode, app.offerType)
} successUi { } successUi { files ->
if (it.isNotEmpty()) { if (files.isNotEmpty()) {
enqueue(it) var hasOBB = false
files.forEach { file ->
if (file.type == File.FileType.OBB || file.type == File.FileType.PATCH) {
hasOBB = true
}
}
if (hasOBB)
enqueueWithStoragePermission(files)
else
enqueue(files)
} else { } else {
Log.e("Failed to download : ${app.displayName}") Log.e("Failed to download : ${app.displayName}")
updateActionState(ActionButton.State.IDLE) updateActionState(ActionButton.State.IDLE)
@@ -418,10 +430,14 @@ class AppDetailsActivity : BaseDetailsActivity() {
} }
} }
private fun enqueue(files: List<File>) = runWithPermissions( private fun enqueueWithStoragePermission(files: List<File>) = runWithPermissions(
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
) { ) {
enqueue(files)
}
private fun enqueue(files: List<File>) {
val requestList = files val requestList = files
.filter { it.url.isNotEmpty() } .filter { it.url.isNotEmpty() }
.map { .map {