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

Commit 43745999 authored by Hasib Prince's avatar Hasib Prince
Browse files

App Lounge: conflict resolved, merging main -> 4799-installtext_purchasedapp

parents c287aa3a d4c08cb9
Loading
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@

package foundation.e.apps

import android.app.AlertDialog
import android.content.Context
import android.graphics.Bitmap
import android.os.Build
import android.util.Base64
@@ -177,6 +179,29 @@ class MainActivityViewModel @Inject constructor(
        return false
    }

    /**
     * Handle various cases of unsupported apps here.
     * Returns true if the [fusedApp] is not supported by App Lounge.
     *
     * Pass [alertDialogContext] as null to prevent an alert dialog from being shown to the user.
     * In that case, this method simply works as a validation.
     *
     * Issue: https://gitlab.e.foundation/e/os/backlog/-/issues/178
     */
    fun checkUnsupportedApplication(fusedApp: FusedApp, alertDialogContext: Context? = null): Boolean {
        if (!fusedApp.isFree && fusedApp.price.isBlank()) {
            alertDialogContext?.let { context ->
                AlertDialog.Builder(context).apply {
                    setTitle(R.string.unsupported_app_title)
                    setMessage(context.getString(R.string.unsupported_app_unreleased, fusedApp.name))
                    setPositiveButton(android.R.string.ok, null)
                }.show()
            }
            return true
        }
        return false
    }

    fun getApplication(app: FusedApp, imageView: ImageView?) {
        if (shouldShowPaidAppsSnackBar(app)) {
            return
+15 −2
Original line number Diff line number Diff line
@@ -406,8 +406,16 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
        appSize: MaterialTextView
    ) {
        installButton.apply {
            text = if (fusedApp.isFree) getString(R.string.install) else fusedApp.price
            text = when {
                mainActivityViewModel.checkUnsupportedApplication(fusedApp) ->
                    getString(R.string.not_available)
                fusedApp.isFree -> getString(R.string.install)
                else -> fusedApp.price
            }
            setOnClickListener {
                if (mainActivityViewModel.checkUnsupportedApplication(fusedApp, activity)) {
                    return@setOnClickListener
                }
                applicationIcon?.let {
                    if (fusedApp.isFree) {
                        mainActivityViewModel.getApplication(fusedApp, it)
@@ -439,11 +447,16 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
        appSize: MaterialTextView
    ) {
        installButton.apply {
            text = getString(R.string.update)
            text = if (mainActivityViewModel.checkUnsupportedApplication(fusedApp))
                getString(R.string.not_available)
            else getString(R.string.update)
            setTextColor(Color.WHITE)
            backgroundTintList =
                ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                if (mainActivityViewModel.checkUnsupportedApplication(fusedApp, activity)) {
                    return@setOnClickListener
                }
                applicationIcon?.let {
                    mainActivityViewModel.getApplication(fusedApp, it)
                }
+1 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ class ApplicationListFragment : Fragment(R.layout.fragment_application_list), Fu
                    this,
                    privacyInfoViewModel,
                    appInfoFetchViewModel,
                    mainActivityViewModel,
                    it,
                    pkgManagerModule,
                    pwaManagerModule,
+26 −12
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.facebook.shimmer.ShimmerDrawable
import com.google.android.material.button.MaterialButton
import com.google.android.material.snackbar.Snackbar
import foundation.e.apps.AppInfoFetchViewModel
import foundation.e.apps.MainActivityViewModel
import foundation.e.apps.PrivacyInfoViewModel
import foundation.e.apps.R
import foundation.e.apps.api.cleanapk.CleanAPKInterface
@@ -57,6 +58,7 @@ class ApplicationListRVAdapter(
    private val fusedAPIInterface: FusedAPIInterface,
    private val privacyInfoViewModel: PrivacyInfoViewModel,
    private val appInfoFetchViewModel: AppInfoFetchViewModel,
    private val mainActivityViewModel: MainActivityViewModel,
    private val currentDestinationId: Int,
    private val pkgManagerModule: PkgManagerModule,
    private val pwaManagerModule: PWAManagerModule,
@@ -328,11 +330,17 @@ class ApplicationListRVAdapter(
        materialButton: MaterialButton,
        applicationListItemBinding: ApplicationListItemBinding
    ) {
        if (searchApp.isFree) {
        when {
            mainActivityViewModel.checkUnsupportedApplication(searchApp) -> {
                materialButton.isEnabled = false
                materialButton.text = materialButton.context.getString(R.string.not_available)
            }
            searchApp.isFree -> {
                materialButton.isEnabled = true
                materialButton.text = materialButton.context.getString(R.string.install)
                applicationListItemBinding.progressBarInstall.visibility = View.GONE
        } else {
            }
            else -> {
                materialButton.isEnabled = false
                materialButton.text = ""
                applicationListItemBinding.progressBarInstall.visibility = View.VISIBLE
@@ -344,6 +352,7 @@ class ApplicationListRVAdapter(
                }
            }
        }
    }

    private fun ApplicationListItemBinding.handleUpdatable(
        view: View,
@@ -351,11 +360,16 @@ class ApplicationListRVAdapter(
    ) {
        installButton.apply {
            isEnabled = true
            text = context.getString(R.string.update)
            text = if (mainActivityViewModel.checkUnsupportedApplication(searchApp))
                context.getString(R.string.not_available)
            else context.getString(R.string.update)
            setTextColor(Color.WHITE)
            backgroundTintList = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            strokeColor = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
            setOnClickListener {
                if (mainActivityViewModel.checkUnsupportedApplication(searchApp, context)) {
                    return@setOnClickListener
                }
                installApplication(searchApp, appIcon)
            }
        }
+20 −11
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.facebook.shimmer.ShimmerDrawable
import com.google.android.material.button.MaterialButton
import com.google.android.material.snackbar.Snackbar
import foundation.e.apps.AppInfoFetchViewModel
import foundation.e.apps.MainActivityViewModel
import foundation.e.apps.R
import foundation.e.apps.api.cleanapk.CleanAPKInterface
import foundation.e.apps.api.fused.FusedAPIInterface
@@ -51,6 +52,7 @@ class HomeChildRVAdapter(
    private val pkgManagerModule: PkgManagerModule,
    private val pwaManagerModule: PWAManagerModule,
    private val appInfoFetchViewModel: AppInfoFetchViewModel,
    private val mainActivityViewModel: MainActivityViewModel,
    private val user: User,
    private val lifecycleOwner: LifecycleOwner,
    private val paidAppHandler: ((FusedApp) -> Unit)? = null
@@ -269,11 +271,17 @@ class HomeChildRVAdapter(
        materialButton: MaterialButton,
        homeChildListItemBinding: HomeChildListItemBinding
    ) {
        if (homeApp.isFree) {
        when {
            mainActivityViewModel.checkUnsupportedApplication(homeApp) -> {
                materialButton.isEnabled = false
                materialButton.text = materialButton.context.getString(R.string.not_available)
            }
            homeApp.isFree -> {
                materialButton.isEnabled = true
                materialButton.text = materialButton.context.getString(R.string.install)
                homeChildListItemBinding.progressBarInstall.visibility = View.GONE
        } else {
            }
            else -> {
                materialButton.isEnabled = false
                materialButton.text = ""
                homeChildListItemBinding.progressBarInstall.visibility = View.VISIBLE
@@ -285,6 +293,7 @@ class HomeChildRVAdapter(
                }
            }
        }
    }

    fun setData(newList: List<FusedApp>) {
        this.submitList(newList.map { it.copy() })
Loading