diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/searchRelays/SearchRelayListState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/searchRelays/SearchRelayListState.kt index 3c5f2a25f..2a62ca3d1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/searchRelays/SearchRelayListState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip51Lists/searchRelays/SearchRelayListState.kt @@ -57,10 +57,11 @@ class SearchRelayListState( fun getSearchRelayList(): SearchRelayListEvent? = getSearchRelayListNote().event as? SearchRelayListEvent - suspend fun normalizeSearchRelayListWithBackup(note: Note): Set { - val event = note.event as? SearchRelayListEvent ?: settings.backupSearchRelayList - return event?.let { decryptionCache.relays(it) } ?: DefaultSearchRelayList - } + fun searchListEvent(note: Note) = note.event as? SearchRelayListEvent ?: settings.backupSearchRelayList + + suspend fun normalizeSearchRelayListWithBackup(note: Note): Set = searchListEvent(note)?.let { decryptionCache.relays(it) }?.ifEmpty { null } ?: DefaultSearchRelayList + + suspend fun normalizeSearchRelayListWithBackupNoDefaults(note: Note): Set = searchListEvent(note)?.let { decryptionCache.relays(it) } ?: emptySet() val flow = getSearchRelayListFlow() @@ -73,6 +74,17 @@ class SearchRelayListState( emptySet(), ) + val flowNoDefaults = + getSearchRelayListFlow() + .map { normalizeSearchRelayListWithBackupNoDefaults(it.note) } + .onStart { emit(normalizeSearchRelayListWithBackupNoDefaults(getSearchRelayListNote())) } + .flowOn(Dispatchers.Default) + .stateIn( + scope, + SharingStarted.Companion.Eagerly, + emptySet(), + ) + suspend fun saveRelayList(searchRelays: List): SearchRelayListEvent { val relayListForSearch = getSearchRelayList() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip65RelayList/Nip65RelayListState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip65RelayList/Nip65RelayListState.kt index 9df03f441..acd8c8479 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip65RelayList/Nip65RelayListState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/nip65RelayList/Nip65RelayListState.kt @@ -57,20 +57,15 @@ class Nip65RelayListState( fun getNIP65RelayList(): AdvertisedRelayListEvent? = getNIP65RelayListNote().event as? AdvertisedRelayListEvent - fun normalizeNIP65WriteRelayListWithBackup(note: Note): Set { - val event = note.event as? AdvertisedRelayListEvent ?: settings.backupNIP65RelayList - return event?.writeRelaysNorm()?.toSet() ?: Constants.eventFinderRelays - } + fun nip65Event(note: Note) = note.event as? AdvertisedRelayListEvent ?: settings.backupNIP65RelayList - fun normalizeNIP65ReadRelayListWithBackup(note: Note): Set { - val event = note.event as? AdvertisedRelayListEvent ?: settings.backupNIP65RelayList - return event?.readRelaysNorm()?.toSet() ?: Constants.eventFinderRelays - } + fun normalizeNIP65WriteRelayListWithBackup(note: Note): Set = nip65Event(note)?.writeRelaysNorm()?.toSet() ?: Constants.eventFinderRelays - fun normalizeNIP65AllRelayListWithBackup(note: Note): Set { - val event = note.event as? AdvertisedRelayListEvent ?: settings.backupNIP65RelayList - return event?.relays()?.map { it.relayUrl }?.toSet() ?: Constants.eventFinderRelays - } + fun normalizeNIP65ReadRelayListWithBackup(note: Note): Set = nip65Event(note)?.readRelaysNorm()?.toSet() ?: Constants.eventFinderRelays + + fun normalizeNIP65AllRelayListWithBackup(note: Note): Set = nip65Event(note)?.relays()?.map { it.relayUrl }?.toSet() ?: Constants.eventFinderRelays + + fun normalizeNIP65AllRelayListWithBackupNoDefaults(note: Note): Set = nip65Event(note)?.relays()?.map { it.relayUrl }?.toSet() ?: emptySet() val outboxFlow = getNIP65RelayListFlow() @@ -105,6 +100,17 @@ class Nip65RelayListState( emptySet(), ) + val allFlowNoDefaults = + getNIP65RelayListFlow() + .map { normalizeNIP65AllRelayListWithBackupNoDefaults(it.note) } + .onStart { emit(normalizeNIP65AllRelayListWithBackupNoDefaults(getNIP65RelayListNote())) } + .flowOn(Dispatchers.Default) + .stateIn( + scope, + SharingStarted.Eagerly, + emptySet(), + ) + suspend fun saveRelayList(relays: List): AdvertisedRelayListEvent { val nip65RelayList = getNIP65RelayList() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/serverList/TrustedRelayListsState.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/serverList/TrustedRelayListsState.kt index 743481c34..7dd7ab05b 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/serverList/TrustedRelayListsState.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/serverList/TrustedRelayListsState.kt @@ -52,11 +52,11 @@ class TrustedRelayListsState( val flow: StateFlow> = combine( listOf( - nip65RelayList.allFlow, + nip65RelayList.allFlowNoDefaults, privateOutboxRelayList.flow, localRelayList.flow, dmRelayList.flow, - searchRelayListState.flow, + searchRelayListState.flowNoDefaults, trustedRelayList.flow, broadcastRelayList.flow, ),