diff --git a/app/src/main/java/app/revanced/manager/ui/screen/PatchesSelectorScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/PatchesSelectorScreen.kt index 722e65e1b6..e8b257c1f2 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/PatchesSelectorScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/PatchesSelectorScreen.kt @@ -101,16 +101,17 @@ fun PatchesSelectorScreen( ) }, floatingActionButton = { - ExtendedFloatingActionButton( - text = { Text(stringResource(R.string.patch)) }, - icon = { Icon(Icons.Default.Build, null) }, - onClick = { - composableScope.launch { - // TODO: only allow this if all required options have been set. - onPatchClick(vm.getAndSaveSelection(), vm.getOptions()) + if (!vm.isSelectionEmpty()) { + ExtendedFloatingActionButton( + text = { Text(stringResource(R.string.patch)) }, + icon = { Icon(Icons.Default.Build, null) }, + onClick = { + composableScope.launch { + onPatchClick(vm.getAndSaveSelection(), vm.getOptions()) + } } - } - ) + ) + } } ) { paddingValues -> Column( diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchesSelectorViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchesSelectorViewModel.kt index b5c6b67065..1899963f01 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchesSelectorViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/PatchesSelectorViewModel.kt @@ -123,6 +123,8 @@ class PatchesSelectorViewModel( if (patches.contains(name)) patches.remove(name) else patches.add(name) } + fun isSelectionEmpty() = selectedPatches.values.all { it.isEmpty() } + suspend fun getAndSaveSelection(): PatchesSelection = selectedPatches.also { withContext(Dispatchers.Default) {