mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-10-09 21:42:30 +02:00
Fixes lack of feed updates for those that didn't follow any communities
This commit is contained in:
@@ -70,7 +70,12 @@ class OutboxRelaySetState(
|
|||||||
usersToLoad
|
usersToLoad
|
||||||
.transformLatest { followList ->
|
.transformLatest { followList ->
|
||||||
val flows: List<StateFlow<NoteState>> = allRelayListFlows(followList)
|
val flows: List<StateFlow<NoteState>> = allRelayListFlows(followList)
|
||||||
val relayListFlows = combineAllFlows(flows)
|
val relayListFlows =
|
||||||
|
if (flows.isEmpty()) {
|
||||||
|
MutableStateFlow(emptySet())
|
||||||
|
} else {
|
||||||
|
combineAllFlows(flows)
|
||||||
|
}
|
||||||
emitAll(relayListFlows)
|
emitAll(relayListFlows)
|
||||||
}.onStart {
|
}.onStart {
|
||||||
emit(
|
emit(
|
||||||
|
@@ -27,6 +27,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
|||||||
import com.vitorpamplona.quartz.nip72ModCommunities.definition.CommunityDefinitionEvent
|
import com.vitorpamplona.quartz.nip72ModCommunities.definition.CommunityDefinitionEvent
|
||||||
import com.vitorpamplona.quartz.utils.mapOfSet
|
import com.vitorpamplona.quartz.utils.mapOfSet
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
|
|
||||||
class CommunityRelayLoader {
|
class CommunityRelayLoader {
|
||||||
@@ -81,8 +82,12 @@ class CommunityRelayLoader {
|
|||||||
?.stateFlow
|
?.stateFlow
|
||||||
}
|
}
|
||||||
|
|
||||||
return combine(noteMetadataFlows) { communityNotes ->
|
return if (noteMetadataFlows.isEmpty()) {
|
||||||
transformation(communitiesPerRelay(communityNotes, cache))
|
MutableStateFlow(transformation(emptyMap()))
|
||||||
|
} else {
|
||||||
|
combine(noteMetadataFlows) { communityNotes ->
|
||||||
|
transformation(communitiesPerRelay(communityNotes, cache))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,7 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
|
|||||||
import com.vitorpamplona.quartz.nip65RelayList.AdvertisedRelayListEvent
|
import com.vitorpamplona.quartz.nip65RelayList.AdvertisedRelayListEvent
|
||||||
import com.vitorpamplona.quartz.utils.mapOfSet
|
import com.vitorpamplona.quartz.utils.mapOfSet
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
|
|
||||||
class OutboxRelayLoader {
|
class OutboxRelayLoader {
|
||||||
@@ -86,8 +87,12 @@ class OutboxRelayLoader {
|
|||||||
note.flow().metadata.stateFlow
|
note.flow().metadata.stateFlow
|
||||||
}
|
}
|
||||||
|
|
||||||
return combine(noteMetadataFlows) { outboxRelays ->
|
return if (noteMetadataFlows.isEmpty()) {
|
||||||
transformation(authorsPerRelay(outboxRelays, cache))
|
MutableStateFlow(transformation(emptyMap()))
|
||||||
|
} else {
|
||||||
|
combine(noteMetadataFlows) { outboxRelays ->
|
||||||
|
transformation(authorsPerRelay(outboxRelays, cache))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -86,6 +86,7 @@ class AllFollowsByOutboxTopNavFilter(
|
|||||||
} else {
|
} else {
|
||||||
MutableStateFlow(emptyMap())
|
MutableStateFlow(emptyMap())
|
||||||
}
|
}
|
||||||
|
|
||||||
val communitiesPerRelay =
|
val communitiesPerRelay =
|
||||||
if (communities != null) {
|
if (communities != null) {
|
||||||
CommunityRelayLoader.toCommunitiesPerRelayFlow(communities, cache) { it }
|
CommunityRelayLoader.toCommunitiesPerRelayFlow(communities, cache) { it }
|
||||||
@@ -116,6 +117,7 @@ class AllFollowsByOutboxTopNavFilter(
|
|||||||
} else {
|
} else {
|
||||||
emptyMap()
|
emptyMap()
|
||||||
}
|
}
|
||||||
|
|
||||||
val communitiesPerRelay =
|
val communitiesPerRelay =
|
||||||
if (communities != null) {
|
if (communities != null) {
|
||||||
CommunityRelayLoader.communitiesPerRelaySnapshot(communities, cache) { it }
|
CommunityRelayLoader.communitiesPerRelaySnapshot(communities, cache) { it }
|
||||||
|
@@ -222,7 +222,7 @@ class AccountViewModel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flows != null) {
|
if (!flows.isNullOrEmpty()) {
|
||||||
combine(flows) {
|
combine(flows) {
|
||||||
it.any { it }
|
it.any { it }
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user