From 840c2f0b1071f36fae3279c830ab3c7bdd486ecf Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 18 Jul 2024 12:31:36 +0700 Subject: [PATCH] UpdatesFragment: Restore menu action sheet for quick actions Signed-off-by: Aayush Gupta --- .../com/aurora/store/data/model/MinimalApp.kt | 25 +++++++++++++++++++ .../aurora/store/data/work/ExportWorker.kt | 3 ++- .../view/ui/all/InstalledAppsFragment.kt | 3 ++- .../store/view/ui/commons/BaseFragment.kt | 3 ++- .../store/view/ui/updates/UpdatesFragment.kt | 5 ++++ .../store/viewmodel/sheets/SheetsViewModel.kt | 3 ++- .../main/res/navigation/mobile_navigation.xml | 2 +- 7 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/aurora/store/data/model/MinimalApp.kt diff --git a/app/src/main/java/com/aurora/store/data/model/MinimalApp.kt b/app/src/main/java/com/aurora/store/data/model/MinimalApp.kt new file mode 100644 index 000000000..362f3a149 --- /dev/null +++ b/app/src/main/java/com/aurora/store/data/model/MinimalApp.kt @@ -0,0 +1,25 @@ +package com.aurora.store.data.model + +import android.os.Parcelable +import com.aurora.gplayapi.data.models.App +import com.aurora.store.data.room.update.Update +import kotlinx.parcelize.Parcelize + +@Parcelize +data class MinimalApp( + val packageName: String, + val versionCode: Int, + val displayName: String +) : Parcelable { + + companion object { + + fun fromApp(app: App): MinimalApp { + return MinimalApp(app.packageName, app.versionCode, app.displayName) + } + + fun fromUpdate(update: Update): MinimalApp { + return MinimalApp(update.packageName, update.versionCode, update.displayName) + } + } +} diff --git a/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt b/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt index 46d5f53c4..3daf0067d 100644 --- a/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt +++ b/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt @@ -14,6 +14,7 @@ import androidx.work.OutOfQuotaPolicy import androidx.work.WorkManager import androidx.work.WorkerParameters import com.aurora.gplayapi.data.models.App +import com.aurora.store.data.model.MinimalApp import com.aurora.store.data.room.download.Download import com.aurora.store.util.NotificationUtil import com.aurora.store.util.PackageUtil.getPackageInfo @@ -47,7 +48,7 @@ class ExportWorker @AssistedInject constructor( * @param app App to export * @see [ExportWorker] */ - fun exportInstalledApp(context: Context, app: App, uri: Uri) { + fun exportInstalledApp(context: Context, app: MinimalApp, uri: Uri) { val inputData = Data.Builder() .putBoolean(IS_DOWNLOAD, false) .putString(URI, uri.toString()) diff --git a/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt index f8e66ef9b..ecd71f03d 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt @@ -27,6 +27,7 @@ import androidx.lifecycle.lifecycleScope import com.aurora.gplayapi.data.models.App import com.aurora.store.AuroraApp import com.aurora.store.data.event.InstallerEvent +import com.aurora.store.data.model.MinimalApp import com.aurora.store.databinding.FragmentAppsBinding import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.app.AppListViewModel_ @@ -97,7 +98,7 @@ class InstalledAppsFragment : BaseFragment() { .app(app) .click { _ -> openDetailsFragment(app.packageName, app) } .longClick { _ -> - openAppMenuSheet(app) + openAppMenuSheet(MinimalApp.fromApp(app)) false } ) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt index fdcff455b..f9242e4c6 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt @@ -30,6 +30,7 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.store.MobileNavigationDirections +import com.aurora.store.data.model.MinimalApp import com.google.gson.Gson import java.lang.reflect.ParameterizedType import javax.inject.Inject @@ -112,7 +113,7 @@ abstract class BaseFragment : Fragment() { ) } - fun openAppMenuSheet(app: App) { + fun openAppMenuSheet(app: MinimalApp) { findNavController().navigate(MobileNavigationDirections.actionGlobalAppMenuSheet(app)) } } 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 95053378b..0f59ce09c 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 @@ -35,6 +35,7 @@ import com.aurora.extensions.isRAndAbove import com.aurora.extensions.toast import com.aurora.store.MobileNavigationDirections import com.aurora.store.R +import com.aurora.store.data.model.MinimalApp import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.update.Update import com.aurora.store.databinding.FragmentUpdatesBinding @@ -182,6 +183,10 @@ class UpdatesFragment : BaseFragment() { openDetailsFragment(update.packageName) } } + .longClick { _ -> + openAppMenuSheet(MinimalApp.fromUpdate(update)) + false + } .positiveAction { _ -> updateSingle(update) } .negativeAction { _ -> cancelSingle(update) } ) diff --git a/app/src/main/java/com/aurora/store/viewmodel/sheets/SheetsViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/sheets/SheetsViewModel.kt index 78756d2ba..2af659746 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/sheets/SheetsViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/sheets/SheetsViewModel.kt @@ -9,6 +9,7 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.helpers.PurchaseHelper import com.aurora.store.AuroraApp import com.aurora.store.data.event.BusEvent +import com.aurora.store.data.model.MinimalApp import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.room.download.Download import com.aurora.store.data.work.ExportWorker @@ -47,7 +48,7 @@ class SheetsViewModel @Inject constructor( } } - fun copyInstalledApp(context: Context, app: App, uri: Uri) { + fun copyInstalledApp(context: Context, app: MinimalApp, uri: Uri) { ExportWorker.exportInstalledApp(context, app, uri) } diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 7d03ed59b..723d5709d 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -380,7 +380,7 @@ tools:layout="@layout/sheet_app_menu" > + app:argType="com.aurora.store.data.model.MinimalApp" />