From cdba8b885b0fc3744aa099008f7dbb02a4f98486 Mon Sep 17 00:00:00 2001 From: koalasat Date: Sat, 2 Nov 2024 11:51:32 +0100 Subject: [PATCH] Relay management fix --- .../java/com/koalasat/pokey/database/ApplicationDao.kt | 3 +++ .../com/koalasat/pokey/service/NotificationsService.kt | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/koalasat/pokey/database/ApplicationDao.kt b/app/src/main/java/com/koalasat/pokey/database/ApplicationDao.kt index 52171b0..69e38e1 100644 --- a/app/src/main/java/com/koalasat/pokey/database/ApplicationDao.kt +++ b/app/src/main/java/com/koalasat/pokey/database/ApplicationDao.kt @@ -22,6 +22,9 @@ interface ApplicationDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertRelay(notificationEntity: RelayEntity): Long? + @Query("SELECT * FROM relay where kind = :kind") + fun getRelaysByKind(kind: Int): List + @Query("DELETE FROM relay where kind = :kind") fun deleteRelaysByKind(kind: Int): Int diff --git a/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt b/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt index b2458ce..4fec5a1 100644 --- a/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt +++ b/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt @@ -127,6 +127,7 @@ class NotificationsService : Service() { scope.launch(Dispatchers.IO) { stopSubscription() delay(1000) + connectRelays() startSubscription() } } @@ -149,6 +150,7 @@ class NotificationsService : Service() { if (Connectivity.updateNetworkCapabilities(networkCapabilities)) { stopSubscription() delay(1000) + connectRelays() startSubscription() } } @@ -261,6 +263,7 @@ class NotificationsService : Service() { private fun stopSubscription() { Client.unsubscribe(clientListener) + RelayPool.unloadRelays() } private fun keepAlive() { @@ -313,9 +316,8 @@ class NotificationsService : Service() { val lastCreatedRelayAt = dao.getLatestRelaysByKind(event.kind) if (lastCreatedRelayAt == null || lastCreatedRelayAt < event.createdAt) { - stopSubscription() + RelayPool.unloadRelays() dao.deleteRelaysByKind(event.kind) - event.tags .filter { it.size > 1 && (it[0] == "relay" || it[0] == "r") } .forEach { @@ -329,6 +331,7 @@ class NotificationsService : Service() { dao.insertRelay(entity) } + connectRelays() startSubscription() } }