Loading app/build.gradle +23 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ plugins { id 'kotlin-allopen' id 'kotlin-parcelize' id 'jacoco' alias libs.plugins.compose.compiler } jacoco { Loading Loading @@ -73,7 +74,7 @@ tasks.withType(Test).configureEach { } android { compileSdk = 35 compileSdk = 36 defaultConfig { applicationId = "foundation.e.apps" Loading Loading @@ -178,6 +179,7 @@ android { buildFeatures { buildConfig = true viewBinding = true compose = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_21 Loading Loading @@ -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) { Loading app/src/main/java/foundation/e/apps/data/DownloadManager.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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()) { Loading app/src/main/java/foundation/e/apps/data/application/data/Application.kt +3 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() } } Loading app/src/main/java/foundation/e/apps/data/install/AppManagerImpl.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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)) Loading app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt +5 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -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) Loading Loading @@ -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) } Loading Loading @@ -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 Loading
app/build.gradle +23 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ plugins { id 'kotlin-allopen' id 'kotlin-parcelize' id 'jacoco' alias libs.plugins.compose.compiler } jacoco { Loading Loading @@ -73,7 +74,7 @@ tasks.withType(Test).configureEach { } android { compileSdk = 35 compileSdk = 36 defaultConfig { applicationId = "foundation.e.apps" Loading Loading @@ -178,6 +179,7 @@ android { buildFeatures { buildConfig = true viewBinding = true compose = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_21 Loading Loading @@ -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) { Loading
app/src/main/java/foundation/e/apps/data/DownloadManager.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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()) { Loading
app/src/main/java/foundation/e/apps/data/application/data/Application.kt +3 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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() } } Loading
app/src/main/java/foundation/e/apps/data/install/AppManagerImpl.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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)) Loading
app/src/main/java/foundation/e/apps/install/pkg/PwaManager.kt +5 −5 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -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) Loading Loading @@ -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) } Loading Loading @@ -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