Add: Developer to AppSheets arguments

This commit is contained in:
machiav3lli 2022-10-11 03:02:09 +02:00
parent 150f949f5e
commit 9272e7e748
6 changed files with 18 additions and 13 deletions

View File

@ -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")
}

View File

@ -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

View File

@ -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(

View File

@ -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(

View File

@ -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,

View File

@ -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<List<Product>> = MediatorLiveData()
val repositories: MediatorLiveData<List<Repository>> = 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 <T : ViewModel> create(modelClass: Class<T>): 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")
}