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 androidx.lifecycle.ViewModelProvider
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.isRAndAbove import com.aurora.extensions.isRAndAbove
import com.aurora.extensions.stackTraceToString
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.State import com.aurora.store.State
import com.aurora.store.data.downloader.getGroupId 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.model.UpdateFile
import com.aurora.store.data.service.UpdateService import com.aurora.store.data.service.UpdateService
import com.aurora.store.databinding.FragmentUpdatesBinding import com.aurora.store.databinding.FragmentUpdatesBinding
import com.aurora.store.util.Log
import com.aurora.store.util.PathUtil import com.aurora.store.util.PathUtil
import com.aurora.store.util.isExternalStorageEnable import com.aurora.store.util.isExternalStorageEnable
import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_ 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.AbstractFetchGroupListener
import com.tonyodev.fetch2.Download import com.tonyodev.fetch2.Download
import com.tonyodev.fetch2.FetchGroup import com.tonyodev.fetch2.FetchGroup
import nl.komponents.kovenant.task
import java.io.File
class UpdatesFragment : BaseFragment() { class UpdatesFragment : BaseFragment() {
@@ -257,10 +252,9 @@ class UpdatesFragment : BaseFragment() {
.positiveAction { _ -> updateSingle(updateFile.app) } .positiveAction { _ -> updateSingle(updateFile.app) }
.negativeAction { _ -> cancelSingle(updateFile.app) } .negativeAction { _ -> cancelSingle(updateFile.app) }
.installAction { _ -> .installAction { _ ->
install( updateFile.group?.downloads?.let {
updateFile.app.packageName, VM.install(requireContext(), updateFile.app.packageName, it)
updateFile.group?.downloads }
)
} }
.state(updateFile.state) .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) { private fun openAppMenuSheet(app: App) {
val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG) val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG)
if (fragment != null) if (fragment != null)
@@ -378,4 +346,4 @@ class UpdatesFragment : BaseFragment() {
AppMenuSheet.TAG AppMenuSheet.TAG
) )
} }
} }

View File

@@ -20,6 +20,8 @@
package com.aurora.store.viewmodel.all package com.aurora.store.viewmodel.all
import android.app.Application import android.app.Application
import android.content.Context
import android.util.Log
import androidx.core.content.pm.PackageInfoCompat import androidx.core.content.pm.PackageInfoCompat
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope 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.downloader.getGroupId
import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.BusEvent
import com.aurora.store.data.event.InstallerEvent import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.model.UpdateFile import com.aurora.store.data.model.UpdateFile
import com.tonyodev.fetch2.Download
import com.tonyodev.fetch2.FetchGroup import com.tonyodev.fetch2.FetchGroup
import java.io.File
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
@@ -41,6 +46,8 @@ import java.util.*
class UpdatesViewModel(application: Application) : BaseAppsViewModel(application) { class UpdatesViewModel(application: Application) : BaseAppsViewModel(application) {
private val TAG = UpdatesViewModel::class.java.simpleName
var updateFileMap: MutableMap<Int, UpdateFile> = mutableMapOf() var updateFileMap: MutableMap<Int, UpdateFile> = mutableMapOf()
var liveUpdateData: MutableLiveData<MutableMap<Int, UpdateFile>> = MutableLiveData() var liveUpdateData: MutableLiveData<MutableMap<Int, UpdateFile>> = MutableLiveData()
var updateAllEnqueued: Boolean = false var updateAllEnqueued: Boolean = false
@@ -151,6 +158,24 @@ class UpdatesViewModel(application: Application) : BaseAppsViewModel(application
liveUpdateData.postValue(updateFileMap) 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) { private fun updateListAndPost(packageName: String) {
val groupIDsOfPackageName = RequestGroupIdBuilder.getGroupIDsForApp(getApplication<Application>().applicationContext, packageName.hashCode()) val groupIDsOfPackageName = RequestGroupIdBuilder.getGroupIDsForApp(getApplication<Application>().applicationContext, packageName.hashCode())
groupIDsOfPackageName.forEach { groupIDsOfPackageName.forEach {