diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 217b0fd1c61fcb74f64eb48e8fbbd6956e37286d..7c6469b29768c5cfec1a205c2fb89b64e0a370ef 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -27,7 +27,7 @@ LongMethod:MainActivity.kt$MainActivity$override fun onCreate(savedInstanceState: Bundle?) LongMethod:NativeDeviceInfoProviderModule.kt$NativeDeviceInfoProviderModule$@Singleton @Provides fun provideNativeDeviceProperties( @ApplicationContext context: Context, ): Properties LongParameterList:ApplicationDialogFragment.kt$ApplicationDialogFragment$( drawable: Int = -1, title: String, message: String, positiveButtonText: String = "", positiveButtonAction: (() -> Unit)? = null, cancelButtonText: String = "", cancelButtonAction: (() -> Unit)? = null, cancellable: Boolean = true, onDismissListener: (() -> Unit)? = null, ) - LongParameterList:ApplicationListRVAdapter.kt$ApplicationListRVAdapter$( private val fusedAPIInterface: FusedAPIInterface, private val privacyInfoViewModel: PrivacyInfoViewModel, private val appInfoFetchViewModel: AppInfoFetchViewModel, private val mainActivityViewModel: MainActivityViewModel, private val currentDestinationId: Int, private var lifecycleOwner: LifecycleOwner?, private var paidAppHandler: ((FusedApp) -> Unit)? = null ) + LongParameterList:ApplicationListRVAdapter.kt$ApplicationListRVAdapter$( private val applicationInstaller: ApplicationInstaller, private val privacyInfoViewModel: PrivacyInfoViewModel, private val appInfoFetchViewModel: AppInfoFetchViewModel, private val mainActivityViewModel: MainActivityViewModel, private val currentDestinationId: Int, private var lifecycleOwner: LifecycleOwner?, private var paidAppHandler: ((FusedApp) -> Unit)? = null ) LongParameterList:ApplicationViewModel.kt$ApplicationViewModel$( id: String, packageName: String, origin: Origin, isFdroidLink: Boolean, authObjectList: List<AuthObject>, retryBlock: (failedObjects: List<AuthObject>) -> Boolean, ) LongParameterList:CleanApkRetrofit.kt$CleanApkRetrofit$( @Query("keyword") keyword: String, @Query("source") source: String = APP_SOURCE_FOSS, @Query("type") type: String = APP_TYPE_ANY, @Query("nres") nres: Int = 20, @Query("page") page: Int = 1, @Query("by") by: String? = null, ) LongParameterList:EglExtensionProvider.kt$EglExtensionProvider$( egl10: EGL10, eglDisplay: EGLDisplay, eglConfig: EGLConfig?, ai: IntArray, ai1: IntArray?, set: MutableSet<String> ) @@ -195,7 +195,7 @@ TooManyFunctions:AppInstallProcessor.kt$AppInstallProcessor TooManyFunctions:AppPrivacyInfoRepositoryImpl.kt$AppPrivacyInfoRepositoryImpl : IAppPrivacyInfoRepository TooManyFunctions:ApplicationFragment.kt$ApplicationFragment : TimeoutFragment - TooManyFunctions:ApplicationListFragment.kt$ApplicationListFragment : TimeoutFragmentFusedAPIInterface + TooManyFunctions:ApplicationListFragment.kt$ApplicationListFragment : TimeoutFragmentApplicationInstaller TooManyFunctions:ApplicationListRVAdapter.kt$ApplicationListRVAdapter : ListAdapter TooManyFunctions:DownloadManager.kt$DownloadManager TooManyFunctions:FusedAPIRepository.kt$FusedAPIRepository @@ -205,7 +205,7 @@ TooManyFunctions:FusedManagerRepository.kt$FusedManagerRepository TooManyFunctions:GPlayHttpClient.kt$GPlayHttpClient : IHttpClient TooManyFunctions:HomeChildRVAdapter.kt$HomeChildRVAdapter : ListAdapter - TooManyFunctions:HomeFragment.kt$HomeFragment : TimeoutFragmentFusedAPIInterface + TooManyFunctions:HomeFragment.kt$HomeFragment : TimeoutFragmentApplicationInstaller TooManyFunctions:IFusedManager.kt$IFusedManager TooManyFunctions:LoginData.kt$LoginData TooManyFunctions:MainActivity.kt$MainActivity : AppCompatActivity @@ -214,9 +214,9 @@ TooManyFunctions:PlayStoreAuthenticator.kt$PlayStoreAuthenticator : StoreAuthenticatorAuthDataValidator TooManyFunctions:PlayStoreRepositoryImpl.kt$PlayStoreRepositoryImpl : PlayStoreRepository TooManyFunctions:RetrofitModule.kt$RetrofitModule - TooManyFunctions:SearchFragment.kt$SearchFragment : TimeoutFragmentOnQueryTextListenerOnSuggestionListenerFusedAPIInterface + TooManyFunctions:SearchFragment.kt$SearchFragment : TimeoutFragmentOnQueryTextListenerOnSuggestionListenerApplicationInstaller TooManyFunctions:TimeoutFragment.kt$TimeoutFragment : Fragment - TooManyFunctions:UpdatesFragment.kt$UpdatesFragment : TimeoutFragmentFusedAPIInterface + TooManyFunctions:UpdatesFragment.kt$UpdatesFragment : TimeoutFragmentApplicationInstaller TooManyFunctions:UpdatesManagerImpl.kt$UpdatesManagerImpl TooManyFunctions:UpdatesWorker.kt$UpdatesWorker : CoroutineWorker UnusedParameter:ApplicationFragment.kt$ApplicationFragment$it: ImageView diff --git a/app/src/main/java/foundation/e/apps/data/fused/FusedAPIInterface.kt b/app/src/main/java/foundation/e/apps/data/fused/ApplicationInstaller.kt similarity index 78% rename from app/src/main/java/foundation/e/apps/data/fused/FusedAPIInterface.kt rename to app/src/main/java/foundation/e/apps/data/fused/ApplicationInstaller.kt index c60312deb89efbc859aff50596309ac23e5e7930..a17e792b2a809bd9bf7466f7841cd8c46a262d62 100644 --- a/app/src/main/java/foundation/e/apps/data/fused/FusedAPIInterface.kt +++ b/app/src/main/java/foundation/e/apps/data/fused/ApplicationInstaller.kt @@ -18,15 +18,11 @@ package foundation.e.apps.data.fused -import android.widget.ImageView import foundation.e.apps.data.fused.data.FusedApp -/** - * FusedAPIInterface to allow adapter classes to install applications easily - */ -interface FusedAPIInterface { +interface ApplicationInstaller { - fun getApplication(app: FusedApp, appIcon: ImageView? = null) + fun installApplication(app: FusedApp) fun cancelDownload(app: FusedApp) } diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt index ccf2abcbb8b032f827d07bbc8c0040f85cbe8a73..aad78058c9ee45c36b405d0320af5d47384f7355 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListFragment.kt @@ -20,7 +20,6 @@ package foundation.e.apps.ui.applicationlist import android.os.Bundle import android.view.View -import android.widget.ImageView import androidx.appcompat.app.AlertDialog import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels @@ -34,7 +33,7 @@ import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.Status -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.data.login.AuthObject import foundation.e.apps.data.login.exceptions.GPlayLoginException @@ -54,7 +53,7 @@ import javax.inject.Inject @AndroidEntryPoint class ApplicationListFragment : TimeoutFragment(R.layout.fragment_application_list), - FusedAPIInterface { + ApplicationInstaller { // protected to avoid SyntheticAccessor protected val args: ApplicationListFragmentArgs by navArgs() @@ -196,7 +195,7 @@ class ApplicationListFragment : ), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { - getApplication(fusedApp) + installApplication(fusedApp) }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "HomeFragment") @@ -333,7 +332,7 @@ class ApplicationListFragment : super.onPause() } - override fun getApplication(app: FusedApp, appIcon: ImageView?) { + override fun installApplication(app: FusedApp) { mainActivityViewModel.getApplication(app) } diff --git a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt index d28e864b0b900c172e98d821aa29dba99399f647..61b0c46fb4f17a2005f0346f1cdf5ba10f0475cd 100644 --- a/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/applicationlist/ApplicationListRVAdapter.kt @@ -20,7 +20,6 @@ package foundation.e.apps.ui.applicationlist import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.ImageView import androidx.core.content.ContextCompat import androidx.core.view.children import androidx.lifecycle.LifecycleOwner @@ -40,7 +39,7 @@ import foundation.e.apps.data.cleanapk.CleanApkRetrofit import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.databinding.ApplicationListItemBinding import foundation.e.apps.install.pkg.InstallerService @@ -56,7 +55,7 @@ import javax.inject.Singleton @Singleton class ApplicationListRVAdapter( - private val fusedAPIInterface: FusedAPIInterface, + private val applicationInstaller: ApplicationInstaller, private val privacyInfoViewModel: PrivacyInfoViewModel, private val appInfoFetchViewModel: AppInfoFetchViewModel, private val mainActivityViewModel: MainActivityViewModel, @@ -326,7 +325,7 @@ class ApplicationListRVAdapter( backgroundTintList = ContextCompat.getColorStateList(view.context, android.R.color.transparent) setOnClickListener { - installApplication(searchApp, appIcon) + installApplication(searchApp) } } } @@ -447,7 +446,7 @@ class ApplicationListRVAdapter( if (searchApp.isFree || searchApp.isPurchased) { disableInstallButton() text = context.getText(R.string.cancel) - installApplication(searchApp, appIcon) + installApplication(searchApp) } else { paidAppHandler?.invoke(searchApp) } @@ -504,7 +503,7 @@ class ApplicationListRVAdapter( if (mainActivityViewModel.checkUnsupportedApplication(searchApp, context)) { return@setOnClickListener } - installApplication(searchApp, appIcon) + installApplication(searchApp) } } progressBarInstall.visibility = View.GONE @@ -543,12 +542,12 @@ class ApplicationListRVAdapter( this.submitList(newList.map { it.copy() }) } - private fun installApplication(searchApp: FusedApp, appIcon: ImageView) { - fusedAPIInterface.getApplication(searchApp, appIcon) + private fun installApplication(searchApp: FusedApp) { + applicationInstaller.installApplication(searchApp) } private fun cancelDownload(searchApp: FusedApp) { - fusedAPIInterface.cancelDownload(searchApp) + applicationInstaller.cancelDownload(searchApp) } override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { diff --git a/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt b/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt index f1c538a566d4d86480eb75fe16437ebc7fbc5d6d..618db210b9b2b43916c9043af52fe0687e3787a9 100644 --- a/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/home/HomeFragment.kt @@ -20,7 +20,6 @@ package foundation.e.apps.ui.home import android.os.Bundle import android.view.View -import android.widget.ImageView import androidx.appcompat.app.AlertDialog import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels @@ -32,7 +31,7 @@ import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.Status -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.data.login.AuthObject @@ -53,7 +52,7 @@ import kotlinx.coroutines.launch import javax.inject.Inject @AndroidEntryPoint -class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface { +class HomeFragment : TimeoutFragment(R.layout.fragment_home), ApplicationInstaller { /* * Make adapter nullable to avoid memory leaks. @@ -134,7 +133,7 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface ), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { - getApplication(fusedApp) + installApplication(fusedApp) }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "HomeFragment") @@ -284,7 +283,7 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface homeParentRVAdapter = null } - override fun getApplication(app: FusedApp, appIcon: ImageView?) { + override fun installApplication(app: FusedApp) { mainActivityViewModel.getApplication(app) } diff --git a/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt index 1dc7933ab89d508dfd6921af0fe2ee8a46018984..908507ac015dbe82aa200a2fcf6f2c9b95cc2baa 100644 --- a/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/home/model/HomeChildRVAdapter.kt @@ -21,7 +21,6 @@ package foundation.e.apps.ui.home.model import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.ImageView import androidx.core.content.ContextCompat import androidx.lifecycle.LifecycleOwner import androidx.navigation.findNavController @@ -37,7 +36,7 @@ import foundation.e.apps.data.cleanapk.CleanApkRetrofit import foundation.e.apps.data.enums.Origin import foundation.e.apps.data.enums.Status import foundation.e.apps.data.enums.User -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.databinding.HomeChildListItemBinding import foundation.e.apps.ui.AppInfoFetchViewModel @@ -47,7 +46,7 @@ import foundation.e.apps.utils.disableInstallButton import foundation.e.apps.utils.enableInstallButton class HomeChildRVAdapter( - private var fusedAPIInterface: FusedAPIInterface?, + private var applicationInstaller: ApplicationInstaller?, private val appInfoFetchViewModel: AppInfoFetchViewModel, private val mainActivityViewModel: MainActivityViewModel, private var lifecycleOwner: LifecycleOwner?, @@ -136,7 +135,7 @@ class HomeChildRVAdapter( enableInstallButton() text = context.getString(R.string.retry) setOnClickListener { - installApplication(homeApp, appIcon) + installApplication(homeApp) } } progressBarInstall.visibility = View.GONE @@ -201,7 +200,7 @@ class HomeChildRVAdapter( if (homeApp.isFree) { disableInstallButton() text = context.getString(R.string.cancel) - installApplication(homeApp, appIcon) + installApplication(homeApp) } else { paidAppHandler?.invoke(homeApp) } @@ -221,7 +220,7 @@ class HomeChildRVAdapter( if (mainActivityViewModel.checkUnsupportedApplication(homeApp, context)) { return@setOnClickListener } - installApplication(homeApp, appIcon) + installApplication(homeApp) } } progressBarInstall.visibility = View.GONE @@ -283,18 +282,18 @@ class HomeChildRVAdapter( this.submitList(newList.map { it.copy() }) } - private fun installApplication(homeApp: FusedApp, appIcon: ImageView) { - fusedAPIInterface?.getApplication(homeApp, appIcon) + private fun installApplication(homeApp: FusedApp) { + applicationInstaller?.installApplication(homeApp) } private fun cancelDownload(homeApp: FusedApp) { - fusedAPIInterface?.cancelDownload(homeApp) + applicationInstaller?.cancelDownload(homeApp) } override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { super.onDetachedFromRecyclerView(recyclerView) lifecycleOwner = null paidAppHandler = null - fusedAPIInterface = null + applicationInstaller = null } } diff --git a/app/src/main/java/foundation/e/apps/ui/home/model/HomeParentRVAdapter.kt b/app/src/main/java/foundation/e/apps/ui/home/model/HomeParentRVAdapter.kt index 5edbbebb9c6efe7eafd77456f2ec6a987e7b0a07..a1b2b23dcf85b6c2a3d6529c167c4ac503300262 100644 --- a/app/src/main/java/foundation/e/apps/ui/home/model/HomeParentRVAdapter.kt +++ b/app/src/main/java/foundation/e/apps/ui/home/model/HomeParentRVAdapter.kt @@ -25,7 +25,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.data.fused.data.FusedHome import foundation.e.apps.databinding.HomeParentListItemBinding @@ -33,7 +33,7 @@ import foundation.e.apps.ui.AppInfoFetchViewModel import foundation.e.apps.ui.MainActivityViewModel class HomeParentRVAdapter( - private val fusedAPIInterface: FusedAPIInterface, + private val applicationInstaller: ApplicationInstaller, private val mainActivityViewModel: MainActivityViewModel, private val appInfoFetchViewModel: AppInfoFetchViewModel, private var lifecycleOwner: LifecycleOwner?, @@ -64,7 +64,7 @@ class HomeParentRVAdapter( val homeChildRVAdapter = HomeChildRVAdapter( - fusedAPIInterface, + applicationInstaller, appInfoFetchViewModel, mainActivityViewModel, lifecycleOwner, diff --git a/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt b/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt index 5e2a519ab519e5b30f0a9847cf53eadbd5487118..ae53be63fa9630f89971217e1e44d9acf951c898 100644 --- a/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/search/SearchFragment.kt @@ -43,7 +43,7 @@ import com.facebook.shimmer.ShimmerFrameLayout import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.R import foundation.e.apps.data.enums.Status -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.login.AuthObject @@ -67,7 +67,7 @@ class SearchFragment : TimeoutFragment(R.layout.fragment_search), SearchView.OnQueryTextListener, SearchView.OnSuggestionListener, - FusedAPIInterface { + ApplicationInstaller { @Inject lateinit var pwaManagerModule: PWAManagerModule @@ -270,7 +270,7 @@ class SearchFragment : ), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { - getApplication(fusedApp) + installApplication(fusedApp) }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "SearchFragment") @@ -476,7 +476,7 @@ class SearchFragment : searchView?.suggestionsAdapter?.changeCursor(cursor) } - override fun getApplication(app: FusedApp, appIcon: ImageView?) { + override fun installApplication(app: FusedApp) { mainActivityViewModel.getApplication(app) } diff --git a/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt b/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt index ee6825cb3aa0d54780b6f94ec1f6ec2852680a18..db21225a729bd06bf90a6ff33204cd7c4098a902 100644 --- a/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/foundation/e/apps/ui/updates/UpdatesFragment.kt @@ -20,7 +20,6 @@ package foundation.e.apps.ui.updates import android.os.Bundle import android.view.View -import android.widget.ImageView import androidx.appcompat.app.AlertDialog import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels @@ -37,7 +36,7 @@ import foundation.e.apps.R import foundation.e.apps.data.ResultSupreme import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.enums.Status -import foundation.e.apps.data.fused.FusedAPIInterface +import foundation.e.apps.data.fused.ApplicationInstaller import foundation.e.apps.data.fused.data.FusedApp import foundation.e.apps.data.fusedDownload.models.FusedDownload import foundation.e.apps.data.login.AuthObject @@ -66,7 +65,7 @@ import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint -class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInterface { +class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), ApplicationInstaller { private var _binding: FragmentUpdatesBinding? = null private val binding get() = _binding!! @@ -221,7 +220,7 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte ), positiveButtonText = getString(R.string.dialog_confirm), positiveButtonAction = { - getApplication(fusedApp) + installApplication(fusedApp) }, cancelButtonText = getString(R.string.dialog_cancel), ).show(childFragmentManager, "UpdatesFragment") @@ -374,7 +373,7 @@ class UpdatesFragment : TimeoutFragment(R.layout.fragment_updates), FusedAPIInte _binding = null } - override fun getApplication(app: FusedApp, appIcon: ImageView?) { + override fun installApplication(app: FusedApp) { mainActivityViewModel.getApplication(app) }