mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-22 17:35:54 +03:00
Rx: fetch first before returning live data results
This commit is contained in:
parent
42c7421b05
commit
38c198fe02
5 changed files with 45 additions and 3 deletions
|
@ -35,10 +35,12 @@ class RxRoom(private val room: Room) {
|
|||
|
||||
fun liveRoomMembers(memberships: List<Membership>): Observable<List<RoomMember>> {
|
||||
return room.getRoomMembersLive(memberships).asObservable()
|
||||
.startWith(room.getRoomMembers(memberships))
|
||||
}
|
||||
|
||||
fun liveAnnotationSummary(eventId: String): Observable<Optional<EventAnnotationsSummary>> {
|
||||
return room.getEventSummaryLive(eventId).asObservable()
|
||||
return room.getEventAnnotationsSummaryLive(eventId).asObservable()
|
||||
.startWith(room.getEventAnnotationsSummary(eventId).toOptional())
|
||||
}
|
||||
|
||||
fun liveTimelineEvent(eventId: String): Observable<Optional<TimelineEvent>> {
|
||||
|
|
|
@ -41,6 +41,14 @@ interface MembershipService {
|
|||
*/
|
||||
fun getRoomMember(userId: String): RoomMember?
|
||||
|
||||
|
||||
/**
|
||||
* Return all the roomMembers of the room filtered by memberships
|
||||
* @param memberships list of accepted memberships
|
||||
* @return a roomMember list.
|
||||
*/
|
||||
fun getRoomMembers(memberships: List<Membership>): List<RoomMember>
|
||||
|
||||
/**
|
||||
* Return all the roomMembers of the room filtered by memberships
|
||||
* @param memberships list of accepted memberships
|
||||
|
|
|
@ -108,5 +108,17 @@ interface RelationService {
|
|||
replyText: CharSequence,
|
||||
autoMarkdown: Boolean = false): Cancelable?
|
||||
|
||||
fun getEventSummaryLive(eventId: String): LiveData<Optional<EventAnnotationsSummary>>
|
||||
/**
|
||||
* Get the current EventAnnotationsSummary
|
||||
* @param eventId the eventId to look for EventAnnotationsSummary
|
||||
* @return the EventAnnotationsSummary found
|
||||
*/
|
||||
fun getEventAnnotationsSummary(eventId: String): EventAnnotationsSummary?
|
||||
|
||||
/**
|
||||
* Get the a LiveData EventAnnotationsSummary
|
||||
* @param eventId the eventId to look for EventAnnotationsSummary
|
||||
* @return the LiveData of EventAnnotationsSummary
|
||||
*/
|
||||
fun getEventAnnotationsSummaryLive(eventId: String): LiveData<Optional<EventAnnotationsSummary>>
|
||||
}
|
||||
|
|
|
@ -64,6 +64,17 @@ internal class DefaultMembershipService @AssistedInject constructor(@Assisted pr
|
|||
return roomMemberEntity?.asDomain()
|
||||
}
|
||||
|
||||
override fun getRoomMembers(memberships: List<Membership>): List<RoomMember> {
|
||||
return monarchy.fetchAllMappedSync(
|
||||
{
|
||||
RoomMembers(it, roomId).queryRoomMembersEvent()
|
||||
},
|
||||
{
|
||||
it.asDomain()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override fun getRoomMembersLive(memberships: List<Membership>): LiveData<List<RoomMember>> {
|
||||
return monarchy.findAllMappedWithChanges(
|
||||
{
|
||||
|
|
|
@ -215,7 +215,16 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
|
|||
return TimelineSendEventWorkCommon.createWork<SendEventWorker>(sendWorkData, startChain)
|
||||
}
|
||||
|
||||
override fun getEventSummaryLive(eventId: String): LiveData<Optional<EventAnnotationsSummary>> {
|
||||
override fun getEventAnnotationsSummary(eventId: String): EventAnnotationsSummary? {
|
||||
return monarchy.fetchCopyMap(
|
||||
{ EventAnnotationsSummaryEntity.where(it, eventId).findFirst() },
|
||||
{ entity, _ ->
|
||||
entity.asDomain()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
override fun getEventAnnotationsSummaryLive(eventId: String): LiveData<Optional<EventAnnotationsSummary>> {
|
||||
val liveData = monarchy.findAllMappedWithChanges(
|
||||
{ EventAnnotationsSummaryEntity.where(it, eventId) },
|
||||
{ it.asDomain() }
|
||||
|
|
Loading…
Reference in a new issue