Skip to content

Commit a929895

Browse files
committed
fix: continuous event topic api calls
1 parent 8b6b0c6 commit a929895

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

app/src/main/java/org/fossasia/openevent/general/event/EventDao.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.room.OnConflictStrategy.REPLACE
66
import androidx.room.Query
77
import io.reactivex.Flowable
88
import io.reactivex.Single
9+
import org.fossasia.openevent.general.event.topic.EventTopic
910

1011
@Dao
1112
interface EventDao {
@@ -36,6 +37,9 @@ interface EventDao {
3637
@Query("SELECT id from Event WHERE favorite = 1 AND id in (:ids)")
3738
fun getFavoriteEventWithinIds(ids: List<Long>): Single<List<Long>>
3839

39-
@Query("SELECT * from Event WHERE eventTopic = :topicId")
40-
fun getAllSimilarEvents(topicId: Long): Flowable<List<Event>>
40+
@Query("SELECT * from Event WHERE eventTopic = :eventTopic")
41+
fun getAllSimilarEvents(eventTopic: EventTopic): Flowable<List<Event>>
42+
43+
@Query("SELECT * FROM EventTopic WHERE id=:topicId")
44+
fun getEventTopic(topicId: Long): Single<EventTopic>
4145
}

app/src/main/java/org/fossasia/openevent/general/event/EventService.kt

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import org.fossasia.openevent.general.event.types.EventType
1616
import org.fossasia.openevent.general.event.types.EventTypesApi
1717
import org.fossasia.openevent.general.sessions.Session
1818
import org.fossasia.openevent.general.sessions.SessionApi
19-
import java.util.Locale.filter
2019

2120
class EventService(
2221
private val eventApi: EventApi,
@@ -131,20 +130,24 @@ class EventService(
131130
}
132131

133132
fun getSimilarEvents(id: Long): Flowable<List<Event>> {
134-
val eventsFlowable = eventDao.getAllSimilarEvents(id)
135-
return eventsFlowable.switchMap {
136-
if (it.isNotEmpty())
137-
eventsFlowable
138-
else
139-
eventTopicApi.getEventsUnderTopicId(id)
140-
.toFlowable()
141-
.map {
142-
eventDao.insertEvents(it)
133+
val eventsFlowable = eventDao.getEventTopic(id)
134+
.flatMapPublisher {
135+
eventDao.getAllSimilarEvents(it)
136+
}
137+
return eventsFlowable
138+
.switchMap {
139+
if (it.isNotEmpty()) {
140+
eventsFlowable
141+
} else {
142+
eventTopicApi.getEventsUnderTopicId(id)
143+
.map { list ->
144+
eventDao.insertEvents(list)
143145
}
144-
.flatMap {
146+
.flatMapPublisher {
145147
eventsFlowable
146148
}
147-
}
149+
}
150+
}
148151
}
149152

150153
private fun buildQuery(eventIds: List<Long>): String {

0 commit comments

Comments
 (0)