UpdateFragment: Drop dependency upon kovenant

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-20 17:26:45 +05:30
parent 74d1ca9522
commit 6892be4821
2 changed files with 29 additions and 36 deletions

View File

@@ -36,17 +36,14 @@ import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModelProvider
import com.aurora.Constants
import com.aurora.extensions.isRAndAbove
import com.aurora.extensions.stackTraceToString
import com.aurora.extensions.toast
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.State
import com.aurora.store.data.downloader.getGroupId
import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.model.UpdateFile
import com.aurora.store.data.service.UpdateService
import com.aurora.store.databinding.FragmentUpdatesBinding
import com.aurora.store.util.Log
import com.aurora.store.util.PathUtil
import com.aurora.store.util.isExternalStorageEnable
import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_
@@ -59,8 +56,6 @@ import com.aurora.store.viewmodel.all.UpdatesViewModel
import com.tonyodev.fetch2.AbstractFetchGroupListener
import com.tonyodev.fetch2.Download
import com.tonyodev.fetch2.FetchGroup
import nl.komponents.kovenant.task
import java.io.File
class UpdatesFragment : BaseFragment() {
@@ -257,10 +252,9 @@ class UpdatesFragment : BaseFragment() {
.positiveAction { _ -> updateSingle(updateFile.app) }
.negativeAction { _ -> cancelSingle(updateFile.app) }
.installAction { _ ->
install(
updateFile.app.packageName,
updateFile.group?.downloads
)
updateFile.group?.downloads?.let {
VM.install(requireContext(), updateFile.app.packageName, it)
}
}
.state(updateFile.state)
)
@@ -338,32 +332,6 @@ class UpdatesFragment : BaseFragment() {
}
}
@Synchronized
private fun install(packageName: String, files: List<Download>?) {
files?.let { downloads ->
var filesExist = true
downloads.forEach { download ->
filesExist = filesExist && File(download.file).exists()
}
if (filesExist) {
task {
AppInstaller.getInstance(requireContext())
.getPreferredInstaller()
.install(
packageName,
files
.filter { it.file.endsWith(".apk") }
.map { it.file }.toList()
)
} fail {
Log.e(it.stackTraceToString())
}
}
}
}
private fun openAppMenuSheet(app: App) {
val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG)
if (fragment != null)
@@ -378,4 +346,4 @@ class UpdatesFragment : BaseFragment() {
AppMenuSheet.TAG
)
}
}
}

View File

@@ -20,6 +20,8 @@
package com.aurora.store.viewmodel.all
import android.app.Application
import android.content.Context
import android.util.Log
import androidx.core.content.pm.PackageInfoCompat
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
@@ -30,8 +32,11 @@ import com.aurora.store.data.downloader.RequestGroupIdBuilder
import com.aurora.store.data.downloader.getGroupId
import com.aurora.store.data.event.BusEvent
import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.model.UpdateFile
import com.tonyodev.fetch2.Download
import com.tonyodev.fetch2.FetchGroup
import java.io.File
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
@@ -41,6 +46,8 @@ import java.util.*
class UpdatesViewModel(application: Application) : BaseAppsViewModel(application) {
private val TAG = UpdatesViewModel::class.java.simpleName
var updateFileMap: MutableMap<Int, UpdateFile> = mutableMapOf()
var liveUpdateData: MutableLiveData<MutableMap<Int, UpdateFile>> = MutableLiveData()
var updateAllEnqueued: Boolean = false
@@ -151,6 +158,24 @@ class UpdatesViewModel(application: Application) : BaseAppsViewModel(application
liveUpdateData.postValue(updateFileMap)
}
@Synchronized
fun install(context: Context, packageName: String, files: List<Download>) {
if (files.all { File(it.file).exists() }) {
viewModelScope.launch(Dispatchers.IO) {
try {
AppInstaller.getInstance(context).getPreferredInstaller().install(
packageName,
files.filter { it.file.endsWith(".apk") }.map { it.file }.toList()
)
} catch (exception: Exception) {
Log.e(TAG, "Failed to install $packageName", exception)
}
}
} else {
Log.e(TAG, "Given files doesn't exists!")
}
}
private fun updateListAndPost(packageName: String) {
val groupIDsOfPackageName = RequestGroupIdBuilder.getGroupIDsForApp(getApplication<Application>().applicationContext, packageName.hashCode())
groupIDsOfPackageName.forEach {