mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-22 10:52:10 +00:00
Add: Other apps by developer block to AppSheet
This commit is contained in:
parent
9272e7e748
commit
fbf289a189
@ -69,6 +69,7 @@ import com.machiav3lli.fdroid.screen.MessageDialog
|
||||
import com.machiav3lli.fdroid.service.Connection
|
||||
import com.machiav3lli.fdroid.service.DownloadService
|
||||
import com.machiav3lli.fdroid.ui.activities.MainActivityX
|
||||
import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler
|
||||
import com.machiav3lli.fdroid.ui.compose.components.ExpandableBlock
|
||||
import com.machiav3lli.fdroid.ui.compose.components.ScreenshotList
|
||||
import com.machiav3lli.fdroid.ui.compose.components.SwitchPreference
|
||||
@ -352,6 +353,7 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), Callbacks {
|
||||
var screenshotPage by remember { mutableStateOf(0) }
|
||||
val installed by viewModel.installedItem.observeAsState()
|
||||
val products by viewModel.products.observeAsState()
|
||||
val authorProducts by viewModel.authorProducts.observeAsState()
|
||||
val repos by viewModel.repositories.observeAsState()
|
||||
val downloadState by viewModel.downloadState.observeAsState(null)
|
||||
val mainAction by viewModel.mainAction.observeAsState(if (installed == null) ActionState.Install else ActionState.Launch)
|
||||
@ -585,6 +587,26 @@ class AppSheetX() : FullscreenBottomSheetDialogFragment(), Callbacks {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!authorProducts.isNullOrEmpty()) {
|
||||
item {
|
||||
ExpandableBlock(
|
||||
heading = stringResource(
|
||||
id = R.string.other_apps_by,
|
||||
product.author.name
|
||||
),
|
||||
positive = true,
|
||||
preExpanded = false
|
||||
) {
|
||||
ProductsHorizontalRecycler(
|
||||
productsList = authorProducts,
|
||||
repositories = repos?.associateBy { repo -> repo.id }
|
||||
?: emptyMap()
|
||||
) { item ->
|
||||
mainActivityX.navigateProduct(item.packageName, item.developer)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (product.antiFeatures.isNotEmpty()) {
|
||||
item {
|
||||
ExpandableBlock(
|
||||
|
@ -32,6 +32,7 @@ class AppViewModelX(val db: DatabaseX, val packageName: String, developer: Strin
|
||||
val mainAction: MutableLiveData<ActionState> = MutableLiveData()
|
||||
val actions: MediatorLiveData<Set<ActionState>> = MediatorLiveData()
|
||||
val extras: MediatorLiveData<Extras> = MediatorLiveData()
|
||||
val authorProducts: MediatorLiveData<List<Product>> = MediatorLiveData()
|
||||
|
||||
init {
|
||||
products.addSource(db.productDao.getLive(packageName)) { products.setValue(it.filterNotNull()) }
|
||||
@ -39,6 +40,12 @@ class AppViewModelX(val db: DatabaseX, val packageName: String, developer: Strin
|
||||
installedItem.addSource(db.installedDao.getLive(packageName), installedItem::setValue)
|
||||
extras.addSource(db.extrasDao.getLive(packageName), extras::setValue)
|
||||
actions.addSource(extras) { updateActions() }
|
||||
authorProducts.addSource(db.productDao.getAuthorPackages(developer)) { prods ->
|
||||
if (developer.isNotEmpty()) authorProducts.value = prods
|
||||
.filter { it.packageName != packageName }
|
||||
.groupBy { it.packageName }
|
||||
.map { it.value.maxByOrNull(Product::added)!! }
|
||||
}
|
||||
}
|
||||
|
||||
fun updateActions() {
|
||||
|
@ -227,4 +227,5 @@
|
||||
<string name="date_added">Date added</string>
|
||||
<string name="date_updated">Date updated</string>
|
||||
<string name="target_sdk">targetSDK</string>
|
||||
<string name="other_apps_by">Other apps by %s</string>
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user