From 6892be48213ac69e6f350f5321417648184a74f2 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 20 Jul 2023 17:26:45 +0530 Subject: [PATCH] UpdateFragment: Drop dependency upon kovenant Signed-off-by: Aayush Gupta --- .../store/view/ui/updates/UpdatesFragment.kt | 40 ++----------------- .../store/viewmodel/all/UpdatesViewModel.kt | 25 ++++++++++++ 2 files changed, 29 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt index 479361969..3609f70a7 100644 --- a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt @@ -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?) { - 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 ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt index a31f8875e..926d13c1f 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/all/UpdatesViewModel.kt @@ -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 = mutableMapOf() var liveUpdateData: MutableLiveData> = 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) { + 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().applicationContext, packageName.hashCode()) groupIDsOfPackageName.forEach {