1818
1919package io.getstream.video.android.ui.call
2020
21- import androidx.compose.foundation.layout.Box
21+ import androidx.compose.foundation.background
22+ import androidx.compose.foundation.clickable
23+ import androidx.compose.foundation.layout.Column
2224import androidx.compose.foundation.layout.fillMaxWidth
2325import androidx.compose.foundation.layout.height
26+ import androidx.compose.foundation.layout.padding
2427import androidx.compose.foundation.shape.RoundedCornerShape
2528import androidx.compose.material.ExperimentalMaterialApi
29+ import androidx.compose.material.Icon
2630import androidx.compose.material.ModalBottomSheetLayout
2731import androidx.compose.material.ModalBottomSheetState
2832import androidx.compose.runtime.Composable
2933import androidx.compose.runtime.LaunchedEffect
34+ import androidx.compose.runtime.remember
35+ import androidx.compose.ui.Alignment
3036import androidx.compose.ui.Modifier
3137import androidx.compose.ui.platform.LocalContext
38+ import androidx.compose.ui.res.painterResource
3239import androidx.compose.ui.unit.dp
3340import androidx.lifecycle.viewmodel.compose.viewModel
3441import io.getstream.chat.android.compose.ui.messages.MessagesScreen
3542import io.getstream.chat.android.compose.ui.theme.ChatTheme
3643import io.getstream.chat.android.compose.viewmodel.messages.MessageListViewModel
3744import io.getstream.chat.android.compose.viewmodel.messages.MessagesViewModelFactory
3845import io.getstream.video.android.core.Call
46+ import io.getstream.video.android.ui.common.R
3947
4048@Composable
4149internal fun ChatDialog (
@@ -46,13 +54,14 @@ internal fun ChatDialog(
4654 onDismissed : () -> Unit ,
4755) {
4856 val context = LocalContext .current
49- val viewModelFactory = MessagesViewModelFactory (
50- context = context,
51- channelId = " videocall:${call.id} " ,
52- )
53-
57+ val viewModelFactory = remember {
58+ MessagesViewModelFactory (
59+ context = context,
60+ channelId = " videocall:${call.id} " ,
61+ )
62+ }
5463 val listViewModel = viewModel(MessageListViewModel ::class .java, factory = viewModelFactory)
55- val unreadCount: Int = listViewModel.currentMessagesState.unreadCount
64+ val unreadCount = listViewModel.currentMessagesState.unreadCount
5665
5766 LaunchedEffect (key1 = unreadCount) {
5867 updateUnreadCount.invoke(unreadCount)
@@ -64,16 +73,30 @@ internal fun ChatDialog(
6473 sheetShape = RoundedCornerShape (topStart = 16 .dp, topEnd = 16 .dp),
6574 sheetState = state,
6675 sheetContent = {
67- Box (
68- modifier = Modifier
69- .fillMaxWidth()
70- .height(500 .dp),
71- ) {
72- MessagesScreen (
73- viewModelFactory = viewModelFactory,
74- onBackPressed = { onDismissed.invoke() },
75- onHeaderActionClick = { onDismissed.invoke() },
76- )
76+ if (state.isVisible) {
77+ Column (
78+ modifier = Modifier
79+ .background(ChatTheme .colors.appBackground)
80+ .fillMaxWidth()
81+ .height(500 .dp),
82+ ) {
83+ Icon (
84+ modifier = Modifier
85+ .align(Alignment .End )
86+ .padding(16 .dp)
87+ .clickable { onDismissed.invoke() },
88+ tint = ChatTheme .colors.textHighEmphasis,
89+ painter = painterResource(id = R .drawable.stream_video_ic_close),
90+ contentDescription = null ,
91+ )
92+
93+ MessagesScreen (
94+ showHeader = false ,
95+ viewModelFactory = viewModelFactory,
96+ onBackPressed = { onDismissed.invoke() },
97+ onHeaderActionClick = { onDismissed.invoke() },
98+ )
99+ }
77100 }
78101 },
79102 content = content,
0 commit comments