Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2de26e1f authored by Hasib Prince's avatar Hasib Prince
Browse files

App Lounge: implemented UX for paidapps

parent d6ad26ae
Loading
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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
@@ -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
        }
    }

+1 −0
Original line number Diff line number Diff line
@@ -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(),
+26 −4
Original line number Diff line number Diff line
@@ -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,
@@ -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,
@@ -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")
                    }
                }
            }
        }
+20 −7
Original line number Diff line number Diff line
@@ -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() {
+11 −1
Original line number Diff line number Diff line
@@ -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
@@ -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