Pinned events : minor code quality changes
This commit is contained in:
parent
9334ba6ed5
commit
ad85732427
4 changed files with 18 additions and 22 deletions
|
|
@ -53,7 +53,7 @@ class PinnedMessagesBannerPresenter @Inject constructor(
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): PinnedMessagesBannerState {
|
override fun present(): PinnedMessagesBannerState {
|
||||||
val isFeatureEnabled = isFeatureEnabled()
|
val isFeatureEnabled = isFeatureEnabled()
|
||||||
val knownPinnedMessagesCount by remember {
|
val expectedPinnedMessagesCount by remember {
|
||||||
room.roomInfoFlow.map { roomInfo -> roomInfo.pinnedEventIds.size }
|
room.roomInfoFlow.map { roomInfo -> roomInfo.pinnedEventIds.size }
|
||||||
}.collectAsState(initial = 0)
|
}.collectAsState(initial = 0)
|
||||||
|
|
||||||
|
|
@ -77,11 +77,7 @@ class PinnedMessagesBannerPresenter @Inject constructor(
|
||||||
fun handleEvent(event: PinnedMessagesBannerEvents) {
|
fun handleEvent(event: PinnedMessagesBannerEvents) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is PinnedMessagesBannerEvents.MoveToNextPinned -> {
|
is PinnedMessagesBannerEvents.MoveToNextPinned -> {
|
||||||
if (currentPinnedMessageIndex > 0) {
|
currentPinnedMessageIndex = (currentPinnedMessageIndex - 1).mod(pinnedItems.value.size)
|
||||||
currentPinnedMessageIndex--
|
|
||||||
} else {
|
|
||||||
currentPinnedMessageIndex = pinnedItems.value.size - 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -89,7 +85,7 @@ class PinnedMessagesBannerPresenter @Inject constructor(
|
||||||
return pinnedMessagesBannerState(
|
return pinnedMessagesBannerState(
|
||||||
isFeatureEnabled = isFeatureEnabled,
|
isFeatureEnabled = isFeatureEnabled,
|
||||||
hasTimelineFailed = hasTimelineFailedToLoad,
|
hasTimelineFailed = hasTimelineFailedToLoad,
|
||||||
realPinnedMessagesCount = knownPinnedMessagesCount,
|
expectedPinnedMessagesCount = expectedPinnedMessagesCount,
|
||||||
pinnedItems = pinnedItems.value,
|
pinnedItems = pinnedItems.value,
|
||||||
currentPinnedMessageIndex = currentPinnedMessageIndex,
|
currentPinnedMessageIndex = currentPinnedMessageIndex,
|
||||||
eventSink = ::handleEvent
|
eventSink = ::handleEvent
|
||||||
|
|
@ -100,7 +96,7 @@ class PinnedMessagesBannerPresenter @Inject constructor(
|
||||||
private fun pinnedMessagesBannerState(
|
private fun pinnedMessagesBannerState(
|
||||||
isFeatureEnabled: Boolean,
|
isFeatureEnabled: Boolean,
|
||||||
hasTimelineFailed: Boolean,
|
hasTimelineFailed: Boolean,
|
||||||
realPinnedMessagesCount: Int,
|
expectedPinnedMessagesCount: Int,
|
||||||
pinnedItems: ImmutableList<PinnedMessagesBannerItem>,
|
pinnedItems: ImmutableList<PinnedMessagesBannerItem>,
|
||||||
currentPinnedMessageIndex: Int,
|
currentPinnedMessageIndex: Int,
|
||||||
eventSink: (PinnedMessagesBannerEvents) -> Unit
|
eventSink: (PinnedMessagesBannerEvents) -> Unit
|
||||||
|
|
@ -112,11 +108,11 @@ class PinnedMessagesBannerPresenter @Inject constructor(
|
||||||
currentPinnedMessage != null -> PinnedMessagesBannerState.Loaded(
|
currentPinnedMessage != null -> PinnedMessagesBannerState.Loaded(
|
||||||
currentPinnedMessage = currentPinnedMessage,
|
currentPinnedMessage = currentPinnedMessage,
|
||||||
currentPinnedMessageIndex = currentPinnedMessageIndex,
|
currentPinnedMessageIndex = currentPinnedMessageIndex,
|
||||||
knownPinnedMessagesCount = pinnedItems.size,
|
loadedPinnedMessagesCount = pinnedItems.size,
|
||||||
eventSink = eventSink
|
eventSink = eventSink
|
||||||
)
|
)
|
||||||
realPinnedMessagesCount == 0 -> PinnedMessagesBannerState.Hidden
|
expectedPinnedMessagesCount == 0 -> PinnedMessagesBannerState.Hidden
|
||||||
else -> PinnedMessagesBannerState.Loading(realPinnedMessagesCount = realPinnedMessagesCount)
|
else -> PinnedMessagesBannerState.Loading(expectedPinnedMessagesCount = expectedPinnedMessagesCount)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,23 +27,23 @@ import io.element.android.libraries.ui.strings.CommonStrings
|
||||||
sealed interface PinnedMessagesBannerState {
|
sealed interface PinnedMessagesBannerState {
|
||||||
data object Hidden : PinnedMessagesBannerState
|
data object Hidden : PinnedMessagesBannerState
|
||||||
sealed interface Visible : PinnedMessagesBannerState
|
sealed interface Visible : PinnedMessagesBannerState
|
||||||
data class Loading(val realPinnedMessagesCount: Int) : Visible
|
data class Loading(val expectedPinnedMessagesCount: Int) : Visible
|
||||||
data class Loaded(
|
data class Loaded(
|
||||||
val currentPinnedMessage: PinnedMessagesBannerItem,
|
val currentPinnedMessage: PinnedMessagesBannerItem,
|
||||||
val currentPinnedMessageIndex: Int,
|
val currentPinnedMessageIndex: Int,
|
||||||
val knownPinnedMessagesCount: Int,
|
val loadedPinnedMessagesCount: Int,
|
||||||
val eventSink: (PinnedMessagesBannerEvents) -> Unit
|
val eventSink: (PinnedMessagesBannerEvents) -> Unit
|
||||||
) : Visible
|
) : Visible
|
||||||
|
|
||||||
fun pinnedMessagesCount() = when (this) {
|
fun pinnedMessagesCount() = when (this) {
|
||||||
is Hidden -> 0
|
is Hidden -> 0
|
||||||
is Loading -> realPinnedMessagesCount
|
is Loading -> expectedPinnedMessagesCount
|
||||||
is Loaded -> knownPinnedMessagesCount
|
is Loaded -> loadedPinnedMessagesCount
|
||||||
}
|
}
|
||||||
|
|
||||||
fun currentPinnedMessageIndex() = when (this) {
|
fun currentPinnedMessageIndex() = when (this) {
|
||||||
is Hidden -> 0
|
is Hidden -> 0
|
||||||
is Loading -> realPinnedMessagesCount - 1
|
is Loading -> expectedPinnedMessagesCount - 1
|
||||||
is Loaded -> currentPinnedMessageIndex
|
is Loaded -> currentPinnedMessageIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ internal fun aHiddenPinnedMessagesBannerState() = PinnedMessagesBannerState.Hidd
|
||||||
internal fun aLoadingPinnedMessagesBannerState(
|
internal fun aLoadingPinnedMessagesBannerState(
|
||||||
knownPinnedMessagesCount: Int = 4
|
knownPinnedMessagesCount: Int = 4
|
||||||
) = PinnedMessagesBannerState.Loading(
|
) = PinnedMessagesBannerState.Loading(
|
||||||
realPinnedMessagesCount = knownPinnedMessagesCount
|
expectedPinnedMessagesCount = knownPinnedMessagesCount
|
||||||
)
|
)
|
||||||
|
|
||||||
internal fun aLoadedPinnedMessagesBannerState(
|
internal fun aLoadedPinnedMessagesBannerState(
|
||||||
|
|
@ -56,6 +56,6 @@ internal fun aLoadedPinnedMessagesBannerState(
|
||||||
) = PinnedMessagesBannerState.Loaded(
|
) = PinnedMessagesBannerState.Loaded(
|
||||||
currentPinnedMessage = currentPinnedMessage,
|
currentPinnedMessage = currentPinnedMessage,
|
||||||
currentPinnedMessageIndex = currentPinnedMessageIndex,
|
currentPinnedMessageIndex = currentPinnedMessageIndex,
|
||||||
knownPinnedMessagesCount = knownPinnedMessagesCount,
|
loadedPinnedMessagesCount = knownPinnedMessagesCount,
|
||||||
eventSink = eventSink
|
eventSink = eventSink
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ class PinnedMessagesBannerPresenterTest {
|
||||||
skipItems(2)
|
skipItems(2)
|
||||||
val loadedState = awaitItem() as PinnedMessagesBannerState.Loaded
|
val loadedState = awaitItem() as PinnedMessagesBannerState.Loaded
|
||||||
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(0)
|
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(0)
|
||||||
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(1)
|
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(1)
|
||||||
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent.toString())
|
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -139,7 +139,7 @@ class PinnedMessagesBannerPresenterTest {
|
||||||
awaitItem().also { loadedState ->
|
awaitItem().also { loadedState ->
|
||||||
loadedState as PinnedMessagesBannerState.Loaded
|
loadedState as PinnedMessagesBannerState.Loaded
|
||||||
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(1)
|
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(1)
|
||||||
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(2)
|
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(2)
|
||||||
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent2.toString())
|
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent2.toString())
|
||||||
loadedState.eventSink(PinnedMessagesBannerEvents.MoveToNextPinned)
|
loadedState.eventSink(PinnedMessagesBannerEvents.MoveToNextPinned)
|
||||||
}
|
}
|
||||||
|
|
@ -147,7 +147,7 @@ class PinnedMessagesBannerPresenterTest {
|
||||||
awaitItem().also { loadedState ->
|
awaitItem().also { loadedState ->
|
||||||
loadedState as PinnedMessagesBannerState.Loaded
|
loadedState as PinnedMessagesBannerState.Loaded
|
||||||
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(0)
|
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(0)
|
||||||
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(2)
|
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(2)
|
||||||
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent1.toString())
|
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent1.toString())
|
||||||
loadedState.eventSink(PinnedMessagesBannerEvents.MoveToNextPinned)
|
loadedState.eventSink(PinnedMessagesBannerEvents.MoveToNextPinned)
|
||||||
}
|
}
|
||||||
|
|
@ -155,7 +155,7 @@ class PinnedMessagesBannerPresenterTest {
|
||||||
awaitItem().also { loadedState ->
|
awaitItem().also { loadedState ->
|
||||||
loadedState as PinnedMessagesBannerState.Loaded
|
loadedState as PinnedMessagesBannerState.Loaded
|
||||||
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(1)
|
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(1)
|
||||||
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(2)
|
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(2)
|
||||||
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent2.toString())
|
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent2.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue