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

Commit 5b3e17da authored by Aayush Gupta's avatar Aayush Gupta
Browse files

App Lounge: WIP support for PWA

parent 5ef4eeeb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ dependencies {
    implementation 'androidx.preference:preference-ktx:1.2.0'
    implementation "androidx.datastore:datastore-preferences:1.0.0"
    implementation 'com.facebook.shimmer:shimmer:0.5.0'
    implementation 'androidx.core:core-google-shortcuts:1.0.0'
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
    testImplementation "com.google.truth:truth:1.1.3"
    testImplementation 'junit:junit:4.13.2'
+1 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="foundation.e.pwaplayer.provider.READ_WRITE" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+11 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import foundation.e.apps.utils.DataStoreModule
import foundation.e.apps.utils.PreferenceManagerModule
import foundation.e.apps.utils.enums.Origin
import foundation.e.apps.utils.enums.Status
import foundation.e.apps.utils.enums.Type
import javax.inject.Inject
import javax.inject.Named
import javax.inject.Singleton
@@ -194,8 +195,12 @@ class FusedAPIImpl @Inject constructor(
                getPWAAppsResponse(category)
            }
            response?.apps?.forEach {
                it.status =
                it.status = if (it.isFree) {
                    pkgManagerModule.getPackageStatus(it.package_name, it.latest_version_code)
                } else {
                    Status.BLOCKED
                }
                it.type = if (it.is_pwa) Type.PWA else Type.NATIVE
            }
            return response?.apps
        } else {
@@ -213,6 +218,7 @@ class FusedAPIImpl @Inject constructor(
            } else {
                Status.BLOCKED
            }
            it.type = if (it.is_pwa) Type.PWA else Type.NATIVE
        }
        return response?.apps
    }
@@ -225,6 +231,7 @@ class FusedAPIImpl @Inject constructor(
            } else {
                Status.BLOCKED
            }
            it.type = if (it.is_pwa) Type.PWA else Type.NATIVE
        }
        return response?.apps
    }
@@ -267,6 +274,7 @@ class FusedAPIImpl @Inject constructor(
            } else {
                Status.BLOCKED
            }
            fusedApp.type = if (fusedApp.is_pwa) Type.PWA else Type.NATIVE
            list.add(fusedApp)
        }
        return list
@@ -290,6 +298,7 @@ class FusedAPIImpl @Inject constructor(
            } else {
                Status.BLOCKED
            }
            it.type = if (it.is_pwa) Type.PWA else Type.NATIVE
        }
        return response ?: FusedApp()
    }
@@ -503,6 +512,7 @@ class FusedAPIImpl @Inject constructor(
            } else {
                Status.BLOCKED
            }
            it.type = if (it.is_pwa) Type.PWA else Type.NATIVE
            it.source =
                if (source.contentEquals(CleanAPKInterface.APP_SOURCE_FOSS)) "Open Source" else "PWA"
            list.add(it)
+5 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package foundation.e.apps.api.fused.data

import foundation.e.apps.utils.enums.Origin
import foundation.e.apps.utils.enums.Status
import foundation.e.apps.utils.enums.Type

data class FusedApp(
    val _id: String = String(),
@@ -43,5 +44,8 @@ data class FusedApp(
    val shareUrl: String = String(),
    val appSize: String = String(),
    var source: String = String(),
    val isFree: Boolean = true
    val isFree: Boolean = true,
    val is_pwa: Boolean = false,
    val url: String = String(),
    var type: Type = Type.NATIVE
)
+7 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.Bundle
import android.text.Html
import android.util.Log
import android.view.View
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
@@ -62,6 +63,8 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
    private val applicationViewModel: ApplicationViewModel by viewModels()
    private val mainActivityViewModel: MainActivityViewModel by activityViewModels()

    private var applicationIcon: ImageView? = null

    companion object {
        private const val PRIVACY_CALCULATION_SOURCE_CODE_URL =
            "https://doc.e.foundation/privacy_score"
@@ -141,7 +144,7 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
                        backgroundTintList = ContextCompat.getColorStateList(view.context, R.color.colorAccent)
                        setOnClickListener {
                            mainActivityViewModel.authData.value?.let { data ->
                                applicationViewModel.getApplication(data, fusedApp, args.origin)
                                applicationViewModel.getApplication(data, fusedApp, args.origin, applicationIcon!!)
                            }
                        }
                    }
@@ -153,7 +156,7 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
                        text = getString(R.string.install)
                        setOnClickListener {
                            mainActivityViewModel.authData.value?.let { data ->
                                applicationViewModel.getApplication(data, fusedApp, args.origin)
                                applicationViewModel.getApplication(data, fusedApp, args.origin, applicationIcon!!)
                            }
                        }
                    }
@@ -221,6 +224,7 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {

            // Title widgets
            binding.titleInclude.apply {
                applicationIcon = appIcon
                appName.text = it.name
                appAuthor.text = it.author
                categoryTitle.text = it.category
@@ -323,6 +327,7 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
        applicationIcon = null
    }

    private fun shareApp(name: String, shareUrl: String): Intent {
Loading