diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt
index 81d6f2731..07f4cb5d0 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/AccountSettings.kt
@@ -67,9 +67,9 @@ val DefaultNIP65List =
val DefaultDMRelayList =
listOf(
- RelayUrlFormatter.normalize("wss://auth.nostr1.com/"),
- RelayUrlFormatter.normalize("wss://nostr.mom/"),
- RelayUrlFormatter.normalize("wss://nos.lol/"),
+ RelayUrlFormatter.normalize("wss://auth.nostr1.com"),
+ RelayUrlFormatter.normalize("wss://relay.0xchat.com"),
+ RelayUrlFormatter.normalize("wss://nos.lol"),
)
val DefaultSearchRelayList =
@@ -357,7 +357,6 @@ class AccountSettings(
// Events might be different objects, we have to compare their ids.
if (backupAppSpecificData?.id != appSettings.id) {
- println("AABBCC Update App Specific Data")
backupAppSpecificData = appSettings
syncedSettings.updateFrom(newSyncedSettings)
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddDMRelayListDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddDMRelayListDialog.kt
index 7177f815b..116e7a9b1 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddDMRelayListDialog.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddDMRelayListDialog.kt
@@ -29,6 +29,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Card
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
@@ -42,6 +43,8 @@ import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R
+import com.vitorpamplona.amethyst.model.DefaultDMRelayList
+import com.vitorpamplona.amethyst.ui.components.SetDialogToEdgeToEdge
import com.vitorpamplona.amethyst.ui.navigation.INav
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.CloseButton
@@ -50,6 +53,7 @@ import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer
import com.vitorpamplona.amethyst.ui.theme.imageModifier
+import com.vitorpamplona.ammolite.relays.RelayStat
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -66,6 +70,7 @@ fun AddDMRelayListDialog(
onDismissRequest = onClose,
properties = DialogProperties(usePlatformDefaultWidth = false),
) {
+ SetDialogToEdgeToEdge()
Scaffold(
topBar = {
TopAppBar(
@@ -114,7 +119,7 @@ fun AddDMRelayListDialog(
),
verticalArrangement = Arrangement.SpaceAround,
) {
- Explanation()
+ Explanation(postViewModel)
DMRelayList(postViewModel, accountViewModel, onClose, nav)
}
@@ -123,7 +128,7 @@ fun AddDMRelayListDialog(
}
@Composable
-private fun Explanation() {
+private fun Explanation(postViewModel: DMRelayListViewModel) {
Card(modifier = MaterialTheme.colorScheme.imageModifier) {
Column(modifier = Modifier.padding(16.dp)) {
Text(
@@ -133,8 +138,25 @@ private fun Explanation() {
Spacer(modifier = StdVertSpacer)
Text(
- text = stringRes(id = R.string.dm_relays_not_found_examples),
+ text = stringRes(id = R.string.dm_relays_not_found_examples2),
)
+
+ Spacer(modifier = StdVertSpacer)
+
+ ResetDMRelaysLonger(postViewModel)
}
}
}
+
+@Composable
+fun ResetDMRelaysLonger(postViewModel: DMRelayListViewModel) {
+ OutlinedButton(
+ onClick = {
+ postViewModel.deleteAll()
+ DefaultDMRelayList.forEach { postViewModel.addRelay(BasicRelaySetupInfo(it, RelayStat())) }
+ postViewModel.loadRelayDocuments()
+ },
+ ) {
+ Text(stringRes(R.string.default_relays_longer))
+ }
+}
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddSearchRelayListDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddSearchRelayListDialog.kt
index 0d44ce6ec..b0c7791f5 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddSearchRelayListDialog.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AddSearchRelayListDialog.kt
@@ -29,6 +29,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Card
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
@@ -42,6 +43,7 @@ import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R
+import com.vitorpamplona.amethyst.ui.components.SetDialogToEdgeToEdge
import com.vitorpamplona.amethyst.ui.navigation.INav
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.CloseButton
@@ -50,6 +52,8 @@ import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer
import com.vitorpamplona.amethyst.ui.theme.imageModifier
+import com.vitorpamplona.ammolite.relays.Constants
+import com.vitorpamplona.ammolite.relays.RelayStat
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -66,6 +70,7 @@ fun AddSearchRelayListDialog(
onDismissRequest = onClose,
properties = DialogProperties(usePlatformDefaultWidth = false),
) {
+ SetDialogToEdgeToEdge()
Scaffold(
topBar = {
TopAppBar(
@@ -114,7 +119,7 @@ fun AddSearchRelayListDialog(
),
verticalArrangement = Arrangement.SpaceAround,
) {
- Explanation()
+ Explanation(postViewModel)
SearchRelayList(postViewModel, accountViewModel, onClose, nav)
}
@@ -123,7 +128,7 @@ fun AddSearchRelayListDialog(
}
@Composable
-private fun Explanation() {
+private fun Explanation(postViewModel: SearchRelayListViewModel) {
Card(modifier = MaterialTheme.colorScheme.imageModifier) {
Column(modifier = Modifier.padding(16.dp)) {
Text(
@@ -135,6 +140,23 @@ private fun Explanation() {
Text(
text = stringRes(id = R.string.search_relays_not_found_examples),
)
+
+ Spacer(modifier = StdVertSpacer)
+
+ ResetSearchRelaysLonger(postViewModel)
}
}
}
+
+@Composable
+fun ResetSearchRelaysLonger(postViewModel: SearchRelayListViewModel) {
+ OutlinedButton(
+ onClick = {
+ postViewModel.deleteAll()
+ Constants.defaultSearchRelaySet.forEach { postViewModel.addRelay(BasicRelaySetupInfo(it, RelayStat())) }
+ postViewModel.loadRelayDocuments()
+ },
+ ) {
+ Text(stringRes(R.string.default_relays_longer))
+ }
+}
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AllRelayListView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AllRelayListView.kt
index b033ce736..c3dce2b17 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AllRelayListView.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/AllRelayListView.kt
@@ -24,6 +24,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
@@ -49,6 +50,8 @@ import androidx.compose.ui.window.DialogProperties
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R
+import com.vitorpamplona.amethyst.model.DefaultDMRelayList
+import com.vitorpamplona.amethyst.model.DefaultSearchRelayList
import com.vitorpamplona.amethyst.ui.navigation.INav
import com.vitorpamplona.amethyst.ui.navigation.rememberExtendedNav
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
@@ -171,91 +174,92 @@ fun MappedAllRelayListView(
)
},
) { pad ->
- Column(
+ LazyColumn(
+ contentPadding = FeedPadding,
modifier =
Modifier
.fillMaxSize()
.padding(
- 16.dp,
- pad.calculateTopPadding(),
- 16.dp,
- pad.calculateBottomPadding(),
- ),
- verticalArrangement = Arrangement.SpaceAround,
+ start = 10.dp,
+ end = 10.dp,
+ top = pad.calculateTopPadding(),
+ bottom = pad.calculateBottomPadding(),
+ ).consumeWindowInsets(pad),
) {
- LazyColumn(contentPadding = FeedPadding) {
+ item {
+ SettingsCategory(
+ stringRes(R.string.public_home_section),
+ stringRes(R.string.public_home_section_explainer),
+ Modifier.padding(bottom = 8.dp),
+ )
+ }
+ renderNip65HomeItems(homeFeedState, nip65ViewModel, accountViewModel, newNav)
+
+ item {
+ SettingsCategory(
+ stringRes(R.string.public_notif_section),
+ stringRes(R.string.public_notif_section_explainer),
+ )
+ }
+ renderNip65NotifItems(notifFeedState, nip65ViewModel, accountViewModel, newNav)
+
+ item {
+ SettingsCategoryWithButton(
+ stringRes(R.string.private_inbox_section),
+ stringRes(R.string.private_inbox_section_explainer),
+ action = {
+ ResetDMRelays(dmViewModel)
+ },
+ )
+ }
+ renderDMItems(dmFeedState, dmViewModel, accountViewModel, newNav)
+
+ item {
+ SettingsCategory(
+ stringRes(R.string.private_outbox_section),
+ stringRes(R.string.private_outbox_section_explainer),
+ )
+ }
+ renderPrivateOutboxItems(privateOutboxFeedState, privateOutboxViewModel, accountViewModel, newNav)
+
+ item {
+ SettingsCategoryWithButton(
+ stringRes(R.string.search_section),
+ stringRes(R.string.search_section_explainer),
+ action = {
+ ResetSearchRelays(searchViewModel)
+ },
+ )
+ }
+ renderSearchItems(searchFeedState, searchViewModel, accountViewModel, newNav)
+
+ item {
+ SettingsCategory(
+ stringRes(R.string.local_section),
+ stringRes(R.string.local_section_explainer),
+ )
+ }
+ renderLocalItems(localFeedState, localViewModel, accountViewModel, newNav)
+
+ item {
+ SettingsCategoryWithButton(
+ stringRes(R.string.kind_3_section),
+ stringRes(R.string.kind_3_section_description),
+ action = {
+ ResetKind3Relays(kind3ViewModel)
+ },
+ )
+ }
+ renderKind3Items(kind3FeedState, kind3ViewModel, accountViewModel, newNav, relayToAdd)
+
+ if (kind3Proposals.isNotEmpty()) {
item {
SettingsCategory(
- stringRes(R.string.public_home_section),
- stringRes(R.string.public_home_section_explainer),
- Modifier.padding(bottom = 8.dp),
+ stringRes(R.string.kind_3_recommended_section),
+ stringRes(R.string.kind_3_recommended_section_description),
)
}
- renderNip65HomeItems(homeFeedState, nip65ViewModel, accountViewModel, newNav)
-
- item {
- SettingsCategory(
- stringRes(R.string.public_notif_section),
- stringRes(R.string.public_notif_section_explainer),
- )
- }
- renderNip65NotifItems(notifFeedState, nip65ViewModel, accountViewModel, newNav)
-
- item {
- SettingsCategory(
- stringRes(R.string.private_inbox_section),
- stringRes(R.string.private_inbox_section_explainer),
- )
- }
- renderDMItems(dmFeedState, dmViewModel, accountViewModel, newNav)
-
- item {
- SettingsCategory(
- stringRes(R.string.private_outbox_section),
- stringRes(R.string.private_outbox_section_explainer),
- )
- }
- renderPrivateOutboxItems(privateOutboxFeedState, privateOutboxViewModel, accountViewModel, newNav)
-
- item {
- SettingsCategoryWithButton(
- stringRes(R.string.search_section),
- stringRes(R.string.search_section_explainer),
- action = {
- ResetSearchRelays(searchViewModel)
- },
- )
- }
- renderSearchItems(searchFeedState, searchViewModel, accountViewModel, newNav)
-
- item {
- SettingsCategory(
- stringRes(R.string.local_section),
- stringRes(R.string.local_section_explainer),
- )
- }
- renderLocalItems(localFeedState, localViewModel, accountViewModel, newNav)
-
- item {
- SettingsCategoryWithButton(
- stringRes(R.string.kind_3_section),
- stringRes(R.string.kind_3_section_description),
- action = {
- ResetKind3Relays(kind3ViewModel)
- },
- )
- }
- renderKind3Items(kind3FeedState, kind3ViewModel, accountViewModel, newNav, relayToAdd)
-
- if (kind3Proposals.isNotEmpty()) {
- item {
- SettingsCategory(
- stringRes(R.string.kind_3_recommended_section),
- stringRes(R.string.kind_3_recommended_section_description),
- )
- }
- renderKind3ProposalItems(kind3Proposals, kind3ViewModel, accountViewModel, newNav)
- }
+ renderKind3ProposalItems(kind3Proposals, kind3ViewModel, accountViewModel, newNav)
}
}
}
@@ -280,7 +284,20 @@ fun ResetSearchRelays(postViewModel: SearchRelayListViewModel) {
OutlinedButton(
onClick = {
postViewModel.deleteAll()
- Constants.defaultSearchRelaySet.forEach { postViewModel.addRelay(BasicRelaySetupInfo(it, RelayStat())) }
+ DefaultSearchRelayList.forEach { postViewModel.addRelay(BasicRelaySetupInfo(it, RelayStat())) }
+ postViewModel.loadRelayDocuments()
+ },
+ ) {
+ Text(stringRes(R.string.default_relays))
+ }
+}
+
+@Composable
+fun ResetDMRelays(postViewModel: DMRelayListViewModel) {
+ OutlinedButton(
+ onClick = {
+ postViewModel.deleteAll()
+ DefaultDMRelayList.forEach { postViewModel.addRelay(BasicRelaySetupInfo(it, RelayStat())) }
postViewModel.loadRelayDocuments()
},
) {
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayInformationDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayInformationDialog.kt
index 8488acd82..b7384966b 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayInformationDialog.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayInformationDialog.kt
@@ -53,6 +53,7 @@ import com.vitorpamplona.amethyst.model.FeatureSetType
import com.vitorpamplona.amethyst.ui.actions.CrossfadeIfEnabled
import com.vitorpamplona.amethyst.ui.components.ClickableEmail
import com.vitorpamplona.amethyst.ui.components.ClickableUrl
+import com.vitorpamplona.amethyst.ui.components.SetDialogToEdgeToEdge
import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer
import com.vitorpamplona.amethyst.ui.navigation.INav
import com.vitorpamplona.amethyst.ui.navigation.rememberExtendedNav
@@ -104,6 +105,7 @@ fun RelayInformationDialog(
dismissOnClickOutside = false,
),
) {
+ SetDialogToEdgeToEdge()
Surface {
val color =
remember {
diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/AddInboxRelayForDMCard.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/AddInboxRelayForDMCard.kt
index 7177bfcbd..e56775327 100644
--- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/AddInboxRelayForDMCard.kt
+++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/elements/AddInboxRelayForDMCard.kt
@@ -144,12 +144,6 @@ fun AddInboxRelayForDMCard(
Spacer(modifier = StdVertSpacer)
- Text(
- text = stringRes(id = R.string.dm_relays_not_found_examples),
- )
-
- Spacer(modifier = StdVertSpacer)
-
var wantsToEditRelays by remember { mutableStateOf(false) }
if (wantsToEditRelays) {
AddDMRelayListDialog({ wantsToEditRelays = false }, accountViewModel, nav = nav)
diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml
index 93f1b73d2..ed3b2e4c0 100644
--- a/amethyst/src/main/res/values/strings.xml
+++ b/amethyst/src/main/res/values/strings.xml
@@ -635,6 +635,7 @@
Checking Nostr address
Select/Deselect all
Default
+ Reset to Defaults
Select a relay to continue
Forward Zaps to: