This commit is contained in:
David Langley
2023-08-28 18:11:17 +01:00
parent 59d7947cc0
commit 3cf73cf536
5 changed files with 13 additions and 13 deletions

View File

@@ -16,9 +16,7 @@
package io.element.android.features.messages.impl
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.emojibasebindings.EmojibaseDatasource
import io.element.android.features.messages.impl.actionlist.anActionListState
import io.element.android.features.messages.impl.messagecomposer.aMessageComposerState
import io.element.android.features.messages.impl.timeline.aTimelineItemList

View File

@@ -57,9 +57,9 @@ fun CustomReactionBottomSheet(
) {
EmojiPicker(
onEmojiSelected = ::onEmojiSelectedDismiss,
modifier = Modifier.fillMaxSize(),
emojiProvider = emojiProvider,
selectedEmojis = state.selectedEmoji,
modifier = Modifier.fillMaxSize(),
)
}
}

View File

@@ -19,6 +19,6 @@ package io.element.android.features.messages.impl.timeline.components.customreac
import io.element.android.features.messages.impl.timeline.model.TimelineItem
sealed interface CustomReactionEvents {
data class ShowCustomReactionSheet(val event: TimelineItem.Event?) : CustomReactionEvents
data class ShowCustomReactionSheet(val event: TimelineItem.Event) : CustomReactionEvents
object DismissCustomReactionSheet : CustomReactionEvents
}

View File

@@ -27,10 +27,8 @@ import io.element.android.emojibasebindings.EmojibaseDatasource
import io.element.android.emojibasebindings.EmojibaseStore
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.matrix.api.core.EventId
import kotlinx.coroutines.launch
import io.element.android.features.messages.impl.timeline.model.TimelineItem
import io.element.android.libraries.architecture.Presenter
import kotlinx.collections.immutable.toImmutableSet
import javax.inject.Inject
@@ -59,11 +57,16 @@ class CustomReactionPresenter @Inject constructor() : Presenter<CustomReactionSt
fun handleEvents(event: CustomReactionEvents) {
when (event) {
is CustomReactionEvents.ShowCustomReactionSheet -> handleShowCustomReactionSheet(event)
is CustomReactionEvents.ShowCustomReactionSheet -> handleShowCustomReactionSheet(event.event)
is CustomReactionEvents.DismissCustomReactionSheet -> handleDismissCustomReactionSheet()
}
}
val selectedEmoji = selectedEvent?.reactionsState?.reactions?.mapNotNull { if(it.isHighlighted) it.key else null }.orEmpty().toImmutableSet()
return CustomReactionState(selectedEventId = selectedEvent?.eventId, emojiProvider = emojiState, selectedEmoji = selectedEmoji, eventSink = ::handleEvents)
return CustomReactionState(
selectedEventId = selectedEvent?.eventId,
emojiProvider = emojiState,
selectedEmoji = selectedEmoji,
eventSink = ::handleEvents
)
}
}

View File

@@ -63,13 +63,13 @@ import kotlinx.coroutines.launch
@Composable
fun EmojiPicker(
onEmojiSelected: (Emoji) -> Unit,
modifier: Modifier = Modifier,
emojiProvider: EmojibaseStore,
selectedEmojis: ImmutableSet<String>,
modifier: Modifier = Modifier,
) {
val coroutineScope = rememberCoroutineScope()
val categories = remember { emojiProvider.categories }
val pagerState = rememberPagerState(pageCount = { emojiProvider.categories.size })
val pagerState = rememberPagerState(pageCount = { EmojibaseCategory.values().size })
Column(modifier) {
TabRow(
selectedTabIndex = pagerState.currentPage,
@@ -91,7 +91,6 @@ fun EmojiPicker(
}
HorizontalPager(
pageCount = EmojibaseCategory.values().size,
state = pagerState,
modifier = Modifier.fillMaxWidth(),
) { index ->
@@ -150,8 +149,8 @@ internal fun EmojiPickerDarkPreview() {
private fun ContentToPreview() {
EmojiPicker(
onEmojiSelected = {},
modifier = Modifier.fillMaxWidth(),
emojiProvider = EmojibaseDatasource().load(LocalContext.current),
selectedEmojis = persistentSetOf("😀", "😄", "😃")
selectedEmojis = persistentSetOf("😀", "😄", "😃"),
modifier = Modifier.fillMaxWidth(),
)
}