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 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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user