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)
}
}