diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt index a22fa72f..35de8196 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt @@ -221,7 +221,7 @@ class MainActivityX : AppCompatActivity() { Intent.ACTION_VIEW -> { val packageName = intent.packageName if (!packageName.isNullOrEmpty()) { - navigateProduct(packageName) + navigateProduct(packageName, "") } } ACTION_UPDATES -> handleSpecialIntent(SpecialIntent.Updates) @@ -238,8 +238,8 @@ class MainActivityX : AppCompatActivity() { super.attachBaseContext(ContextWrapperX.wrap(newBase)) } - internal fun navigateProduct(packageName: String) { - AppSheetX(packageName) + internal fun navigateProduct(packageName: String, developer: String) { + AppSheetX(packageName, developer) .showNow(supportFragmentManager, "Product $packageName") } diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/AppSheetX.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/AppSheetX.kt index 1db5cd18..d5c8d178 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/AppSheetX.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/fragments/AppSheetX.kt @@ -107,22 +107,26 @@ import kotlinx.coroutines.withContext class AppSheetX() : FullscreenBottomSheetDialogFragment(), Callbacks { companion object { private const val EXTRA_PACKAGE_NAME = "packageName" + private const val EXTRA_DEVELOPER = "developer" } - constructor(packageName: String) : this() { + constructor(packageName: String, developer: String) : this() { arguments = Bundle().apply { putString(EXTRA_PACKAGE_NAME, packageName) + putString(EXTRA_DEVELOPER, developer) } } val viewModel: AppViewModelX by viewModels { - AppViewModelX.Factory(mainActivityX.db, packageName) + AppViewModelX.Factory(mainActivityX.db, packageName, developer) } val mainActivityX: MainActivityX get() = requireActivity() as MainActivityX val packageName: String get() = requireArguments().getString(EXTRA_PACKAGE_NAME)!! + val developer: String + get() = requireArguments().getString(EXTRA_DEVELOPER)!! private val downloadConnection = Connection(DownloadService::class.java, onBind = { _, binder -> binder.stateSubject diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt index d4d3395d..f4bbb68e 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt @@ -109,7 +109,7 @@ fun ExplorePage(viewModel: MainNavFragmentViewModelX) { .fillMaxWidth() .weight(1f), onUserClick = { item -> - mainActivityX.navigateProduct(item.packageName) + mainActivityX.navigateProduct(item.packageName, item.developer) }, onFavouriteClick = { item -> viewModel.setFavorite( diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt index 42aa2f75..629c026c 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt @@ -131,7 +131,7 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) { } AnimatedVisibility(visible = updatesVisible) { ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item -> - mainActivityX.navigateProduct(item.packageName) + mainActivityX.navigateProduct(item.packageName, item.developer) } } } @@ -157,7 +157,7 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) { .fillMaxWidth() .weight(1f), onUserClick = { item -> - mainActivityX.navigateProduct(item.packageName) + mainActivityX.navigateProduct(item.packageName, item.developer) }, onFavouriteClick = { item -> viewModel.setFavorite( diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt index 60d38d77..7edbd297 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt @@ -82,7 +82,7 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) { modifier = Modifier.padding(8.dp) ) ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item -> - mainActivityX.navigateProduct(item.packageName) + mainActivityX.navigateProduct(item.packageName, item.developer) } } item { @@ -107,7 +107,7 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) { item = item, repo = repositoriesMap[item.repositoryId], isFavorite = favorites.contains(item.packageName), - onUserClick = { mainActivityX.navigateProduct(it.packageName) }, + onUserClick = { mainActivityX.navigateProduct(it.packageName, item.developer) }, onFavouriteClick = { viewModel.setFavorite( it.packageName, diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/viewmodels/AppViewModelX.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/viewmodels/AppViewModelX.kt index b0f2dafb..6dc69254 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/viewmodels/AppViewModelX.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/viewmodels/AppViewModelX.kt @@ -17,7 +17,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -class AppViewModelX(val db: DatabaseX, val packageName: String) : ViewModel() { +class AppViewModelX(val db: DatabaseX, val packageName: String, developer: String) : ViewModel() { val products: MediatorLiveData> = MediatorLiveData() val repositories: MediatorLiveData> = MediatorLiveData() @@ -151,11 +151,12 @@ class AppViewModelX(val db: DatabaseX, val packageName: String) : ViewModel() { } } - class Factory(val db: DatabaseX, val packageName: String) : ViewModelProvider.Factory { + class Factory(val db: DatabaseX, val packageName: String, val developer: String) : + ViewModelProvider.Factory { @Suppress("unchecked_cast") override fun create(modelClass: Class): T { if (modelClass.isAssignableFrom(AppViewModelX::class.java)) { - return AppViewModelX(db, packageName) as T + return AppViewModelX(db, packageName, developer) as T } throw IllegalArgumentException("Unknown ViewModel class") }