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 08bae79e3..b7504af9e 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 @@ -37,7 +37,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue @@ -52,7 +51,6 @@ 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 import com.vitorpamplona.amethyst.ui.screen.loggedIn.CloseButton import com.vitorpamplona.amethyst.ui.screen.loggedIn.SaveButton @@ -65,20 +63,13 @@ import com.vitorpamplona.amethyst.ui.theme.grayText import com.vitorpamplona.ammolite.relays.Constants import com.vitorpamplona.ammolite.relays.RelayStat -object RelayToAdd { - var relayToAdd: String = "" -} - @Composable fun AllRelayListView( + relayToAdd: String? = null, accountViewModel: AccountViewModel, nav: INav, ) { - DisposableEffect(Unit) { - onDispose { RelayToAdd.relayToAdd = "" } - } - - MappedAllRelayListView(RelayToAdd.relayToAdd, accountViewModel, rememberExtendedNav(nav, {})) + MappedAllRelayListView(relayToAdd ?: "", accountViewModel, nav) } @OptIn(ExperimentalMaterial3Api::class) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt index c1c43350b..7ffd49270 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppNavigation.kt @@ -286,6 +286,19 @@ fun AppNavigation( NIP47SetupScreen(accountViewModel, nav, nip47) } + composable( + Route.EditRelays.route, + content = { + val relayToAdd = it.arguments?.getString("toAdd") + + AllRelayListView( + relayToAdd = relayToAdd, + accountViewModel = accountViewModel, + nav = nav, + ) + }, + ) + composable( Route.NewPost.route, Route.NewPost.arguments, @@ -321,16 +334,6 @@ fun AppNavigation( nav = nav, ) } - - composable( - Route.EditRelays.route, - content = { - AllRelayListView( - accountViewModel = accountViewModel, - nav = nav, - ) - }, - ) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt index 5ba30f191..34e8fa0b9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt @@ -473,7 +473,7 @@ fun ListContent( accountViewModel = accountViewModel, onClick = { nav.closeDrawer() - nav.nav(Route.EditRelays.route) + nav.nav(Route.EditRelays.base) }, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt index 6745ebe51..02f6d2015 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/Routes.kt @@ -68,13 +68,6 @@ sealed class Route( contentDescriptor = R.string.route_global, ) - object EditRelays : - Route( - route = "EditRelays", - icon = R.drawable.ic_globe, - contentDescriptor = R.string.relays, - ) - object Search : Route( route = "Search", @@ -216,6 +209,21 @@ sealed class Route( icon = R.drawable.ic_settings, ) + object EditRelays : + Route( + route = "EditRelays?toAdd={toAdd}", + icon = R.drawable.ic_globe, + contentDescriptor = R.string.relays, + arguments = + listOf( + navArgument("toAdd") { + type = NavType.StringType + nullable = true + defaultValue = null + }, + ).toImmutableList(), + ) + object NIP47Setup : Route( route = "NIP47Setup?nip47={nip47}", diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayList.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayList.kt index 647be1191..431935d5e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayList.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/types/RelayList.kt @@ -45,7 +45,6 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.ui.actions.relays.RelayToAdd import com.vitorpamplona.amethyst.ui.components.ShowMoreButton import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.Route @@ -62,6 +61,8 @@ import com.vitorpamplona.quartz.events.SearchRelayListEvent import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList +import java.net.URLEncoder +import java.nio.charset.StandardCharsets @Composable fun DisplayRelaySet( @@ -292,13 +293,11 @@ private fun RelayOptionsAction( if (isCurrentlyOnTheUsersList) { AddRelayButton { - RelayToAdd.relayToAdd = relay - nav.nav(Route.EditRelays.route) + nav.nav(Route.EditRelays.base + "?toAdd=" + URLEncoder.encode(relay, StandardCharsets.UTF_8.toString())) } } else { RemoveRelayButton { - RelayToAdd.relayToAdd = relay - nav.nav(Route.EditRelays.route) + nav.nav(Route.EditRelays.base + "?toAdd=" + URLEncoder.encode(relay, StandardCharsets.UTF_8.toString())) } } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/RelayFeedView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/RelayFeedView.kt index 6a410e564..016634bb8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/RelayFeedView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/RelayFeedView.kt @@ -28,7 +28,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.vitorpamplona.amethyst.ui.actions.relays.RelayToAdd import com.vitorpamplona.amethyst.ui.feeds.RefresheableBox import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.Route @@ -36,6 +35,8 @@ import com.vitorpamplona.amethyst.ui.note.RelayCompose import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.FeedPadding +import java.net.URLEncoder +import java.nio.charset.StandardCharsets @Composable fun RelayFeedView( @@ -58,12 +59,10 @@ fun RelayFeedView( item, accountViewModel = accountViewModel, onAddRelay = { - RelayToAdd.relayToAdd = item.url - nav.nav(Route.EditRelays.route) + nav.nav(Route.EditRelays.base + "?toAdd=" + URLEncoder.encode(item.url, StandardCharsets.UTF_8.toString())) }, onRemoveRelay = { - RelayToAdd.relayToAdd = item.url - nav.nav(Route.EditRelays.route) + nav.nav(Route.EditRelays.base + "?toAdd=" + URLEncoder.encode(item.url, StandardCharsets.UTF_8.toString())) }, ) HorizontalDivider(