Loading app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +6 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ package foundation.e.apps.api.fused import android.content.Context import android.text.format.Formatter import android.util.Log import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Artwork Loading Loading @@ -638,19 +639,17 @@ class FusedAPIImpl @Inject constructor( origin = Origin.GPLAY, shareUrl = this.shareUrl, appSize = Formatter.formatFileSize(context, this.size), isFree = this.isFree isFree = this.isFree, price = this.price ) app.updateStatus() return app } private fun FusedApp.updateStatus() { this.status = if (this.isFree) { if (this.status != Status.INSTALLATION_ISSUE) { this.status = pkgManagerModule.getPackageStatus(this.package_name, this.latest_version_code) } else if (this.status == Status.INSTALLATION_ISSUE) { this.status } else { Status.BLOCKED } } Loading app/src/main/java/foundation/e/apps/api/fused/data/FusedApp.kt +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ data class FusedApp( val shareUrl: String = String(), val appSize: String = String(), var source: String = String(), val price: String = String(), val isFree: Boolean = true, val is_pwa: Boolean = false, val url: String = String(), Loading app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +26 −4 Original line number Diff line number Diff line Loading @@ -261,7 +261,13 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) { val fusedApp = applicationViewModel.fusedApp.value ?: FusedApp() when (status) { Status.INSTALLED -> handleInstalled(installButton, view, fusedApp, downloadPB, appSize) Status.INSTALLED -> handleInstalled( installButton, view, fusedApp, downloadPB, appSize ) Status.UPDATABLE -> handleUpdatable( installButton, view, Loading @@ -270,7 +276,12 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) { appSize ) Status.UNAVAILABLE -> handleUnavaiable(installButton, fusedApp, downloadPB, appSize) Status.QUEUED, Status.AWAITING -> handleQueued(installButton, fusedApp, downloadPB, appSize) Status.QUEUED, Status.AWAITING -> handleQueued( installButton, fusedApp, downloadPB, appSize ) Status.DOWNLOADING -> handleDownloading( installButton, fusedApp, Loading Loading @@ -388,10 +399,21 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) { appSize: MaterialTextView ) { installButton.apply { text = getString(R.string.install) text = if (fusedApp.isFree) getString(R.string.install) else fusedApp.price setOnClickListener { applicationIcon?.let { if (fusedApp.isFree) { mainActivityViewModel.getApplication(fusedApp, it) } else { ApplicationDialogFragment( title = getString(R.string.dialog_title_paid_app, fusedApp.name), message = getString(R.string.dialog_paidapp_message, fusedApp.name, fusedApp.price), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "ApplicationFragment") } } } } Loading app/src/main/java/foundation/e/apps/application/subFrags/ApplicationDialogFragment.kt +20 −7 Original line number Diff line number Diff line Loading @@ -33,20 +33,33 @@ import foundation.e.apps.R @AndroidEntryPoint class ApplicationDialogFragment( private val drawable: Int, private val drawable: Int = -1, private val title: String, private val message: String private val message: String, private val positiveButtonText: String = "", private val positiveButtonAction: (() -> Unit)? = null, private val cancelButtonText: String = "", private val cancelButtonAction: (() -> Unit)? = null, ) : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return MaterialAlertDialogBuilder(requireContext()) .setIcon(drawable) .setTitle(title) val positiveButtonText = positiveButtonText.ifEmpty { getString(R.string.ok) } val materialAlertDialogBuilder = MaterialAlertDialogBuilder(requireContext()) .setTitle(Html.fromHtml(title, Html.FROM_HTML_MODE_COMPACT)) .setMessage(Html.fromHtml(message, Html.FROM_HTML_MODE_COMPACT)) .setPositiveButton(getString(R.string.ok)) { _, _ -> .setPositiveButton(positiveButtonText) { _, _ -> positiveButtonAction?.invoke() this.dismiss() } .create() .setNegativeButton(cancelButtonText) { _, _ -> cancelButtonAction?.invoke() this.dismiss() } if (drawable != -1) { materialAlertDialogBuilder.setIcon(drawable) } return materialAlertDialogBuilder.create() } override fun onResume() { Loading app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt +11 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import foundation.e.apps.PrivacyInfoViewModel import foundation.e.apps.R import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.application.subFrags.ApplicationDialogFragment import foundation.e.apps.applicationlist.model.ApplicationListRVAdapter import foundation.e.apps.databinding.FragmentApplicationListBinding import foundation.e.apps.manager.download.data.DownloadProgress Loading Loading @@ -114,7 +115,16 @@ class ApplicationListFragment : Fragment(R.layout.fragment_application_list), Fu pkgManagerModule, User.valueOf(mainActivityViewModel.userType.value ?: User.UNAVAILABLE.name), viewLifecycleOwner ) ) { fusedApp -> ApplicationDialogFragment( title = getString(R.string.dialog_title_paid_app, fusedApp.name), message = getString(R.string.dialog_paidapp_message, fusedApp.name, fusedApp.price), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "HomeFragment") } } recyclerView.apply { Loading Loading
app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +6 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ package foundation.e.apps.api.fused import android.content.Context import android.text.format.Formatter import android.util.Log import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Artwork Loading Loading @@ -638,19 +639,17 @@ class FusedAPIImpl @Inject constructor( origin = Origin.GPLAY, shareUrl = this.shareUrl, appSize = Formatter.formatFileSize(context, this.size), isFree = this.isFree isFree = this.isFree, price = this.price ) app.updateStatus() return app } private fun FusedApp.updateStatus() { this.status = if (this.isFree) { if (this.status != Status.INSTALLATION_ISSUE) { this.status = pkgManagerModule.getPackageStatus(this.package_name, this.latest_version_code) } else if (this.status == Status.INSTALLATION_ISSUE) { this.status } else { Status.BLOCKED } } Loading
app/src/main/java/foundation/e/apps/api/fused/data/FusedApp.kt +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ data class FusedApp( val shareUrl: String = String(), val appSize: String = String(), var source: String = String(), val price: String = String(), val isFree: Boolean = true, val is_pwa: Boolean = false, val url: String = String(), Loading
app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +26 −4 Original line number Diff line number Diff line Loading @@ -261,7 +261,13 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) { val fusedApp = applicationViewModel.fusedApp.value ?: FusedApp() when (status) { Status.INSTALLED -> handleInstalled(installButton, view, fusedApp, downloadPB, appSize) Status.INSTALLED -> handleInstalled( installButton, view, fusedApp, downloadPB, appSize ) Status.UPDATABLE -> handleUpdatable( installButton, view, Loading @@ -270,7 +276,12 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) { appSize ) Status.UNAVAILABLE -> handleUnavaiable(installButton, fusedApp, downloadPB, appSize) Status.QUEUED, Status.AWAITING -> handleQueued(installButton, fusedApp, downloadPB, appSize) Status.QUEUED, Status.AWAITING -> handleQueued( installButton, fusedApp, downloadPB, appSize ) Status.DOWNLOADING -> handleDownloading( installButton, fusedApp, Loading Loading @@ -388,10 +399,21 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) { appSize: MaterialTextView ) { installButton.apply { text = getString(R.string.install) text = if (fusedApp.isFree) getString(R.string.install) else fusedApp.price setOnClickListener { applicationIcon?.let { if (fusedApp.isFree) { mainActivityViewModel.getApplication(fusedApp, it) } else { ApplicationDialogFragment( title = getString(R.string.dialog_title_paid_app, fusedApp.name), message = getString(R.string.dialog_paidapp_message, fusedApp.name, fusedApp.price), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "ApplicationFragment") } } } } Loading
app/src/main/java/foundation/e/apps/application/subFrags/ApplicationDialogFragment.kt +20 −7 Original line number Diff line number Diff line Loading @@ -33,20 +33,33 @@ import foundation.e.apps.R @AndroidEntryPoint class ApplicationDialogFragment( private val drawable: Int, private val drawable: Int = -1, private val title: String, private val message: String private val message: String, private val positiveButtonText: String = "", private val positiveButtonAction: (() -> Unit)? = null, private val cancelButtonText: String = "", private val cancelButtonAction: (() -> Unit)? = null, ) : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return MaterialAlertDialogBuilder(requireContext()) .setIcon(drawable) .setTitle(title) val positiveButtonText = positiveButtonText.ifEmpty { getString(R.string.ok) } val materialAlertDialogBuilder = MaterialAlertDialogBuilder(requireContext()) .setTitle(Html.fromHtml(title, Html.FROM_HTML_MODE_COMPACT)) .setMessage(Html.fromHtml(message, Html.FROM_HTML_MODE_COMPACT)) .setPositiveButton(getString(R.string.ok)) { _, _ -> .setPositiveButton(positiveButtonText) { _, _ -> positiveButtonAction?.invoke() this.dismiss() } .create() .setNegativeButton(cancelButtonText) { _, _ -> cancelButtonAction?.invoke() this.dismiss() } if (drawable != -1) { materialAlertDialogBuilder.setIcon(drawable) } return materialAlertDialogBuilder.create() } override fun onResume() { Loading
app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt +11 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import foundation.e.apps.PrivacyInfoViewModel import foundation.e.apps.R import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.application.subFrags.ApplicationDialogFragment import foundation.e.apps.applicationlist.model.ApplicationListRVAdapter import foundation.e.apps.databinding.FragmentApplicationListBinding import foundation.e.apps.manager.download.data.DownloadProgress Loading Loading @@ -114,7 +115,16 @@ class ApplicationListFragment : Fragment(R.layout.fragment_application_list), Fu pkgManagerModule, User.valueOf(mainActivityViewModel.userType.value ?: User.UNAVAILABLE.name), viewLifecycleOwner ) ) { fusedApp -> ApplicationDialogFragment( title = getString(R.string.dialog_title_paid_app, fusedApp.name), message = getString(R.string.dialog_paidapp_message, fusedApp.name, fusedApp.price), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "HomeFragment") } } recyclerView.apply { Loading