From 5f3f80bc97db0f3e5e1c54abc299ff03be7b33e7 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 27 Jan 2023 20:06:34 -0300 Subject: [PATCH] Waits 10 seconds before reconnecting. --- .../amethyst/service/NostrDataSource.kt | 3 ++- .../vitorpamplona/amethyst/service/relays/Relay.kt | 14 ++++++++++++-- .../vitorpamplona/amethyst/ui/screen/FeedView.kt | 2 -- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt index 7828470c4..6b13a6ae1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt @@ -15,6 +15,7 @@ import com.vitorpamplona.amethyst.service.model.RepostEvent import com.vitorpamplona.amethyst.service.relays.Client import com.vitorpamplona.amethyst.service.relays.Relay import java.util.Collections +import java.util.UUID import kotlin.time.ExperimentalTime import kotlin.time.measureTimedValue import kotlinx.coroutines.CoroutineScope @@ -140,7 +141,7 @@ abstract class NostrDataSource(val debugName: String) { } fun requestNewChannel(): Channel { - val newChannel = Channel() + val newChannel = Channel(debugName+UUID.randomUUID().toString().substring(0,4)) channels.add(newChannel) channelIds.add(newChannel.id) return newChannel diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt index ade680b5b..12071a627 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt @@ -3,6 +3,7 @@ package com.vitorpamplona.amethyst.service.relays import android.util.Log import com.google.gson.JsonElement import com.vitorpamplona.amethyst.model.LocalCache +import java.util.Date import nostr.postr.events.ContactListEvent import nostr.postr.events.Event import nostr.postr.toNpub @@ -25,6 +26,8 @@ class Relay( var eventUploadCounter = 0 var errorCounter = 0 + var closingTime = 0L + fun register(listener: Listener) { listeners = listeners.plus(listener) } @@ -92,6 +95,7 @@ class Relay( override fun onClosed(webSocket: WebSocket, code: Int, reason: String) { socket = null + closingTime = Date().time / 1000 listeners.forEach { it.onRelayStateChange(this@Relay, Type.DISCONNECT) } } @@ -101,6 +105,8 @@ class Relay( socket?.close(1000, "Normal close") // Failures disconnect the relay. socket = null + closingTime = Date().time / 1000 + Log.w("Relay", "Relay onFailure ${url}, ${response?.message}") //t.printStackTrace() listeners.forEach { @@ -114,6 +120,7 @@ class Relay( fun disconnect() { //httpClient.dispatcher.executorService.shutdown() + closingTime = Date().time / 1000 socket?.close(1000, "Normal close") socket = null } @@ -121,13 +128,16 @@ class Relay( fun sendFilter(requestId: String) { if (read) { if (socket == null) { - requestAndWatch() + // waits 10 seconds + if (Date().time / 1000 > closingTime + 10) { + requestAndWatch() + } } else { val filters = Client.getSubscriptionFilters(requestId) if (filters.isNotEmpty()) { val request = """["REQ","$requestId",${filters.joinToString(",") { it.toJson() }}]""" - //println("FILTERSSENT " + """["REQ","$requestId",${filters.joinToString(",") { it.toJson() }}]""") + //println("FILTERSSENT ${url} " + """["REQ","$requestId",${filters.joinToString(",") { it.toJson() }}]""") socket?.send(request) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt index 7aea101ec..a218f27cf 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedView.kt @@ -48,8 +48,6 @@ fun FeedView(viewModel: FeedViewModel, accountViewModel: AccountViewModel, navCo } } - println("FeedView Refresh ${feedState}") - SwipeRefresh( state = swipeRefreshState, onRefresh = {