mirror of
https://github.com/revanced/revanced-manager.git
synced 2025-04-30 05:54:26 +02:00
feat: Make patch bundles list scrollable (#2322)
This commit is contained in:
parent
20c13ee71c
commit
0685479d53
@ -0,0 +1,54 @@
|
|||||||
|
package app.revanced.manager.ui.screen
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.snapshots.SnapshotStateList
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import app.revanced.manager.domain.bundles.PatchBundleSource
|
||||||
|
import app.revanced.manager.ui.component.LazyColumnWithScrollbar
|
||||||
|
import app.revanced.manager.ui.component.bundle.BundleItem
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun BundleListScreen(
|
||||||
|
onDelete: (PatchBundleSource) -> Unit,
|
||||||
|
onUpdate: (PatchBundleSource) -> Unit,
|
||||||
|
sources: List<PatchBundleSource>,
|
||||||
|
selectedSources: SnapshotStateList<PatchBundleSource>,
|
||||||
|
bundlesSelectable: Boolean,
|
||||||
|
) {
|
||||||
|
LazyColumnWithScrollbar(
|
||||||
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
|
verticalArrangement = Arrangement.Top,
|
||||||
|
) {
|
||||||
|
items(
|
||||||
|
sources,
|
||||||
|
key = { it.uid }
|
||||||
|
) { source ->
|
||||||
|
BundleItem(
|
||||||
|
bundle = source,
|
||||||
|
onDelete = {
|
||||||
|
onDelete(source)
|
||||||
|
},
|
||||||
|
onUpdate = {
|
||||||
|
onUpdate(source)
|
||||||
|
},
|
||||||
|
selectable = bundlesSelectable,
|
||||||
|
onSelect = {
|
||||||
|
selectedSources.add(source)
|
||||||
|
},
|
||||||
|
isBundleSelected = selectedSources.contains(source),
|
||||||
|
toggleSelection = { bundleIsNotSelected ->
|
||||||
|
if (bundleIsNotSelected) {
|
||||||
|
selectedSources.add(source)
|
||||||
|
} else {
|
||||||
|
selectedSources.remove(source)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -31,7 +31,6 @@ import app.revanced.manager.ui.component.AppTopBar
|
|||||||
import app.revanced.manager.ui.component.AutoUpdatesDialog
|
import app.revanced.manager.ui.component.AutoUpdatesDialog
|
||||||
import app.revanced.manager.ui.component.AvailableUpdateDialog
|
import app.revanced.manager.ui.component.AvailableUpdateDialog
|
||||||
import app.revanced.manager.ui.component.NotificationCard
|
import app.revanced.manager.ui.component.NotificationCard
|
||||||
import app.revanced.manager.ui.component.bundle.BundleItem
|
|
||||||
import app.revanced.manager.ui.component.bundle.BundleTopBar
|
import app.revanced.manager.ui.component.bundle.BundleTopBar
|
||||||
import app.revanced.manager.ui.component.haptics.HapticFloatingActionButton
|
import app.revanced.manager.ui.component.haptics.HapticFloatingActionButton
|
||||||
import app.revanced.manager.ui.component.haptics.HapticTab
|
import app.revanced.manager.ui.component.haptics.HapticTab
|
||||||
@ -264,36 +263,20 @@ fun DashboardScreen(
|
|||||||
|
|
||||||
val sources by vm.sources.collectAsStateWithLifecycle(initialValue = emptyList())
|
val sources by vm.sources.collectAsStateWithLifecycle(initialValue = emptyList())
|
||||||
|
|
||||||
Column(
|
BundleListScreen(
|
||||||
modifier = Modifier.fillMaxSize(),
|
|
||||||
) {
|
|
||||||
sources.forEach {
|
|
||||||
BundleItem(
|
|
||||||
bundle = it,
|
|
||||||
onDelete = {
|
onDelete = {
|
||||||
vm.delete(it)
|
vm.delete(it)
|
||||||
},
|
},
|
||||||
onUpdate = {
|
onUpdate = {
|
||||||
vm.update(it)
|
vm.update(it)
|
||||||
},
|
},
|
||||||
selectable = bundlesSelectable,
|
sources = sources,
|
||||||
onSelect = {
|
selectedSources = vm.selectedSources,
|
||||||
vm.selectedSources.add(it)
|
bundlesSelectable = bundlesSelectable
|
||||||
},
|
|
||||||
isBundleSelected = vm.selectedSources.contains(it),
|
|
||||||
toggleSelection = { bundleIsNotSelected ->
|
|
||||||
if (bundleIsNotSelected) {
|
|
||||||
vm.selectedSources.add(it)
|
|
||||||
} else {
|
|
||||||
vm.selectedSources.remove(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user