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 -> { Intent.ACTION_VIEW -> {
val packageName = intent.packageName val packageName = intent.packageName
if (!packageName.isNullOrEmpty()) { if (!packageName.isNullOrEmpty()) {
navigateProduct(packageName) navigateProduct(packageName, "")
} }
} }
ACTION_UPDATES -> handleSpecialIntent(SpecialIntent.Updates) ACTION_UPDATES -> handleSpecialIntent(SpecialIntent.Updates)
@ -238,8 +238,8 @@ class MainActivityX : AppCompatActivity() {
super.attachBaseContext(ContextWrapperX.wrap(newBase)) super.attachBaseContext(ContextWrapperX.wrap(newBase))
} }
internal fun navigateProduct(packageName: String) { internal fun navigateProduct(packageName: String, developer: String) {
AppSheetX(packageName) AppSheetX(packageName, developer)
.showNow(supportFragmentManager, "Product $packageName") .showNow(supportFragmentManager, "Product $packageName")
} }

View File

@ -107,22 +107,26 @@ import kotlinx.coroutines.withContext
class AppSheetX() : FullscreenBottomSheetDialogFragment(), Callbacks { class AppSheetX() : FullscreenBottomSheetDialogFragment(), Callbacks {
companion object { companion object {
private const val EXTRA_PACKAGE_NAME = "packageName" 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 { arguments = Bundle().apply {
putString(EXTRA_PACKAGE_NAME, packageName) putString(EXTRA_PACKAGE_NAME, packageName)
putString(EXTRA_DEVELOPER, developer)
} }
} }
val viewModel: AppViewModelX by viewModels { val viewModel: AppViewModelX by viewModels {
AppViewModelX.Factory(mainActivityX.db, packageName) AppViewModelX.Factory(mainActivityX.db, packageName, developer)
} }
val mainActivityX: MainActivityX val mainActivityX: MainActivityX
get() = requireActivity() as MainActivityX get() = requireActivity() as MainActivityX
val packageName: String val packageName: String
get() = requireArguments().getString(EXTRA_PACKAGE_NAME)!! get() = requireArguments().getString(EXTRA_PACKAGE_NAME)!!
val developer: String
get() = requireArguments().getString(EXTRA_DEVELOPER)!!
private val downloadConnection = Connection(DownloadService::class.java, onBind = { _, binder -> private val downloadConnection = Connection(DownloadService::class.java, onBind = { _, binder ->
binder.stateSubject binder.stateSubject

View File

@ -109,7 +109,7 @@ fun ExplorePage(viewModel: MainNavFragmentViewModelX) {
.fillMaxWidth() .fillMaxWidth()
.weight(1f), .weight(1f),
onUserClick = { item -> onUserClick = { item ->
mainActivityX.navigateProduct(item.packageName) mainActivityX.navigateProduct(item.packageName, item.developer)
}, },
onFavouriteClick = { item -> onFavouriteClick = { item ->
viewModel.setFavorite( viewModel.setFavorite(

View File

@ -131,7 +131,7 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) {
} }
AnimatedVisibility(visible = updatesVisible) { AnimatedVisibility(visible = updatesVisible) {
ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item -> ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item ->
mainActivityX.navigateProduct(item.packageName) mainActivityX.navigateProduct(item.packageName, item.developer)
} }
} }
} }
@ -157,7 +157,7 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) {
.fillMaxWidth() .fillMaxWidth()
.weight(1f), .weight(1f),
onUserClick = { item -> onUserClick = { item ->
mainActivityX.navigateProduct(item.packageName) mainActivityX.navigateProduct(item.packageName, item.developer)
}, },
onFavouriteClick = { item -> onFavouriteClick = { item ->
viewModel.setFavorite( viewModel.setFavorite(

View File

@ -82,7 +82,7 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) {
modifier = Modifier.padding(8.dp) modifier = Modifier.padding(8.dp)
) )
ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item -> ProductsHorizontalRecycler(secondaryList, repositoriesMap) { item ->
mainActivityX.navigateProduct(item.packageName) mainActivityX.navigateProduct(item.packageName, item.developer)
} }
} }
item { item {
@ -107,7 +107,7 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) {
item = item, item = item,
repo = repositoriesMap[item.repositoryId], repo = repositoriesMap[item.repositoryId],
isFavorite = favorites.contains(item.packageName), isFavorite = favorites.contains(item.packageName),
onUserClick = { mainActivityX.navigateProduct(it.packageName) }, onUserClick = { mainActivityX.navigateProduct(it.packageName, item.developer) },
onFavouriteClick = { onFavouriteClick = {
viewModel.setFavorite( viewModel.setFavorite(
it.packageName, it.packageName,

View File

@ -17,7 +17,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext 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 products: MediatorLiveData<List<Product>> = MediatorLiveData()
val repositories: MediatorLiveData<List<Repository>> = 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") @Suppress("unchecked_cast")
override fun <T : ViewModel> create(modelClass: Class<T>): T { override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(AppViewModelX::class.java)) { if (modelClass.isAssignableFrom(AppViewModelX::class.java)) {
return AppViewModelX(db, packageName) as T return AppViewModelX(db, packageName, developer) as T
} }
throw IllegalArgumentException("Unknown ViewModel class") throw IllegalArgumentException("Unknown ViewModel class")
} }