Do not compute live broadcast on last message if the feature is disabled in the lab
This commit is contained in:
parent
66e8b5bf7a
commit
2152c1d7ba
@ -17,6 +17,7 @@
|
|||||||
package im.vector.app.features.home.room.list.usecase
|
package im.vector.app.features.home.room.list.usecase
|
||||||
|
|
||||||
import im.vector.app.core.di.ActiveSessionHolder
|
import im.vector.app.core.di.ActiveSessionHolder
|
||||||
|
import im.vector.app.features.settings.VectorPreferences
|
||||||
import im.vector.app.features.voicebroadcast.isLive
|
import im.vector.app.features.voicebroadcast.isLive
|
||||||
import im.vector.app.features.voicebroadcast.isVoiceBroadcast
|
import im.vector.app.features.voicebroadcast.isVoiceBroadcast
|
||||||
import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent
|
import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent
|
||||||
@ -35,14 +36,21 @@ import javax.inject.Inject
|
|||||||
class GetLatestPreviewableEventUseCase @Inject constructor(
|
class GetLatestPreviewableEventUseCase @Inject constructor(
|
||||||
private val sessionHolder: ActiveSessionHolder,
|
private val sessionHolder: ActiveSessionHolder,
|
||||||
private val getRoomLiveVoiceBroadcastsUseCase: GetRoomLiveVoiceBroadcastsUseCase,
|
private val getRoomLiveVoiceBroadcastsUseCase: GetRoomLiveVoiceBroadcastsUseCase,
|
||||||
|
private val vectorPreferences: VectorPreferences,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun execute(roomId: String): TimelineEvent? {
|
fun execute(roomId: String): TimelineEvent? {
|
||||||
val room = sessionHolder.getSafeActiveSession()?.getRoom(roomId) ?: return null
|
val room = sessionHolder.getSafeActiveSession()?.getRoom(roomId) ?: return null
|
||||||
val roomSummary = room.roomSummary() ?: return null
|
val roomSummary = room.roomSummary() ?: return null
|
||||||
return getCallEvent(roomSummary)
|
// FIXME Observing live broadcasts results in many db requests,
|
||||||
?: getLiveVoiceBroadcastEvent(room)
|
// to prevent performances issues, we only enable this mechanism if the voice broadcast flag is enabled
|
||||||
?: getDefaultLatestEvent(room, roomSummary)
|
return if (vectorPreferences.isVoiceBroadcastEnabled()) {
|
||||||
|
getCallEvent(roomSummary)
|
||||||
|
?: getLiveVoiceBroadcastEvent(room)
|
||||||
|
?: getDefaultLatestEvent(room, roomSummary)
|
||||||
|
} else {
|
||||||
|
roomSummary.latestPreviewableEvent
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getCallEvent(roomSummary: RoomSummary): TimelineEvent? {
|
private fun getCallEvent(roomSummary: RoomSummary): TimelineEvent? {
|
||||||
|
@ -23,6 +23,7 @@ import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent
|
|||||||
import im.vector.app.features.voicebroadcast.usecase.GetRoomLiveVoiceBroadcastsUseCase
|
import im.vector.app.features.voicebroadcast.usecase.GetRoomLiveVoiceBroadcastsUseCase
|
||||||
import im.vector.app.test.fakes.FakeActiveSessionHolder
|
import im.vector.app.test.fakes.FakeActiveSessionHolder
|
||||||
import im.vector.app.test.fakes.FakeRoom
|
import im.vector.app.test.fakes.FakeRoom
|
||||||
|
import im.vector.app.test.fakes.FakeVectorPreferences
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import org.amshove.kluent.shouldBe
|
import org.amshove.kluent.shouldBe
|
||||||
@ -46,10 +47,12 @@ internal class GetLatestPreviewableEventUseCaseTest {
|
|||||||
private val fakeSessionHolder = FakeActiveSessionHolder()
|
private val fakeSessionHolder = FakeActiveSessionHolder()
|
||||||
private val fakeRoomSummary = mockk<RoomSummary>()
|
private val fakeRoomSummary = mockk<RoomSummary>()
|
||||||
private val fakeGetRoomLiveVoiceBroadcastsUseCase = mockk<GetRoomLiveVoiceBroadcastsUseCase>()
|
private val fakeGetRoomLiveVoiceBroadcastsUseCase = mockk<GetRoomLiveVoiceBroadcastsUseCase>()
|
||||||
|
private val fakeVectorPreferences = FakeVectorPreferences()
|
||||||
|
|
||||||
private val getLatestPreviewableEventUseCase = GetLatestPreviewableEventUseCase(
|
private val getLatestPreviewableEventUseCase = GetLatestPreviewableEventUseCase(
|
||||||
fakeSessionHolder.instance,
|
fakeSessionHolder.instance,
|
||||||
fakeGetRoomLiveVoiceBroadcastsUseCase,
|
fakeGetRoomLiveVoiceBroadcastsUseCase,
|
||||||
|
fakeVectorPreferences.instance,
|
||||||
)
|
)
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@ -62,6 +65,7 @@ internal class GetLatestPreviewableEventUseCaseTest {
|
|||||||
every { eventId } returns firstArg()
|
every { eventId } returns firstArg()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fakeVectorPreferences.givenIsVoiceBroadcastEnabled(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -85,4 +85,8 @@ class FakeVectorPreferences {
|
|||||||
fun verifySetIpAddressVisibilityInDeviceManagerScreens(isVisible: Boolean) {
|
fun verifySetIpAddressVisibilityInDeviceManagerScreens(isVisible: Boolean) {
|
||||||
verify { instance.setIpAddressVisibilityInDeviceManagerScreens(isVisible) }
|
verify { instance.setIpAddressVisibilityInDeviceManagerScreens(isVisible) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun givenIsVoiceBroadcastEnabled(isEnabled: Boolean) {
|
||||||
|
every { instance.isVoiceBroadcastEnabled() } returns isEnabled
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user