UpdateFragment: Drop dependency upon kovenant
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user