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

Commit f0455d48 authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

Merge branch '3683-stage-1-3903-add-compose-to-project' into 'main'

chore: add Jetpack Compose support with scaffolding for v2 search

See merge request !664
parents 1852b086 b8e064a9
Loading
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ plugins {
    id 'kotlin-allopen'
    id 'kotlin-parcelize'
    id 'jacoco'
    alias libs.plugins.compose.compiler
}

jacoco {
@@ -73,7 +74,7 @@ tasks.withType(Test).configureEach {
}

android {
    compileSdk = 35
    compileSdk = 36

    defaultConfig {
        applicationId = "foundation.e.apps"
@@ -178,6 +179,7 @@ android {
    buildFeatures {
        buildConfig = true
        viewBinding = true
        compose = true
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_21
@@ -343,6 +345,26 @@ dependencies {

    // JSoup
    implementation(libs.jsoup)

    // Compose
    def composeBom = platform(libs.compose.bom)
    implementation composeBom
    androidTestImplementation composeBom

    implementation libs.compose.material3
    implementation libs.compose.material.icons.extended

    implementation libs.activity.compose
    implementation libs.lifecycle.viewmodel.compose
    implementation libs.runtime.livedata

    // Android Studio Preview support for Compose
    implementation libs.compose.ui.tooling.preview
    debugImplementation libs.compose.ui.tooling

    // UI Tests for Compose
    androidTestImplementation libs.compose.ui.test.junit4
    debugImplementation libs.compose.ui.test.manifest
}

def retrieveKey(String keyName, String defaultValue) {
+2 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.DownloadManager
import android.content.Context
import android.database.Cursor
import android.net.Uri
import androidx.core.net.toUri
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.OpenForTesting
import foundation.e.apps.R
@@ -78,7 +79,7 @@ class DownloadManager @Inject constructor(
    ): Long {
        var downloadId = -1L
        try {
            val request = DownloadManager.Request(Uri.parse(url))
            val request = DownloadManager.Request(url.toUri())
                .setTitle(context.getString(R.string.downloading))
                .setDestinationUri(Uri.fromFile(downloadFile))
            if (appLoungePreference.isOnlyUnmeteredNetworkEnabled()) {
+3 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
package foundation.e.apps.data.application.data

import android.net.Uri
import androidx.core.net.toUri
import com.aurora.gplayapi.Constants.Restriction
import com.aurora.gplayapi.data.models.ContentRating
import com.google.gson.annotations.SerializedName
@@ -109,10 +110,10 @@ data class Application(

val Application.shareUri: Uri
    get() = when (type) {
        PWA -> Uri.parse(url)
        PWA -> url.toUri()
        NATIVE -> when {
            isFDroidApp -> buildFDroidUri(package_name)
            else -> Uri.parse(shareUrl)
            else -> shareUrl.toUri()
        }
    }

+2 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.app.NotificationManager
import android.content.Context
import android.net.Uri
import android.os.Environment
import androidx.core.net.toUri
import androidx.lifecycle.LiveData
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.R
@@ -236,7 +237,7 @@ class AppManagerImpl @Inject constructor(
            } else {
                context.getString(R.string.additional_file_for, appInstall.name)
            }
            val request = DownloadManager.Request(Uri.parse(it))
            val request = DownloadManager.Request(it.toUri())
                .setTitle(requestTitle)
                .setDestinationUri(Uri.fromFile(packagePath))

+5 −5
Original line number Diff line number Diff line
@@ -7,10 +7,10 @@ import android.content.Intent
import android.database.Cursor
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.net.Uri
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.drawable.IconCompat
import androidx.core.net.toUri
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.OpenForTesting
import foundation.e.apps.data.application.data.Application
@@ -64,7 +64,7 @@ class PwaManager @Inject constructor(
     */
    fun getPwaStatus(application: Application): Status {
        context.contentResolver.query(
            Uri.parse(PWA_PLAYER),
            PWA_PLAYER.toUri(),
            null,
            null,
            null,
@@ -106,7 +106,7 @@ class PwaManager @Inject constructor(
     */
    fun launchPwa(application: Application) {
        val launchIntent = Intent(VIEW_PWA).apply {
            data = Uri.parse(application.url)
            data = application.url.toUri()
            putExtra(PWA_ID, application.pwaPlayerDbId)
            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS)
@@ -137,7 +137,7 @@ class PwaManager @Inject constructor(
            put(ICON, iconByteArray)
        }

        context.contentResolver.insert(Uri.parse(PWA_PLAYER), values)?.let {
        context.contentResolver.insert(PWA_PLAYER.toUri(), values)?.let {
            val databaseID = ContentUris.parseId(it)
            publishShortcut(appInstall, iconBitmap, databaseID)
        }
@@ -170,7 +170,7 @@ class PwaManager @Inject constructor(

        val intent = Intent().apply {
            action = VIEW_PWA
            data = Uri.parse(appInstall.downloadURLList[0])
            data = appInstall.downloadURLList[0].toUri()
            putExtra(PWA_NAME, appInstall.name)
            putExtra(PWA_ID, databaseID)
            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
Loading