diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt
index be06e829..d623c3b2 100644
--- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt
+++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountScreen.kt
@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.outlined.Close
import androidx.compose.material.icons.outlined.Done
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
@@ -183,10 +184,76 @@ private fun DisplayErrorMessages(accountViewModel: AccountStateViewModel) {
obj.onOk()
accountViewModel.clearToasts()
}
+ is AcceptRejectToastMsg ->
+ InformationDialog(
+ obj.title,
+ obj.msg,
+ onAccept = {
+ obj.onAccept()
+ accountViewModel.clearToasts()
+ },
+ onReject = {
+ obj.onReject()
+ accountViewModel.clearToasts()
+ },
+ )
}
}
}
+@Composable
+fun InformationDialog(
+ title: String,
+ textContent: String,
+ buttonColors: ButtonColors = ButtonDefaults.buttonColors(),
+ onAccept: () -> Unit,
+ onReject: () -> Unit,
+) {
+ AlertDialog(
+ onDismissRequest = onReject,
+ title = { Text(title) },
+ text = { SelectionContainer { Text(textContent) } },
+ dismissButton = {
+ Button(
+ onClick = onReject,
+ colors = buttonColors,
+ contentPadding = PaddingValues(horizontal = 16.dp),
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ Icon(
+ imageVector = Icons.Outlined.Close,
+ contentDescription = null,
+ tint = Color.Black,
+ )
+ Spacer(Modifier.width(5.dp))
+ Text(stringResource(R.string.no))
+ }
+ }
+ },
+ confirmButton = {
+ Button(
+ onClick = onAccept,
+ colors = buttonColors,
+ contentPadding = PaddingValues(horizontal = 16.dp),
+ ) {
+ Row(
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ Icon(
+ imageVector = Icons.Outlined.Done,
+ contentDescription = null,
+ tint = Color.Black,
+ )
+ Spacer(Modifier.width(5.dp))
+ Text(stringResource(R.string.yes))
+ }
+ }
+ },
+ )
+}
+
@Composable
fun InformationDialog(
title: String,
diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt
index ba81e19e..12f9d542 100644
--- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt
+++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/AccountStateViewModel.kt
@@ -31,6 +31,9 @@ class StringToastMsg(val title: String, val msg: String) : ToastMsg()
@Immutable
class ConfirmationToastMsg(val title: String, val msg: String, val onOk: () -> Unit) : ToastMsg()
+@Immutable
+class AcceptRejectToastMsg(val title: String, val msg: String, val onAccept: () -> Unit, val onReject: () -> Unit) : ToastMsg()
+
@Immutable
class ResourceToastMsg(
val titleResId: Int,
@@ -67,6 +70,15 @@ class AccountStateViewModel(npub: String?) : ViewModel() {
viewModelScope.launch { toasts.emit(ConfirmationToastMsg(title, message, onOk)) }
}
+ fun toast(
+ title: String,
+ message: String,
+ onAccept: () -> Unit,
+ onReject: () -> Unit,
+ ) {
+ viewModelScope.launch { toasts.emit(AcceptRejectToastMsg(title, message, onAccept, onReject)) }
+ }
+
private fun tryLoginExistingAccount(
route: String?,
npub: String?,
diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt
index 363f7e25..9d55e857 100644
--- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt
+++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/actions/EditRelaysDialog.kt
@@ -349,21 +349,25 @@ suspend fun onAddRelay(
signedEvent = signedEvent,
relayList = listOf(RelaySetupInfo(addedWSS, read = true, write = true, setOf())),
)
- relay.sendFilter(
- UUID.randomUUID().toString().substring(0, 4),
- filters = listOf(
- TypedFilter(
- types = COMMON_FEED_TYPES,
- filter = SincePerRelayFilter(
- ids = listOf(event.id),
+ if (result) {
+ relay.sendFilter(
+ UUID.randomUUID().toString().substring(0, 4),
+ filters = listOf(
+ TypedFilter(
+ types = COMMON_FEED_TYPES,
+ filter = SincePerRelayFilter(
+ ids = listOf(event.id),
+ ),
),
),
- ),
- )
- var count = 0
- while (!filterResult && count < 10) {
- delay(1000)
- count++
+ )
+ var count = 0
+ while (!filterResult && count < 10) {
+ delay(1000)
+ count++
+ }
+ } else {
+ filterResult = true
}
AmberListenerSingleton.getListener()?.let { listener ->
@@ -388,6 +392,18 @@ suspend fun onAddRelay(
accountStateViewModel.toast(
context.getString(R.string.relay),
context.getString(R.string.relay_filter_failed),
+ onAccept = {
+ relays2.add(
+ RelaySetupInfo(
+ addedWSS,
+ read = true,
+ write = true,
+ feedTypes = COMMON_FEED_TYPES,
+ ),
+ )
+ onDone()
+ },
+ onReject = {},
)
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 94300567..b7941c5e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -427,5 +427,5 @@
%1$s is requiring some permissions, please review them.
Always approve this permission
%1$s is requiring to sign these events related to %2$s permission.
- Relay does not support receiving Bunker events
+ Relay does not support retrieving Bunker events. Would you like to add it anyway?