diff --git a/app/build.gradle b/app/build.gradle index 8a1d97c8ce214303fde7d70af49db163ee837196..f311d9a658355bc5e1fedc1872897931abf75ce3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { id 'kotlin-kapt' id 'org.jlleitschuh.gradle.ktlint' version '10.2.0' id 'androidx.navigation.safeargs.kotlin' - id 'dagger.hilt.android.plugin' + id 'com.google.dagger.hilt.android' id 'kotlin-allopen' } @@ -42,7 +42,7 @@ def getSentryDsn = { -> } android { - compileSdk 31 + compileSdk 33 defaultConfig { applicationId "foundation.e.apps" @@ -152,8 +152,9 @@ dependencies { implementation 'foundation.e.lib:telemetry:0.0.4-alpha' implementation 'foundation.e:gplayapi:3.0.1' - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'androidx.core:core-ktx:1.9.0' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.fragment:fragment-ktx:1.5.6' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' @@ -164,16 +165,16 @@ dependencies { debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' testImplementation "com.google.truth:truth:1.1.3" testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // Optional -- Robolectric environment - testImplementation "androidx.test:core:1.4.0" + testImplementation "androidx.test:core:1.5.0" // Optional -- Mockito framework - testImplementation "org.mockito:mockito-core:4.6.1" + testImplementation "org.mockito:mockito-core:5.0.0" // Optional -- mockito-kotlin - testImplementation "org.mockito.kotlin:mockito-kotlin:3.2.0" - testImplementation 'org.mockito:mockito-inline:2.13.0' - testImplementation "androidx.arch.core:core-testing:2.1.0" + testImplementation "org.mockito.kotlin:mockito-kotlin:4.1.0" + testImplementation 'org.mockito:mockito-inline:5.0.0' + testImplementation "androidx.arch.core:core-testing:2.2.0" testImplementation "io.mockk:mockk:1.12.3" @@ -182,8 +183,8 @@ dependencies { implementation 'com.github.Baseflow:PhotoView:2.3.0' //Protobuf and Gson - implementation 'com.google.code.gson:gson:2.8.9' - implementation "com.google.protobuf:protobuf-java:3.14.0" + implementation 'com.google.code.gson:gson:2.9.0' + implementation "com.google.protobuf:protobuf-java:3.17.2" // ViewPager2 and RecyclerView implementation "androidx.viewpager2:viewpager2:1.0.0" @@ -211,19 +212,19 @@ dependencies { implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.11.2" // Navigation Components - def navigation_version = "2.3.5" + def navigation_version = "2.5.3" implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version" implementation "androidx.navigation:navigation-ui-ktx:$navigation_version" // Hilt def hilt_version = '2.40.5' - kapt "com.google.dagger:hilt-compiler:$hilt_version" - implementation "com.google.dagger:hilt-android:$hilt_version" + kapt "com.google.dagger:hilt-compiler:2.44.2" + implementation "com.google.dagger:hilt-android:2.44.2" implementation 'androidx.hilt:hilt-work:1.0.0' kapt 'androidx.hilt:hilt-compiler:1.0.0' // Lifecycle Components - def lifecycle_version = "2.4.0" + def lifecycle_version = "2.6.1" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "android.arch.lifecycle:extensions:1.1.1" diff --git a/app/src/main/java/foundation/e/apps/api/DownloadManager.kt b/app/src/main/java/foundation/e/apps/api/DownloadManager.kt index a45e47a1085fa8ee987d2279d0ed8d0efc499e3c..70883b2c5172807c8e3e600e92a898dfa76dcd1a 100644 --- a/app/src/main/java/foundation/e/apps/api/DownloadManager.kt +++ b/app/src/main/java/foundation/e/apps/api/DownloadManager.kt @@ -111,7 +111,7 @@ class DownloadManager @Inject constructor( return downloadId } - private fun checkDownloadProgress( + fun checkDownloadProgress( downloadId: Long, filePath: String = "", downloadCompleted: ((Boolean, String) -> Unit)? diff --git a/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt b/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt index 12a9f3bd5ce0e309d2b0724de3887b5742213f83..6da3d49292fa4cea74dad5cac3be6466ecce9b66 100644 --- a/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +++ b/app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt @@ -386,7 +386,7 @@ class ApplicationFragment : TimeoutFragment(R.layout.fragment_application) { } private fun setupToolbar(view: View) { - val startDestination = findNavController().graph.startDestination + val startDestination = findNavController().graph.startDestinationId if (startDestination == R.id.applicationFragment) { binding.toolbar.setNavigationOnClickListener { val action = ApplicationFragmentDirections.actionApplicationFragmentToHomeFragment() diff --git a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListRVAdapter.kt index 79d4abb7653786010c84c31ad3718b2413f0ef1b..216b0335cd6ef8a31482a44f8da21d0508928830 100644 --- a/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/applicationlist/ApplicationListRVAdapter.kt @@ -219,16 +219,17 @@ class ApplicationListRVAdapter( val action = when (currentDestinationId) { R.id.applicationListFragment -> { ApplicationListFragmentDirections.actionApplicationListFragmentToApplicationFragment( - searchApp._id, searchApp.package_name, + searchApp._id, searchApp.origin, catText, + searchApp.isGplayReplaced ) } R.id.searchFragment -> { SearchFragmentDirections.actionSearchFragmentToApplicationFragment( - searchApp._id, searchApp.package_name, + searchApp._id, searchApp.origin, catText, searchApp.isGplayReplaced @@ -236,10 +237,11 @@ class ApplicationListRVAdapter( } R.id.updatesFragment -> { UpdatesFragmentDirections.actionUpdatesFragmentToApplicationFragment( - searchApp._id, searchApp.package_name, + searchApp._id, searchApp.origin, catText, + searchApp.isGplayReplaced ) } else -> null @@ -479,7 +481,8 @@ class ApplicationListRVAdapter( searchApp.isFree -> { materialButton.enableInstallButton() materialButton.text = materialButton.context.getString(R.string.install) - materialButton.strokeColor = ContextCompat.getColorStateList(holder.itemView.context, R.color.light_grey) + materialButton.strokeColor = + ContextCompat.getColorStateList(holder.itemView.context, R.color.light_grey) applicationListItemBinding.progressBarInstall.visibility = View.GONE } else -> { diff --git a/app/src/main/java/foundation/e/apps/home/model/HomeChildRVAdapter.kt b/app/src/main/java/foundation/e/apps/home/model/HomeChildRVAdapter.kt index 8cf88f29c8abbfc77bc74264db8f92b46f239a5f..3c59b4e44a1a17cc5836444be864168216cc231b 100644 --- a/app/src/main/java/foundation/e/apps/home/model/HomeChildRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/home/model/HomeChildRVAdapter.kt @@ -93,10 +93,11 @@ class HomeChildRVAdapter( appName.text = homeApp.name homeLayout.setOnClickListener { val action = HomeFragmentDirections.actionHomeFragmentToApplicationFragment( - homeApp._id, homeApp.package_name, + homeApp._id, homeApp.origin, - homeApp.category + homeApp.category, + homeApp.isGplayReplaced ) holder.itemView.findNavController().navigate(action) } @@ -236,7 +237,11 @@ class HomeChildRVAdapter( if (homeApp.is_pwa) { mainActivityViewModel.launchPwa(homeApp) } else { - context.startActivity(mainActivityViewModel.getLaunchIntentForPackageName(homeApp.package_name)) + context.startActivity( + mainActivityViewModel.getLaunchIntentForPackageName( + homeApp.package_name + ) + ) } } } diff --git a/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt b/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt index 5156a7b343adc4070edb88526092216039dd2971..2e62a91caf3948a83e7a696ea7fcfb1482556d12 100644 --- a/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt +++ b/app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt @@ -56,7 +56,6 @@ class AppInstallProcessorTest { private lateinit var fakeFusedDownloadDAO: FakeFusedDownloadDAO private lateinit var databaseRepository: DatabaseRepository - private lateinit var fakeDownloadManager: DownloadManager private lateinit var fakeFusedManagerRepository: FakeFusedManagerRepository @Mock @@ -86,14 +85,11 @@ class AppInstallProcessorTest { databaseRepository = DatabaseRepository(fakeFusedDownloadDAO) fakeFusedManagerRepository = FakeFusedManagerRepository(fakeFusedDownloadDAO, fakeFusedManager, fakeFdroidRepository) - fakeDownloadManager = - FakeDownloadManager(downloadManager, "/home/data/foundation.e.apps/", query) appInstallProcessor = AppInstallProcessor( context, databaseRepository, fakeFusedManagerRepository, - fakeDownloadManager, dataStoreManager ) } diff --git a/app/src/test/java/foundation/e/apps/installProcessor/FakeDownloadManager.kt b/app/src/test/java/foundation/e/apps/installProcessor/FakeDownloadManager.kt deleted file mode 100644 index 58c38f0a950917b59bbf899385fd6a26fdc63d25..0000000000000000000000000000000000000000 --- a/app/src/test/java/foundation/e/apps/installProcessor/FakeDownloadManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright MURENA SAS 2023 - * Apps Quickly and easily install Android apps onto your device! - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package foundation.e.apps.installProcessor - -import foundation.e.apps.api.DownloadManager - -class FakeDownloadManager( - downloadManger: android.app.DownloadManager, - cacheDir: String, - query: android.app.DownloadManager.Query -) : DownloadManager(downloadManger, cacheDir, query) { - - override suspend fun checkDownloadProcess( - downloadingIds: LongArray, - handleFailed: suspend () -> Unit - ) { - if (downloadingIds.contains(-1)) { - handleFailed() - } - } -} diff --git a/app/src/test/java/foundation/e/apps/installProcessor/FakeFusedManagerRepository.kt b/app/src/test/java/foundation/e/apps/installProcessor/FakeFusedManagerRepository.kt index 4d3f0e0235b3086bd2eabb5d928704a5c69dbd11..8b65b50b567a425ba2bfee54a40610ce5579b97e 100644 --- a/app/src/test/java/foundation/e/apps/installProcessor/FakeFusedManagerRepository.kt +++ b/app/src/test/java/foundation/e/apps/installProcessor/FakeFusedManagerRepository.kt @@ -40,11 +40,12 @@ class FakeFusedManagerRepository( fusedDownload.status = Status.DOWNLOADING fusedDownload.downloadIdMap = mutableMapOf(Pair(341, false), Pair(342, false)) fusedDownloadDAO.updateDownload(fusedDownload) - delay(10000) + delay(5000) if (willDownloadFail) { fusedDownload.downloadIdMap.clear() fusedDownload.downloadIdMap = mutableMapOf(Pair(-1, false), Pair(-1, false)) + fusedDownload.status = Status.INSTALLATION_ISSUE fusedDownloadDAO.updateDownload(fusedDownload) return } diff --git a/build.gradle b/build.gradle index 47455671491fd4a4c52c442db3feeb11a3ac6ace..66271133a86c892c6e6434ef3cb005f2f53ab072 100644 --- a/build.gradle +++ b/build.gradle @@ -1,19 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript { - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.1.0' - classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10' - classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5" - classpath "com.google.dagger:hilt-android-gradle-plugin:2.40.5" - classpath "org.jetbrains.kotlin:kotlin-allopen:1.6.10" - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } +plugins { + id 'com.android.application' version '7.4.0' apply false + id 'com.android.library' version '7.4.0' apply false + id 'org.jetbrains.kotlin.android' version '1.8.0' apply false + id 'com.google.dagger.hilt.android' version '2.44' apply false + id "org.jetbrains.kotlin.plugin.allopen" version "1.8.0" + id 'androidx.navigation.safeargs' version '2.5.3' apply false } allprojects { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a11cd90bdd1c46afc4719cd81af55f93ee5901d4..6c95afb598372464b03ab7b56181d97b41aacb78 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Oct 06 09:42:58 IST 2021 -distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME +#Fri Mar 24 11:52:02 BDT 2023 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index 3d49969840669e17c8b646d3688d13faf1f4620f..4f3c63f186ad758687c7fae4fc47ab773fbd7f17 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,10 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories {