Skip to content

Commit

Permalink
fix: hide patch button (ReVanced#1284)
Browse files Browse the repository at this point in the history
  • Loading branch information
BenjaminHalko authored Oct 16, 2023
1 parent 212e55f commit 5aefb3b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
Expand All @@ -56,6 +57,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewModelScope
import app.revanced.manager.R
import app.revanced.manager.domain.manager.PreferencesManager
import app.revanced.manager.patcher.patch.PatchInfo
Expand Down Expand Up @@ -91,7 +93,10 @@ fun PatchesSelectorScreen(
mutableStateOf(null)
}
var showBottomSheet by rememberSaveable { mutableStateOf(false) }

var showPatchButton by remember { mutableStateOf(true) }
LaunchedEffect(Unit) {
showPatchButton = vm.isSelectionNotEmpty()
}
if (showBottomSheet) {
ModalBottomSheet(
onDismissRequest = {
Expand Down Expand Up @@ -222,10 +227,17 @@ fun PatchesSelectorScreen(
if (vm.selectionWarningEnabled) {
vm.pendingSelectionAction = {
vm.togglePatch(uid, patch)
vm.viewModelScope.launch {
showPatchButton = vm.isSelectionNotEmpty()
}
}
} else {
vm.togglePatch(uid, patch)
vm.viewModelScope.launch {
showPatchButton = vm.isSelectionNotEmpty()
}
}

},
supported = supported
)
Expand Down Expand Up @@ -296,6 +308,7 @@ fun PatchesSelectorScreen(
}
}


Scaffold(
topBar = {
AppTopBar(
Expand All @@ -319,18 +332,22 @@ fun PatchesSelectorScreen(
)
},
floatingActionButton = {
ExtendedFloatingActionButton(
text = { Text(stringResource(R.string.patch)) },
icon = { Icon(Icons.Default.Build, null) },
onClick = {
// TODO: only allow this if all required options have been set.
composableScope.launch {
val selection = vm.getSelection()
vm.saveSelection(selection).join()
onPatchClick(selection, vm.getOptions())
if(showPatchButton) {
ExtendedFloatingActionButton(
text = {
Text(stringResource(R.string.patch))
},
icon = { Icon(Icons.Default.Build, null) },
onClick = {
// TODO: only allow this if all required options have been set.
composableScope.launch {
val selection = vm.getSelection()
vm.saveSelection(selection).join()
onPatchClick(selection, vm.getOptions())
}
}
}
)
)
}
}
) { paddingValues ->
Column(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,20 @@ class PatchesSelectorViewModel(
}
}

private suspend fun patchesAvailable(bundle: BundleInfo): List<PatchInfo> {
val patches = (bundle.supported + bundle.universal).toMutableList()
val removeUnsupported = !allowExperimental.get()
if (!removeUnsupported) patches += bundle.unsupported
return patches
}

suspend fun isSelectionNotEmpty() =
bundlesFlow.first().any { bundle ->
patchesAvailable(bundle).any { patch ->
isSelected(bundle.uid, patch)
}
}

private fun getOrCreateSelection(bundle: Int) =
explicitPatchesSelection.getOrPut(bundle, ::mutableStateMapOf)

Expand Down

0 comments on commit 5aefb3b

Please sign in to comment.