diff --git a/app/src/main/java/com/bitchat/android/nostr/NostrGeohashService.kt b/app/src/main/java/com/bitchat/android/nostr/NostrGeohashService.kt index 6ab09e90..9f244618 100644 --- a/app/src/main/java/com/bitchat/android/nostr/NostrGeohashService.kt +++ b/app/src/main/java/com/bitchat/android/nostr/NostrGeohashService.kt @@ -902,12 +902,15 @@ class NostrGeohashService( since = System.currentTimeMillis() - 86400000L // Last 24 hours ) - nostrRelayManager.subscribe( + nostrRelayManager.subscribeForGeohash( + geohash = channel.channel.geohash, filter = dmFilter, id = dmSubId, handler = { giftWrap -> handleGeohashDmEvent(giftWrap, channel.channel.geohash, dmIdentity) - } + }, + includeDefaults = true, + nRelays = 5 ) Log.i(TAG, "✅ Subscribed to geohash DMs for identity: ${dmIdentity.publicKeyHex.take(16)}...") diff --git a/app/src/main/java/com/bitchat/android/nostr/NostrRelayManager.kt b/app/src/main/java/com/bitchat/android/nostr/NostrRelayManager.kt index f363b80a..231d4643 100644 --- a/app/src/main/java/com/bitchat/android/nostr/NostrRelayManager.kt +++ b/app/src/main/java/com/bitchat/android/nostr/NostrRelayManager.kt @@ -648,7 +648,12 @@ class NostrRelayManager private constructor() { val wasProcessed = eventDeduplicator.processEvent(response.event) { event -> // Only log non-gift-wrap events to reduce noise if (event.kind != NostrKind.GIFT_WRAP) { - Log.v(TAG, "📥 Processing new Nostr event (kind: ${event.kind}) from relay: $relayUrl") + val originGeo = activeSubscriptions[response.subscriptionId]?.originGeohash + if (originGeo != null) { + Log.v(TAG, "📥 Processing event (kind=${event.kind}) from relay=$relayUrl geo=$originGeo sub=${response.subscriptionId}") + } else { + Log.v(TAG, "📥 Processing event (kind=${event.kind}) from relay=$relayUrl sub=${response.subscriptionId}") + } } // Call handler for new events only diff --git a/app/src/main/java/com/bitchat/android/nostr/RelayDirectory.kt b/app/src/main/java/com/bitchat/android/nostr/RelayDirectory.kt index 98852e11..865f1459 100644 --- a/app/src/main/java/com/bitchat/android/nostr/RelayDirectory.kt +++ b/app/src/main/java/com/bitchat/android/nostr/RelayDirectory.kt @@ -43,7 +43,7 @@ object RelayDirectory { if (trimmed.lowercase().startsWith("relay url")) continue val parts = trimmed.split(",") if (parts.size < 3) continue - val url = parts[0].trim() + val url = normalizeRelayUrl(parts[0].trim()) val lat = parts[1].trim().toDoubleOrNull() val lon = parts[2].trim().toDoubleOrNull() if (url.isEmpty() || lat == null || lon == null) continue @@ -89,6 +89,12 @@ object RelayDirectory { val c = 2 * atan2(sqrt(a), sqrt(1 - a)) return R * c } + + private fun normalizeRelayUrl(raw: String): String { + val trimmed = raw.trim() + if (trimmed.isEmpty()) return trimmed + return if ("://" in trimmed) trimmed else "wss://$trimmed" + } }