From 0497f1e625c77e8fcbecb4e568d159b0111d651d Mon Sep 17 00:00:00 2001 From: greenart7c3 <115044884+greenart7c3@users.noreply.github.com> Date: Mon, 24 Jul 2023 07:46:32 -0300 Subject: [PATCH 1/2] add select all switch, fix switch not clickable when relay name is too long --- .../ui/actions/RelaySelectionDialog.kt | 98 ++++++++++++------- app/src/main/res/values/strings.xml | 1 + 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt index a2becfb94..bc06b24ff 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt @@ -24,9 +24,11 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties +import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.RelayInformation import com.vitorpamplona.amethyst.service.relays.Relay import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @@ -79,6 +81,10 @@ fun RelaySelectionDialog( ) } + var selected by remember { + mutableStateOf(true) + } + Dialog( onDismissRequest = { onClose() }, properties = DialogProperties( @@ -126,6 +132,17 @@ fun RelaySelectionDialog( ) } + RelaySwitch( + text = stringResource(R.string.select_deselect_all), + checked = selected, + onClick = { + selected = !selected + relays = relays.mapIndexed { j, item -> + item.copy(isSelected = selected) + } + } + ) + LazyColumn( contentPadding = PaddingValues( top = 10.dp, @@ -136,48 +153,55 @@ fun RelaySelectionDialog( relays, key = { _, item -> item.relay.url } ) { index, item -> - Row( - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .combinedClickable( - onClick = { - relays = relays.mapIndexed { j, item -> - if (index == j) { - item.copy(isSelected = !item.isSelected) - } else { - item - } - } - }, - onLongClick = { - loadRelayInfo(item.relay.url, context, scope) { - relayInfo = it - } - } - ) - ) { - Text( - item.relay.url - .removePrefix("ws://") - .removePrefix("wss://") - .removeSuffix("/") - ) - Switch( - checked = item.isSelected, - onCheckedChange = { - relays = relays.mapIndexed { j, item -> - if (index == j) { - item.copy(isSelected = !item.isSelected) - } else { item } + RelaySwitch( + text = item.relay.url + .removePrefix("ws://") + .removePrefix("wss://") + .removeSuffix("/"), + checked = item.isSelected, + onClick = { + relays = relays.mapIndexed { j, item -> + if (index == j) { + item.copy(isSelected = !item.isSelected) + } else { + item } } - ) - } + }, + onLongPress = { + loadRelayInfo(item.relay.url, context, scope) { + relayInfo = it + } + } + ) } } } } } } + +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun RelaySwitch(text: String, checked: Boolean, onClick: () -> Unit, onLongPress: () -> Unit = { }) { + Row( + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .combinedClickable( + onClick = onClick, + onLongClick = onLongPress + ) + ) { + Text( + modifier = Modifier.weight(1f), + text = text + ) + Switch( + checked = checked, + onCheckedChange = { + onClick() + } + ) + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 483700eaf..fd58b32e9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -506,4 +506,5 @@ Nostr address was verified Nostr address failed verification Checking Nostr address + Select/Deselect all From d6886f51f75991415f9628860621ba3810f79cc2 Mon Sep 17 00:00:00 2001 From: greenart7c3 <115044884+greenart7c3@users.noreply.github.com> Date: Mon, 24 Jul 2023 07:56:21 -0300 Subject: [PATCH 2/2] removed unused annotation --- .../vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt index bc06b24ff..79f546610 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt @@ -39,7 +39,6 @@ data class RelayList( val isSelected: Boolean ) -@OptIn(ExperimentalFoundationApi::class) @Composable fun RelaySelectionDialog( list: List, @@ -137,7 +136,7 @@ fun RelaySelectionDialog( checked = selected, onClick = { selected = !selected - relays = relays.mapIndexed { j, item -> + relays = relays.mapIndexed { _, item -> item.copy(isSelected = selected) } }