diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip02FollowLists/FollowsPerOutboxRelay.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip02FollowLists/FollowsPerOutboxRelay.kt index 4f6fe7128..13df157b6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip02FollowLists/FollowsPerOutboxRelay.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip02FollowLists/FollowsPerOutboxRelay.kt @@ -21,6 +21,7 @@ package com.vitorpamplona.amethyst.model.nip02FollowLists import com.vitorpamplona.amethyst.model.AddressableNote +import com.vitorpamplona.amethyst.model.Constants import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.NoteState import com.vitorpamplona.amethyst.model.nip51Lists.blockedRelays.BlockedRelayListState @@ -45,6 +46,7 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.transformLatest +import kotlin.collections.ifEmpty class FollowsPerOutboxRelay( kind3Follows: FollowListState, @@ -68,7 +70,11 @@ class FollowsPerOutboxRelay( mapOfSet { relayListNotes.forEach { noteState -> noteState.note.author?.pubkeyHex?.let { authorHex -> - (noteState.note.event as? AdvertisedRelayListEvent)?.writeRelaysNorm()?.forEach { relay -> + val outboxRelayList = + getNIP65RelayList(authorHex)?.writeRelaysNorm() + ?: LocalCache.relayHints.hintsForKey(authorHex).ifEmpty { null } + ?: Constants.eventFinderRelays + outboxRelayList.forEach { relay -> add(relay, authorHex) } } @@ -85,7 +91,11 @@ class FollowsPerOutboxRelay( emit( mapOfSet { kind3Follows.flow.value.authors.map { authorHex -> - getNIP65RelayList(authorHex)?.writeRelaysNorm()?.forEach { relay -> + val outboxRelayList = + getNIP65RelayList(authorHex)?.writeRelaysNorm() + ?: LocalCache.relayHints.hintsForKey(authorHex).ifEmpty { null } + ?: Constants.eventFinderRelays + outboxRelayList.forEach { relay -> add(relay, authorHex) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/OutboxRelayLoader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/OutboxRelayLoader.kt index 692ae4cb4..2d992980e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/OutboxRelayLoader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/topNavFeeds/OutboxRelayLoader.kt @@ -21,6 +21,7 @@ package com.vitorpamplona.amethyst.model.topNavFeeds import com.vitorpamplona.amethyst.model.AddressableNote +import com.vitorpamplona.amethyst.model.Constants import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.NoteState import com.vitorpamplona.quartz.nip01Core.core.HexKey @@ -50,8 +51,9 @@ class OutboxRelayLoader { if (authorHex != null) { val relays = - (outboxNote.note.event as? AdvertisedRelayListEvent)?.writeRelaysNorm()?.ifEmpty { null } - ?: cache.relayHints.hintsForKey(authorHex) + (outboxNote.note.event as? AdvertisedRelayListEvent)?.writeRelaysNorm() + ?: cache.relayHints.hintsForKey(authorHex).ifEmpty { null } + ?: Constants.eventFinderRelays relays.forEach { add(it, authorHex) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/FilterUserMetadataForKey.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/FilterUserMetadataForKey.kt index d147ef3ff..b419e86a5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/FilterUserMetadataForKey.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/loaders/FilterUserMetadataForKey.kt @@ -52,7 +52,7 @@ fun filterFindUserMetadataForKey( mapOfSet { authors.forEach { key -> val relays = - key.authorRelayList()?.writeRelaysNorm()?.ifEmpty { null } + key.authorRelayList()?.writeRelaysNorm() ?: LocalCache.relayHints.hintsForKey(key.pubkeyHex).ifEmpty { null } ?: (key.relaysBeingUsed.keys + defaultRelays).toList() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/FilterUserMetadataForKey.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/FilterUserMetadataForKey.kt index ebcd0f627..75b68e1d6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/FilterUserMetadataForKey.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/reqCommand/user/watchers/FilterUserMetadataForKey.kt @@ -50,7 +50,7 @@ fun filterUserMetadataForKey( val authorHomeRelayEventAddress = AdvertisedRelayListEvent.createAddressTag(it) val authorHomeRelayEvent = (LocalCache.getAddressableNoteIfExists(authorHomeRelayEventAddress)?.event as? AdvertisedRelayListEvent) - authorHomeRelayEvent?.writeRelaysNorm()?.ifEmpty { null } + authorHomeRelayEvent?.writeRelaysNorm() ?: LocalCache.relayHints.hintsForKey(it).ifEmpty { null } ?: listOfNotNull(LocalCache.getUserIfExists(it)?.latestMetadataRelay) }.flatten() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/FilterNip04DMs.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/FilterNip04DMs.kt index 3083a29cd..9f4c0fa90 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/FilterNip04DMs.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/datasource/FilterNip04DMs.kt @@ -48,7 +48,7 @@ fun filterNip04DMs( val authorHomeRelayEvent = (LocalCache.getAddressableNoteIfExists(authorHomeRelayEventAddress)?.event as? AdvertisedRelayListEvent) val outbox = - authorHomeRelayEvent?.writeRelaysNorm()?.ifEmpty { null } + authorHomeRelayEvent?.writeRelaysNorm() ?: LocalCache.relayHints.hintsForKey(it).ifEmpty { null } ?: listOfNotNull(LocalCache.getUserIfExists(it)?.latestMetadataRelay)