@@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
1414import androidx.compose.foundation.layout.height
1515import androidx.compose.foundation.layout.padding
1616import androidx.compose.foundation.layout.wrapContentHeight
17+ import androidx.compose.foundation.layout.wrapContentSize
1718import androidx.compose.foundation.layout.wrapContentWidth
1819import androidx.compose.foundation.shape.RoundedCornerShape
1920import androidx.compose.material.Icon
@@ -29,13 +30,16 @@ import androidx.compose.ui.Modifier
2930import androidx.compose.ui.graphics.RectangleShape
3031import androidx.compose.ui.unit.dp
3132import io.getstream.chat.android.common.state.MessageMode.MessageThread
33+ import io.getstream.chat.android.compose.state.messages.SelectedMessageOptionsState
34+ import io.getstream.chat.android.compose.state.messages.SelectedMessageReactionsState
3235import io.getstream.chat.android.compose.state.messages.composer.MessageComposerState
36+ import io.getstream.chat.android.compose.ui.components.composer.MessageInput
37+ import io.getstream.chat.android.compose.ui.components.messageoptions.defaultMessageOptionsState
38+ import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedMessageMenu
39+ import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedReactionsMenu
3340import io.getstream.chat.android.compose.ui.messages.attachments.AttachmentsPicker
3441import io.getstream.chat.android.compose.ui.messages.composer.MessageComposer
35- import io.getstream.chat.android.compose.ui.messages.composer.components.MessageInput
3642import io.getstream.chat.android.compose.ui.messages.list.MessageList
37- import io.getstream.chat.android.compose.ui.messages.overlay.SelectedMessageOverlay
38- import io.getstream.chat.android.compose.ui.messages.overlay.defaultMessageOptionsState
3943import io.getstream.chat.android.compose.ui.theme.ChatTheme
4044import io.getstream.chat.android.compose.ui.theme.StreamShapes
4145import io.getstream.chat.android.compose.viewmodel.messages.AttachmentsPickerViewModel
@@ -90,7 +94,7 @@ class MessagesActivity4 : AppCompatActivity() {
9094 fun MyCustomUi () {
9195 // 1 - Load the data
9296 val isShowingAttachments = attachmentsPickerViewModel.isShowingAttachments
93- val selectedMessage = listViewModel.currentMessagesState.selectedMessage
97+ val selectedMessageState = listViewModel.currentMessagesState.selectedMessageState
9498 val user by listViewModel.user.collectAsState()
9599
96100 Box (modifier = Modifier .fillMaxSize()) { // 2 - Define the root
@@ -132,21 +136,43 @@ class MessagesActivity4 : AppCompatActivity() {
132136 }
133137
134138 // 6 - Show the overlay if we've selected a message
135- if (selectedMessage != null ) {
136- SelectedMessageOverlay (
137- messageOptions = defaultMessageOptionsState(
138- selectedMessage,
139- user,
140- listViewModel.isInThread
141- ),
142- message = selectedMessage,
143- onMessageAction = { action ->
144- composerViewModel.performMessageAction(action)
145- listViewModel.performMessageAction(action)
146- },
147- onDismiss = { listViewModel.removeOverlay() },
148- currentUser = user
149- )
139+ if (selectedMessageState != null ) {
140+ val selectedMessage = selectedMessageState.message
141+ if (selectedMessageState is SelectedMessageOptionsState ) {
142+ SelectedMessageMenu (
143+ modifier = Modifier
144+ .align(Alignment .Center )
145+ .padding(horizontal = 20 .dp)
146+ .wrapContentSize(),
147+ shape = ChatTheme .shapes.attachment,
148+ messageOptions = defaultMessageOptionsState(
149+ selectedMessage,
150+ user,
151+ listViewModel.isInThread
152+ ),
153+ message = selectedMessage,
154+ onMessageAction = { action ->
155+ composerViewModel.performMessageAction(action)
156+ listViewModel.performMessageAction(action)
157+ },
158+ onDismiss = { listViewModel.removeOverlay() },
159+ )
160+ } else if (selectedMessageState is SelectedMessageReactionsState ) {
161+ SelectedReactionsMenu (
162+ modifier = Modifier
163+ .align(Alignment .Center )
164+ .padding(horizontal = 20 .dp)
165+ .wrapContentSize(),
166+ shape = ChatTheme .shapes.attachment,
167+ message = selectedMessage,
168+ currentUser = user,
169+ onMessageAction = { action ->
170+ composerViewModel.performMessageAction(action)
171+ listViewModel.performMessageAction(action)
172+ },
173+ onDismiss = { listViewModel.removeOverlay() }
174+ )
175+ }
150176 }
151177 }
152178 }
0 commit comments