From c90e83f246aae1838ac957a5842a22b0d13cceef Mon Sep 17 00:00:00 2001 From: Philipp Heckel Date: Mon, 12 Jan 2026 20:37:57 -0500 Subject: [PATCH] Simplify connection details listener --- app/src/main/java/io/heckel/ntfy/service/JsonConnection.kt | 7 +++---- .../main/java/io/heckel/ntfy/service/SubscriberService.kt | 5 +---- app/src/main/java/io/heckel/ntfy/service/WsConnection.kt | 7 +++---- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/heckel/ntfy/service/JsonConnection.kt b/app/src/main/java/io/heckel/ntfy/service/JsonConnection.kt index fdcf78d9..bfc6ee2a 100644 --- a/app/src/main/java/io/heckel/ntfy/service/JsonConnection.kt +++ b/app/src/main/java/io/heckel/ntfy/service/JsonConnection.kt @@ -25,13 +25,12 @@ class JsonConnection( private val api: ApiService, private val user: User?, private val sinceId: String?, - private val connectionDetailsListener: (Collection, ConnectionState, Throwable?, Long) -> Unit, + private val connectionDetailsListener: (String, ConnectionState, Throwable?, Long) -> Unit, private val notificationListener: (Subscription, Notification) -> Unit, private val serviceActive: () -> Boolean ) : Connection { private val baseUrl = connectionId.baseUrl private val topicsToSubscriptionIds = connectionId.topicsToSubscriptionIds - private val subscriptionIds = topicsToSubscriptionIds.values private val topicsStr = topicsToSubscriptionIds.keys.joinToString(separator = ",") private val url = topicUrl(baseUrl, topicsStr) private val parser = NotificationParser() @@ -54,7 +53,7 @@ class JsonConnection( if (errorCount > 0) { errorCount = 0 } - connectionDetailsListener(subscriptionIds, ConnectionState.CONNECTED, null, 0L) + connectionDetailsListener(baseUrl, ConnectionState.CONNECTED, null, 0L) // Blocking read loop: reads JSON lines until connection closes or is cancelled while (isActive && serviceActive() && !source.exhausted()) { @@ -81,7 +80,7 @@ class JsonConnection( val retrySeconds = RETRY_SECONDS.getOrNull(errorCount-1) ?: RETRY_SECONDS.last() val nextRetryTime = System.currentTimeMillis() + (retrySeconds * 1000L) val error = if (isConnectionBrokenException(e)) null else e - connectionDetailsListener(subscriptionIds, ConnectionState.CONNECTING, error, nextRetryTime) + connectionDetailsListener(baseUrl, ConnectionState.CONNECTING, error, nextRetryTime) Log.w(TAG, "[$url] Retrying connection in ${retrySeconds}s ...") delay(retrySeconds * 1000L) } diff --git a/app/src/main/java/io/heckel/ntfy/service/SubscriberService.kt b/app/src/main/java/io/heckel/ntfy/service/SubscriberService.kt index 2ba263d9..397b5506 100644 --- a/app/src/main/java/io/heckel/ntfy/service/SubscriberService.kt +++ b/app/src/main/java/io/heckel/ntfy/service/SubscriberService.kt @@ -307,10 +307,7 @@ class SubscriberService : Service() { } } - private fun onConnectionDetailsChanged(subscriptionIds: Collection, state: ConnectionState, throwable: Throwable?, nextRetryTime: Long) { - val subscriptionId = subscriptionIds.firstOrNull() ?: return - val subscription = repository.getSubscription(subscriptionId) ?: return - val baseUrl = subscription.baseUrl + private fun onConnectionDetailsChanged(baseUrl: String, state: ConnectionState, throwable: Throwable?, nextRetryTime: Long) { repository.updateConnectionDetails(baseUrl, state, throwable, nextRetryTime) } diff --git a/app/src/main/java/io/heckel/ntfy/service/WsConnection.kt b/app/src/main/java/io/heckel/ntfy/service/WsConnection.kt index 4d864df5..f54bb6e7 100644 --- a/app/src/main/java/io/heckel/ntfy/service/WsConnection.kt +++ b/app/src/main/java/io/heckel/ntfy/service/WsConnection.kt @@ -39,7 +39,7 @@ class WsConnection( private val user: User?, private val customHeaders: List, private val sinceId: String?, - private val connectionDetailsListener: (Collection, ConnectionState, Throwable?, Long) -> Unit, + private val connectionDetailsListener: (String, ConnectionState, Throwable?, Long) -> Unit, private val notificationListener: (Subscription, Notification) -> Unit, private val alarmManager: AlarmManager ) : Connection { @@ -55,7 +55,6 @@ class WsConnection( private val since = AtomicReference(sinceId) private val baseUrl = connectionId.baseUrl private val topicsToSubscriptionIds = connectionId.topicsToSubscriptionIds - private val subscriptionIds = topicsToSubscriptionIds.values private val topicsStr = topicsToSubscriptionIds.keys.joinToString(separator = ",") private val shortUrl = topicShortUrl(baseUrl, topicsStr) @@ -141,7 +140,7 @@ class WsConnection( if (errorCount > 0) { errorCount = 0 } - connectionDetailsListener(subscriptionIds, ConnectionState.CONNECTED, null, 0L) + connectionDetailsListener(baseUrl, ConnectionState.CONNECTED, null, 0L) } } @@ -196,7 +195,7 @@ class WsConnection( isResponseCode(response, 101) -> WebSocketNotSupportedException(response!!.code, response.message, t) else -> t } - connectionDetailsListener(subscriptionIds, ConnectionState.CONNECTING, error, nextRetryTime) + connectionDetailsListener(baseUrl, ConnectionState.CONNECTING, error, nextRetryTime) scheduleReconnect(retrySeconds) } }