Skip to content

Commit a5d633a

Browse files
committed
Pinned events : minor code quality changes
1 parent 331413e commit a5d633a

File tree

4 files changed

+18
-22
lines changed

4 files changed

+18
-22
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenter.kt

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class PinnedMessagesBannerPresenter @Inject constructor(
5353
@Composable
5454
override fun present(): PinnedMessagesBannerState {
5555
val isFeatureEnabled = isFeatureEnabled()
56-
val knownPinnedMessagesCount by remember {
56+
val expectedPinnedMessagesCount by remember {
5757
room.roomInfoFlow.map { roomInfo -> roomInfo.pinnedEventIds.size }
5858
}.collectAsState(initial = 0)
5959

@@ -77,19 +77,15 @@ class PinnedMessagesBannerPresenter @Inject constructor(
7777
fun handleEvent(event: PinnedMessagesBannerEvents) {
7878
when (event) {
7979
is PinnedMessagesBannerEvents.MoveToNextPinned -> {
80-
if (currentPinnedMessageIndex > 0) {
81-
currentPinnedMessageIndex--
82-
} else {
83-
currentPinnedMessageIndex = pinnedItems.value.size - 1
84-
}
80+
currentPinnedMessageIndex = (currentPinnedMessageIndex - 1).mod(pinnedItems.value.size)
8581
}
8682
}
8783
}
8884

8985
return pinnedMessagesBannerState(
9086
isFeatureEnabled = isFeatureEnabled,
9187
hasTimelineFailed = hasTimelineFailedToLoad,
92-
realPinnedMessagesCount = knownPinnedMessagesCount,
88+
expectedPinnedMessagesCount = expectedPinnedMessagesCount,
9389
pinnedItems = pinnedItems.value,
9490
currentPinnedMessageIndex = currentPinnedMessageIndex,
9591
eventSink = ::handleEvent
@@ -100,7 +96,7 @@ class PinnedMessagesBannerPresenter @Inject constructor(
10096
private fun pinnedMessagesBannerState(
10197
isFeatureEnabled: Boolean,
10298
hasTimelineFailed: Boolean,
103-
realPinnedMessagesCount: Int,
99+
expectedPinnedMessagesCount: Int,
104100
pinnedItems: ImmutableList<PinnedMessagesBannerItem>,
105101
currentPinnedMessageIndex: Int,
106102
eventSink: (PinnedMessagesBannerEvents) -> Unit
@@ -112,11 +108,11 @@ class PinnedMessagesBannerPresenter @Inject constructor(
112108
currentPinnedMessage != null -> PinnedMessagesBannerState.Loaded(
113109
currentPinnedMessage = currentPinnedMessage,
114110
currentPinnedMessageIndex = currentPinnedMessageIndex,
115-
knownPinnedMessagesCount = pinnedItems.size,
111+
loadedPinnedMessagesCount = pinnedItems.size,
116112
eventSink = eventSink
117113
)
118-
realPinnedMessagesCount == 0 -> PinnedMessagesBannerState.Hidden
119-
else -> PinnedMessagesBannerState.Loading(realPinnedMessagesCount = realPinnedMessagesCount)
114+
expectedPinnedMessagesCount == 0 -> PinnedMessagesBannerState.Hidden
115+
else -> PinnedMessagesBannerState.Loading(expectedPinnedMessagesCount = expectedPinnedMessagesCount)
120116
}
121117
}
122118

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerState.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,23 @@ import io.element.android.libraries.ui.strings.CommonStrings
2727
sealed interface PinnedMessagesBannerState {
2828
data object Hidden : PinnedMessagesBannerState
2929
sealed interface Visible : PinnedMessagesBannerState
30-
data class Loading(val realPinnedMessagesCount: Int) : Visible
30+
data class Loading(val expectedPinnedMessagesCount: Int) : Visible
3131
data class Loaded(
3232
val currentPinnedMessage: PinnedMessagesBannerItem,
3333
val currentPinnedMessageIndex: Int,
34-
val knownPinnedMessagesCount: Int,
34+
val loadedPinnedMessagesCount: Int,
3535
val eventSink: (PinnedMessagesBannerEvents) -> Unit
3636
) : Visible
3737

3838
fun pinnedMessagesCount() = when (this) {
3939
is Hidden -> 0
40-
is Loading -> realPinnedMessagesCount
41-
is Loaded -> knownPinnedMessagesCount
40+
is Loading -> expectedPinnedMessagesCount
41+
is Loaded -> loadedPinnedMessagesCount
4242
}
4343

4444
fun currentPinnedMessageIndex() = when (this) {
4545
is Hidden -> 0
46-
is Loading -> realPinnedMessagesCount - 1
46+
is Loading -> expectedPinnedMessagesCount - 1
4747
is Loaded -> currentPinnedMessageIndex
4848
}
4949

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerStateProvider.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ internal fun aHiddenPinnedMessagesBannerState() = PinnedMessagesBannerState.Hidd
4242
internal fun aLoadingPinnedMessagesBannerState(
4343
knownPinnedMessagesCount: Int = 4
4444
) = PinnedMessagesBannerState.Loading(
45-
realPinnedMessagesCount = knownPinnedMessagesCount
45+
expectedPinnedMessagesCount = knownPinnedMessagesCount
4646
)
4747

4848
internal fun aLoadedPinnedMessagesBannerState(
@@ -56,6 +56,6 @@ internal fun aLoadedPinnedMessagesBannerState(
5656
) = PinnedMessagesBannerState.Loaded(
5757
currentPinnedMessage = currentPinnedMessage,
5858
currentPinnedMessageIndex = currentPinnedMessageIndex,
59-
knownPinnedMessagesCount = knownPinnedMessagesCount,
59+
loadedPinnedMessagesCount = knownPinnedMessagesCount,
6060
eventSink = eventSink
6161
)

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenterTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class PinnedMessagesBannerPresenterTest {
9999
skipItems(2)
100100
val loadedState = awaitItem() as PinnedMessagesBannerState.Loaded
101101
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(0)
102-
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(1)
102+
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(1)
103103
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent.toString())
104104
}
105105
}
@@ -139,23 +139,23 @@ class PinnedMessagesBannerPresenterTest {
139139
awaitItem().also { loadedState ->
140140
loadedState as PinnedMessagesBannerState.Loaded
141141
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(1)
142-
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(2)
142+
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(2)
143143
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent2.toString())
144144
loadedState.eventSink(PinnedMessagesBannerEvents.MoveToNextPinned)
145145
}
146146

147147
awaitItem().also { loadedState ->
148148
loadedState as PinnedMessagesBannerState.Loaded
149149
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(0)
150-
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(2)
150+
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(2)
151151
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent1.toString())
152152
loadedState.eventSink(PinnedMessagesBannerEvents.MoveToNextPinned)
153153
}
154154

155155
awaitItem().also { loadedState ->
156156
loadedState as PinnedMessagesBannerState.Loaded
157157
assertThat(loadedState.currentPinnedMessageIndex).isEqualTo(1)
158-
assertThat(loadedState.knownPinnedMessagesCount).isEqualTo(2)
158+
assertThat(loadedState.loadedPinnedMessagesCount).isEqualTo(2)
159159
assertThat(loadedState.currentPinnedMessage.formatted.text).isEqualTo(messageContent2.toString())
160160
}
161161
}

0 commit comments

Comments
 (0)